IPv4分析
IPv4的头部格式:
1. Version
版本号,默认是4。
2. IHL(Internet Header Length)
就是IPv4头部长度。这个长度的单位是32bit,一般是5,那么头部的长度就是5x32bit=160bit。
3. DSCP(Differentiated Services Code Point),ECN(Explicit Congestion Notification)
原来这8字节是被定义成TOS(Type of Service),现在被RFC2474定义成Differentiated services(差异化服务)和ECN。
背景:随着互联网的发展,各种各样的服务被提供,比如语音、视频、流音乐、网页、邮件等等。原来的TOS定义已经跟不上时代的需要,所以在1998年,IETF发布了RFC 2474,将原来的TOS替换成DSCP和ECN。
4. Total Length
整个数据包的长度,含头部,单位为Byte。
5. Identification
数据包标识,用来区分相同的包,比如ping包。
6. Flags
bit 0 : 保留,总是0
bit 1 : Don’t Fragment, DF。表示不分片。当需要发送的数据大于最长数据包限制的时候,数据需要分片发送。如果这位置1,IP模块将不会对数据报进行分片。这种情况下,如果IP数据报长度超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文。
bit 2 : More Fragment,MF。表示更多分片,除了数据报的最后一个分片外,其他分片都要把它置1.
7. Fragment Offset
分片的位移。(2^13 – 1) x 8 = 65528 bytes, 也就是说,最大的IP数据报长度为65528+20=65548字节。
8. Time to Live, TTL
防止数据拥塞用的,有一个初始值,比如64,每经过一个路由器自动-1,到0的时候就被销毁。
9. Protocol
上层协议号,比如ICMP是1,TCP是6,UDP是17.
10. Header Checksum
头部CRC校验,详细可以看这里:http://en.wikipedia.org/wiki/IPv4_header_checksum
11. Source IP Address
源IP地址
12. Destination IP Address
目标IP地址
13. Options
可选,不常用,后面再详细分析。
抓包测试:
用tcpdump抓包, sudo tcpdump –ntx –i eth0 icmp
抓一下ping数据包,我这里ping一下自己的主机craftor.org
上面一个包是发送,下面的包是返回。
0x4 | 协议版本,v4 |
0x5 | 包头长度,5x32bit |
0x00 | 参照RFC2474,00是默认包类型 |
0x0054 | 包总长为0x54=84 |
0x59b0 | ID |
0x4000 | 不分片,不分包 |
0x40 | TTL=64 |
0x01 | ICMP协议,ping属于ICMP协议 |
0xbbbc | CheckSum |
0xc0a82c81 | SourceIP=192.168.44.129 |
0xc64a71c8 | DestinationIP=198.74.113.200 |
0x0800~0x3637 | Options |
最新文章
- Windows 10下通过蓝牙连接iPhone个人热点进行共享上网
- memcached的最佳实践方案
- javascript笔记——js面试问题
- 中国地图投影(实现Lambert投影)
- mdk编译遇见的错误(LX4F120H),望各位指点迷津
- JavaScript版排序算法
- android 画图之setXfermode .
- Shell - 简明Shell编程
- winform中执行任务,解决未响应界面
- Akka(40): Http:Marshalling reviewed - 传输数据序列化重温
- wpf 给listview的数据源转换为集合
- UVA524-Prime Ring Problem(搜索剪枝)
- ZooKeeper基础CRUD操作
- Linux服务器---流量监控ntop
- java 正则 贪婪匹配 匹配sql语句中的引号内容
- PAT甲题题解-1040. Longest Symmetric String (25)-求最长回文子串
- JS中给函数参数添加默认值
- CentOS 6.4 配置DNS
- Spring学习之-各注解的含义总结
- 使用for循环打印9×9乘法表
热门文章
- [MFC] MFC 打开HTML资源(用ID版,也可加载到自己的web控件上)
- [JS1] 如何嵌入
- C#与数据库访问技术总结(十八)
- paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
- SqlServer2008R2用Windows身份登录18456错误解决
- AutoCAD2007专业版
- Win7下VS2010使用“ASP.Net 3.5 Claims-aware Template”创建ClaimsAwareWebSite报";HRESULT: 0x80041FEB";错误的解决办法
- Android文本输入框(EditText)切换密码的显示与隐藏
- SoapUI Pro Project Solution Collection-DataSource(jdbc,excel)
- spring boot注解之@Scheduled定时任务实现