通俗易懂网络协议(IP)
副标题[/!--empirenews.page--]
之前写过一篇《通俗易懂TCP/IP(概述)》,广受欢迎和好评,有网友催更,便抽空续写IP章节,回应粉丝期待。 TCP/IP网络模型 TCP/IP网络模型分为4层,自下而上分布为链路层(又叫网络接口层)、网络层、传输层、应用层。
分层&协议对照 OSI七层网络模型和TCP/IP四层网络模型的对应关系如下图,对应层的常用协议也列于表中。 分层的目标是隔离,通过分层实现:下层对上层透明,而上层利用下层提供的能力。 分层的另一个优点是协议复用,这种复用允许多种协议共存于同一基础设施之中,复用可以发生在不同层,并在每层都有不同类型的标识符区分,用于确定信息属于哪个协议。 比如在链路层的数据帧(Frame)有一个协议标识符字段,用来标识链路层帧携带的协议是IP还是ARP;又比如在网络层的IP数据报头部有一个8位协议字段,标识该IP数据报来自于TCP、还是UDP、亦或是ICMP、IGMP... 封装 数据在发送端从上到下经过TCP/IP协议栈,遵循应用层->TCP/UDP->IP->链路层的顺序。 当某层的一个协议数据单元(PDU)对象转换为由底层携带的数据格式表示,这个过程称为在相邻低层的封装,即上层被封装对象作为不透明数据充当底层的Payload部分,封装是层层包裹的过程。 每层都有自己的消息对象(PDU)的概念。
封装的本质是将来自上层的数据看成不透明、无须解释的信息,经过本层的处理,在上层PDU的前面加上本层协议的头部,有些协议是增加尾部(链路层),头部用于在发送时复用数据,接收方基于各层封装过程中增加头部中的分解标识符执行分解。 具体到TCP传输数据而言,发送端的数据要经过三次封装。
分用 数据到达接收端(是目的机器),会从下到上经过TCP/IP协议栈,遵循链路层->IP->TCP/UDP->应用层的顺序。 接收端的数据还原也需要经历三次解封。
封装发生在发送方,拆封(还原)发生在接收方。 消息边界 应用层将协议携带的数据写入消息,消息边界是两次写入操作之间的位置或字节偏移量。 保留消息边界的协议(UDP)在接收方能获得发送方的消息边界,而不保留消息边界的协议(TCP)在接收方将不能获得发送方的消息边界。 比如发送端通过UDP协议先后发送2个大小分别为100、200字节的消息,接收端通过UDP协议接收数据,将分2次分别接收到100、200字节的消息,但不保证接收100、200消息的先后顺序。 而TCP是数据流协议,如果发送端通过TCP协议先后发送2个大小为100和200字节的消息,接收端会收到300字节数据,但每次接收返回的不一定是100、200字节消息,接收端丢失了发送端的消息边界。 网络地址 IP地址用于IP层,IPv4的IP地址是32位整数,最多可以表示40多亿个IP地址,按8位一字节,则分为4字节,每个字节是一个0~255的无符号整数,所以可以表示为“abc.def.ghi.jkl”的点分十进制格式,也可以表示为32位无符号整数。 点分十进制和无符号32位无符号整数可以很容易换算。 IPv4地址空间分成五大类,A、B、C类用于Internet单播,D类地址供组播使用,E类地址保留。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |