报文头格式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TCP报文头:(一般20-60字节)

32位端口号:

源端口和目的端口各占16位,2的16次方等于65536,看端口的命令:netstat。

32位序号:

也称为顺序号(Sequence Number),简写为SEQ,

32位确认序号:

也称为应答号(Acknowledgment Number),简写为ACK。在握手阶段,确认序号将发送方的序号加1作为回答。

4位首部长度:

这个字段占4位,它的单位时32位(4个字节)。本例值为7,TCP的头长度为28字节,等于正常的长度2 0字节加上可选项8个字节。,TCP的头长度最长可为60字节(二进制1111换算为十进制为15,15*4字节=60字节)。

6位标志字段:

ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。

SYN 置1时用来发起一个连接。

FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。

URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。注:一般不使用。

PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。注:一般不使用。

16位检验和:

检验和覆盖了整个的TCP报文段: TCP首部和TCP数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。

16位紧急指针:注:一般不使用。

只有当U R G标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

可选与变长选项:通常为空,可根据首部长度推算。用于发送方与接收方协商最大报文段长度(MSS),或在高速网络环境下作窗口调节因子时使用。首部字段还定义了一个时间戳选项。

最常见的可选字段是最长报文大小,又称为MSS (Maximum Segment Size)。每个连接方通常都在握手的第一步中指明这个选项。它指明本端所能接收的最大长度的报文段。1460是以太网默认的大小。

UDP报文头(8字节)

2字节源端口字段

源端口是一个大于1023的16位数字,由基于UDP应用程序的用户进程随机选择。

2字节目的端口字段

2字节长度字段

指明了包括首部在内的UDP报文段长度。UDP长字段的值是UDP报文头的长度(8字节)与UDP所携带数据长度的总和。确定UDP长字段值的快速方法是将IP长字段的值减去20个字节。因为IP报文头的长度始终是20字节,所以结果就总是取决于UDP报文头及UDP数据的长度。例如,如果IP所带数据为1480字节,则可以知道UDP所带的数据是1452字节(1480-20(IP)-8(UDP报头)=UDP数据)。

2字节校验和字段

是指整个UDP报文头和UDP所带的数据的校验和(也包括伪报文头)。伪报文头不包括在真正的UDP报文头中,但是它可以保证UDP数据被正确的主机收到了。因在校验和中加入了伪头标,故ICMP除能防止单纯数据差错之外,对IP分组也具有保护作用。也就是说,在系统安装的协议中保证接口的正常工作。例如,IP 错误地将UDP报文送到ICMP中,因UDP和ICMP使用了相同的校验和算法,对报文内容校验不能防止此报文的误发送。伪头标也校验IP下一个头标值,该值对ICMP和UDP是不同的。结果,利用校验就能保证IP将报文送往预定的上层协议(也就是说,由于UDP和ICMP中伪头标的下个头标值是不同的,即使报文相同,其校验和也不一样,如UDP报文错误地进入ICMP或ICMP报文进入UDP,就会出现校验和差错。

IP报文头(20字节-60字节)

版本:占4位(bit),指IP协议的版本号。IPV4, IPV6。在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。

首部长度:占4位(bit),指IP报文头的长度。最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。

服务类型:占8位(bit),用来获得更好的服务。其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。对应位为1即有相应要求,为0则不要求。

总长度:16位(bit),指报文的总长度,所以一个IP报文的的最大长度为65535个字节。

标识(identification):唯一的标识主机发送的每一个分数据。

标志(flag):该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片),后面是否还有分片(是否是最后一个分片)。

片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。

生存时间:TTL(Time to Live)。该字段表明当前报文还能生存多久。每经过1ms或者一个网关,TTL的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃。使用过Ping命令的用户应该有印象,在windows中输入ping命令,在返回的结果中即有TTL的数值。

协议:该字段指出在上层(网络7层结构或TCP/IP的传输层)使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。

首部校验和:用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。

源IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。

目的IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。

相关文档
最新文档