解读TCP/UDP数据包(一):IP数据包结构

1、图

IP数据包由首部和数据组成

每行4个字节(32位)

其中首部最少20个字节(5行),选项部分是可选的;【待补充选项长度】

解读TCP/UDP数据包(一):IP数据包结构_第1张图片

2、首部固定部分

1、  第一行:IP版本号4位,首部长度4位,服务类型8位,总长度16位

IP版本号:

        IPv4固定值为4

首部长度:

        指明首部共有多少行(每行4个字节,32位),则IP首部的最大长度为(2^4-1)*4=60字节;

服务类型:

        前三个BIT:优先权,现已忽略;

        4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用,均为0表示一般服务;最后1BIT未用;

总长度:

        包括IP首部在内的以字节为单位的IP数据报总长度;

2、  第二行:标识16位,标志3位,片偏移13位

标识:

        包唯一标识,用于分片和重组【补充分片重组信息】

标志位:

        第一位为零,第二位DF位(不要分片),第三位MF位(还有分片)

片偏移:

        用于分片和重组

3、  第三行:生存时间8位,协议8位,首部校验和16位

生存时间:

        TTL(每转发一次路由减一,最大为255跳);

协议:

        0x11为UDP,0x6为TCP【补充常用协议值】

首部校验和:

        16位的首部(包括选项)校验和(简单的16位反码加法)【补充具体算法】

4、  第四、五行:源IP地址32位(网络序),目的IP地址32位

3、首部选项部分

【待补充】

4、数据

IP首部结束之后的部分

 

------------------------------------

转载请注明出处,谢谢。

小方的专栏

你可能感兴趣的:(网络编程)