免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 926 | 回复: 4
打印 上一主题 下一主题

[网络管理] IPv4包头问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-10 01:22 |只看该作者 |倒序浏览
下面是用tcpdump抓到的IPv4包
  1. IP 10.31.90.106.37600 > 10.31.90.132.36000: Flags [S], seq 1592276107, win 14600, options [mss 1460,sackOK,TS val 883954282 ecr 0,nop,wscale 7], length 0
  2.         0x0000:  4510 003c 26e1 4000 4006 4a9f 0a1f 5a6a
  3.         0x0010:  0a1f 5a84 92e0 8ca0 5ee8 348b 0000 0000
  4.         0x0020:  a002 3908 4bbd 0000 0204 05b4 0402 080a
  5.         0x0030:  34b0 126a 0000 0000 0103 0307
复制代码
根据进制转换可知,
0x0000的十进制为0
0x0010的十进制为16
也就是说4510 003c 26e1 4000 4006 4a9f 0a1f 5a6a每个字段为2字节,

但是如果运算0x4510的话,十进制值为17680,那么这个2字节是如何计算的呢?

论坛徽章:
0
2 [报告]
发表于 2016-05-10 08:42 |只看该作者
为什么要运算0x4510?不明白你说的"2字节是如何计算的"是啥意思?
4510是要转换成2进制,然后再看意思的,例如:
4510 => 0100 0101 0001 0000
其中0100表示ip版本(IPv4);
0101表示头部长度(5个4字节,即20字节,因为包头长度是以4字节为一个单位的。);
0001 0000表示服务类型(这个字段含有3个子字段,详细的情况请百度)

论坛徽章:
0
3 [报告]
发表于 2016-05-10 11:15 |只看该作者
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。

所以十六进制的4510有2个字节(4-->4位 5 -->4位 1 -->4位 0 -->4位,总共16位,即2个字节)

论坛徽章:
0
4 [报告]
发表于 2016-05-10 15:58 |只看该作者
“5个4字节,即20字节,因为包头长度是以4字节为一个单位的。”还是不明白这里是怎么算出20个字节的?这里0x5 --> 0101就是5。包头就是4个字节。那么为什么要5*4呢?回复 2# lll1985911


   

论坛徽章:
0
5 [报告]
发表于 2016-05-10 16:12 |只看该作者
哦,我知道了。IPv4的头部定义是这样回复 4# 重楼君


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP