【HCIA】IP、TCP、UDP报文格式

一、IP报文格式

                            

     IP字段解释:

                  字段

  长度

                                        含义

 

     Version(版本)

 

4比特

表示版本信息。

*4:表示IPv4

*6:表示IPv6

 

    IHL(头部长度)

 

4比特

表示此刻IP报文的大小。如果不带Option字段,则为20字节(B),最长可为60字节。该值限制了记录路由选项。以4字节为一个单位。

 

    Type of Service

      (服务类型)

 

8比特

给IP报文做优先级处理。通过调整这八位中某些二进制位告诉设备转发数据时是按顺序转发还是优先转发。(默认转发规则为FIFO,先进先出)只有在有QoS差分服务要求时这个字段才起作用。

 

  Total Length(总长度)

 

16比特

整个IP数据报的长度,包括IP报头和后面TCP/UDP以及数据之和。单位为字节,最大长度216 - 1=65535,总长度不超过最大传输单元MTU。

    Identification(标识)

16比特

主机每发送一个报文都会加1,类似于计数。什么时候该分片。分片重组时会用到该字段。

 

 

      Flags(标志位)

 

 

3比特

*R:保留位。暂时无意义,必须为0。

*DF(Don’t Fragment):能否分片位。0表示可以分片;1表示不能分片。若Identification计数此时需要分片,但因为DF=1不能分片,设备将会丢包。

*MF(more Fragment):表示是否该报文为最后一片。0表示最后一片;1表示后面还有。若MF=1,DF一定为0,MF=0,DF可为0/1。

     Fragment Offset

        (片偏移)

12比特

分片重组时会用到该字段。表示较长的分组在分片后,某片在原组中的相对位置。以8个字节为偏移单位。

 

 

Time to Live(生存时间)

 

 

8比特

可经过的最多路由数。表示数据包在网络中可以通过的路由器的最大值。范围为0~255(28)数据包每经过一台路由器TTL值减1,直到为0,数据包死亡,路由器将丢弃该数据包。(若一个路由器收到一个数据包的TTL=1,路由器将会丢弃数据包。因为路由器处理完数据后TTL减1后为0,此时数据包不会发出了会直接丢弃)

 

 

 

 

     Protocol (协议)

 

 

 

 

8比特

协议:下一层协议。指出数据包携带的数据使用的何种协议,以便目的主机的IP层将数据上交给哪个进程处理。

常见值:

 * 0:保留Reserved

 * 1:ICMP

 * 6:TCP

 * 17:UDP

 * GRE:47

 * 58:IPv6-ICMP

 * OSPF:89

 * VRRP:112

   Header Checksum

   (首部校验和)

 

16比特

检验数据的完整性。(hash哈希算法:MD5,SHA等)只校验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。

     Source Address

      (源IP地址)

32比特

源IP地址

   Destination Address

      (目标IP地址)

32比特

目标IP地址

 

   Options(选项字段)

 

 可变

用来支持排错,测试以及安全等措施,内容丰富。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。

  Padding(填充字段)

 可变   

全填0。

 

 

二、TCP报文格式

                                                         

     TCP字段解释:

                   字段

   长度

                             含义

     Source Port(源端口)

16比特

标识那个应用程序发送。

         Destination Port

         (目标端口)

16比特

标识哪个应用程序接收。

 

        Sequence Number

            (序列号)

 

32比特

TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。

 

   Acknowledgment Number

             (确认号)

 

32比特

是期望收到对方的下一个报文段的数据的第一个字节的序号,即上次已成功接收到的数据字节号加1。只有ACK标识为1时,此字段有效。

 

     Data Offset(数据偏移)

 

4比特

即首部长度,指出TCP报文段的数据起始处距离TCP报文的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。

         Reserved(保留)

6比特

必须填0。

   URG(紧急指针有效标识)

1比特

它告诉系统此报文段中有紧急数据,应尽快传送。(相当于高优先机的数据)

    ACK(确认序号有效标识)

1比特

只有ACK=1时确认号字段才有效。当ACK=0时,确认号无效。

 

                  PSH

 

1比特

标识接收方应该尽快将这个报文段交给应用层。接收到PSH=1的TCP报文段,应尽快交付给应用进程,而不再等待整个缓存都填满了后再上交付。

 

       RST(重建连接标识)

 

1比特

当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,就算被修复好,也无法继续连接,只能重新建立连接。

      SYN(同步序号标识)

1比特

用来发起一个连接。SYN=1标识这是一个连接请求或连接接受请求。

      FIN(发端完成发送任务标识)

1比特

用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。

 

            Window(窗口)

 

16比特

TCP的流量控制。窗口起始于确认序号字段指明的值,这个只是接收端期望接收的字节数。窗口最大为216=65535字节。

 

      Checksum(校验字段)

 

16比特

包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

 

 

           Urgent Pointer

          (紧急指针)

 

 

16比特

只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)

 

 

 

 

          Options(选项字段)

 

 

 

 

可变

TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。

新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。

* 窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。

* 时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。

* 选项确认选项。

 

         Padding(填充字段)

可变

用来补位,使整个首部长度是4字节的整数倍。

                 data

可变

TCP负载。

 

 

三、UDP报文格式

                                                            

        UDP字段解释:

         字段

     长度

                            含义

    Source Port

   (源端口)

   2字节

标识哪个应用程序发送。(发送进程)

Destination Port

  (目标端口)

   2字节

标识哪个应用程序接收。(接收进程)

 Length(长度)

   2字节

UDP首部加上UDP数据的字节数,最小为8。

   

   Checksum

  (校验和)

 

   2字节

覆盖UDP首部和UDP数据。是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。是可选的。

  data octets

     变长

UDP负载,可选的。

 

猜你喜欢

转载自blog.csdn.net/trichloromethane/article/details/107722001
今日推荐