TCP/IP 报文头详解

一、IP报文头:

IP报文头的长度一般在20到60个字节之间,报文头前20个字节是固定的,后面的可变。

版本:占4bit,表示IP协议的版本号,一般为IPV4。

首部长度:占4bit,表示IP报文头的长度。20-60个字节。

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

总长度:占16bit,表示报文总长度。一个IP报文的最大长度为65535个字节。

标识:占16bit,标记当前分片为第几个分片。

标志:占3bit,表示该报文是否为分片,后续是否还有分片。

片偏移:占13bit,表示当前分片在原报文中的相对位置。

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

协议:占8bit,表示上层使用的协议,可能是TCP、UDP、ICMP。

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

源IP地址:占32bit,4个字节,每个字节为0~255之间的整数。

目IP地址:占32bit。

 

二、TCP报文头:

源目端口:各占16bit。

序列号:占32bit,TCP通信过程中,通过序列号保证传输过程中数据的有序性。

确认号:占32bit,用于响应TCP报文段,给收到的TCP报文段的序号加1。

头部长度:占4bit,表示TCP报文首部的长度。

保留:占6bit,今后使用。

标志:占6bit,URG(紧急指针是否有效)ACK(表示确认号是否有效)PSH(提示接收端应用程序应该立即从TCP接收缓冲区读走数据)RST(表示要求对方重新建立连接)SYN(表示请求建立一个连接)FIN(表示通知对方本端要关闭连接)

窗口大小:占16bit,用于TCP流量控制,告诉对端TCP缓冲区还能容纳多少字节。

校验和:占16bit,发送端填充,接收端对报文段执行CRC算法以检验TCP报文段在传输中是否损坏。

紧急指针:占16bit,在URG标志设置了时才有效。与序号字段的值相加后表示最后一个紧急数据的下一字节的序号,可以说这个字段是紧急指针相对当前序号的偏移。

选项:长度不定,但长度必须以是32bits的整数倍。常见的选项包括MSS、SACK、Timestamp等等。

 

 

转载:

https://www.cnblogs.com/xsiedu/articles/1741584.html

https://www.cnblogs.com/fantastic123/p/8968132.html

展开阅读全文

没有更多推荐了,返回首页