IP协议和网络传输中的封装与分用

       使用tcp/ip五层模型:

          IP协议和网络传输中的封装与分用_第1张图片

1 封装

       当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。而再这个过程中,每一层都会对要发送的数据加一些首部信息。整个过程如下图。

IP协议和网络传输中的封装与分用_第2张图片

如图可以看出,每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据 ,称为本层的协议数据单元,即PDU。

应用层数据传输层添加TCP报头后得到的PDU被称为 Segment(数据段 ),图示为TCP段

传输层的数据(TCP段)传给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包), 图示为IP数据包

网络层数据报(IP数据包)被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),图示为以太网帧。

最后,帧被转换为比特,通过网络介质传输。

这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装

        假设主机A发送数据给主机B,一般流程是这样:A应用层数据-》A的传输层-》A的网络层-》A的链路层 -》 网络上找到B,并发送给B的链路层 -》 B的网络层 -》 B的传输层 -》 B的应用层。如下图:

IP协议和网络传输中的封装与分用_第3张图片

  • 封装(Encapsulation):从上到下。将数据打上一定的头部。应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,直到最后到物理层数据转换成比特流,送入网络。在这个过程中,每一层都会对要发送的数据加一些首部信息。
  • 分用(解封(Demultiplexing)):从下到上,将数据头部进行拆开。从下网上时再逐一将对应层的头部去掉,一层一层剥离。直到应用层。

2 数据格式

       需要注意的是,这里所说的以太网帧,与我们常说的以太网是不一样的。下面我们就来介绍每一层数据的首部信息内容。

       首先我们知道世界上有个协会叫作IEEE,即电子工程师协会,里面有个分会,叫作IEEE802委员会,是专门来制定局域网各种标准的。而802下面还有个分部,叫作802.3.就是我们经常提到的 IEEE802.3,这个部门制定的规范叫以太网规范,这个以太网规范中就定义了上面提到的“以太网首部”,这个以太网规范,实际只定义了数据链路层中的MAC层和物理层规范。(注意数据链路层包括MAC子层和LLC子层两个子层,而LLC子层是在IEEE802.2中规范的)。

2.1 以太网帧格式

        以太网常用帧格式有两种,一种是Ethernet II,另一种是IEEE 802.3 格式。这两种格式区别是:Ethernet II中包含一个Type字 段,。而IEEE 802.3格式中,此位置是长度字段。 其中Type字段描述了,以太网首部 后面所跟数据包的类型,例如Type为0x8000时为IP协议包,Type为8060时,后面为ARP协议包。以太网中多数数据帧使用的是Ethernet II帧格式

     a、Ethernet II帧格式

    b、IEEE 802.3 帧格式

     前导码:Ethernet II是由8个8‘b10101010构成,IEEE802.3由7个8‘b10101010+1个字节SFD..

     目的地址:目的设备的MAC物理地址。

     源 地址 :发送设备的MAC物理地址。

     类型(Ethernet II):以太网首部 后面所跟数据包的类型,例如Type为0x8000时为IP协议包,Type为8060时,后面为ARP协议包。

     长度(IEEE802.3):当长度小于1500时,说明该帧为IEEE802.3帧格式,大于1500时,说明该帧为Ethernet II帧格式。

     数据:数据长度最小为46字节,不足46字节时,填充至46字节。因为最小帧长度是64字节,所以,46+6+6+2+4=64。(不算前导码)

     FCS: 就是CRC校验值

     以太网首部就是:

2.2 IP数据包格式

    IP数据包格式如下图。IP首部,如图也表示出来了。

IP协议和网络传输中的封装与分用_第4张图片

2.3 TCP数据段格式

        如图所示为TCP首部和TCP数据段格式

IP协议和网络传输中的封装与分用_第5张图片

2.4 UDP数据段格式--传输层的

IP协议和网络传输中的封装与分用_第6张图片    

    其中UDP首部如上图所示。

5、ARP数据包格式(摘自:来源: http://blog.sina.com.cn/s/blog_9c5d29f70101dwgk.html)

IP协议和网络传输中的封装与分用_第7张图片

(1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;

(2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);

(3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

(4)操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

(5)发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;

(6)发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;

(7)发送方IP(0-1字节):源主机硬件地址的前2个字节;

(8)发送方IP(2-3字节):源主机硬件地址的后2个字节;

(9)目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;

(10)目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;

(11)目的IP(0-3字节):目的主机的IP地址。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(计算机基础)