解析一个简单的IP数据报

192.168.3.171向192.168.3.185:12345发送了字符串abc。
下面是IP数据报内容:
4500 002c 7eff 4000 4006 3318 c0a8 03ab
c0a8 03b9 3dff 3039 2331 ed16 381d f893
5018 001d b358 0000 6162 630a 0000

IP首部:
4:版本号,IPv4
5:IP首部长度,5*4字节=20字节(所以4500 002c 7eff 4000 4006 3318 c0a8 03ab c0a8 03b9这20字节就是IP首部)
00:分区服务
002c:总长度 2c=44字节(最后的0000貌似不算在内)
7eff:标识(数据报过长会被分片,同一个数据报的分片标识相同)
4000:这16位要转化为二进制来讲(0100 0000 0000 0000)
——–前三位010:
—————-最高位0:保留
—————-中间位1:1不能分片,0允许分片
—————-最低位0:1后面还有分片,0这是最后一片
——–后十三为0 0000 0000 0000:片偏移(分片的情况下,该片在原分组中的相对位置)
40:生存时间
06:协议
3318:首部检验和
c0a8 03ab:原地址c0(192),a8(168),03(3),ab(171)
c0a8 03b9:目的地址

TCP首部:
3dff:源端口15871
3039:目的端口12345
2331 ed16:序号,包的序号,用来解决网络包乱序的问题
381d f893:确认号,用于确认收到,用来解决不丢包的问题
5:TCP首部长度,5*4字节=20字节(所以3dff 3039 2331 ed16 381d f893 5018 001d b358 0000这20字节就是TCP首部)
018:这12位要转化为二进制来讲(0000 0001 1000)
——–高六位0000 00:保留
——–第七位0:URG,1此报文应尽快传送,而不要按本来的列队次序来传送,使紧急指针有效
——–第八位1:ACK,1确认号被使用,0确认号被忽略
——–第九位1:PSH,1恳求远地TCP将本报文段立即传送给其应用层,而不要比及全部缓存都填满了之后再向上交付
——–第十位0:RST,1呈现严重错误,必须开释连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接
——–第十一位0:SYN,1连接请求,用于建立连接和使顺序号同步
——–第十二位0:FIN,1发送方已经没有数据发送了,即关闭本方数据流
001d:滑动窗口,流量控制
b358:校验和
0000:紧急指针,指出在本报文段中的紧急数据的最后一个字节的序号,使接管方可以知道紧急数据共有多长

数据:
6162 63:abc的ASCII码

1 Reply to “解析一个简单的IP数据报”

发表评论