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 |
IPv4分析的更多相关文章
- ipv4头部分析,读书笔记3
ip头部最长是60字节,前面的20字节是固定的,选项可加上40字节 4位版本号--- 对于ipv4来说呢,就是4 4位头部长度 --- 表示 有多小个32bit(4字节),4位最大表示数是15啦,也 ...
- 计算机网络协议,IPV4数据报分析
一.IP数据报结构分析 1.整体结构 一个IP数据报由首部和数据两部分组成. 首部的前一部分固定长20字节,这是所有IP数据报必须具有的:在首部的固定部分后面是一些可选字段,其长度是可变的. IP数据 ...
- IPv6地址格式示例及IPv6与IPv4的区别分析
认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...
- QQ传输协议分析
2015-06-16 16:27:07 一. 实验目的: 在虚拟机下NAT模式下通过Wireshark抓包,分析QQ的传输模式.了解QQ在传输信息过程中用到的协议.分析在Nat模式下,信息传输的穿透性 ...
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
- socket-详细分析No buffer space available
关键词:socket,tcp三次握手,tcp四次握手,2MSL最大报文生存时间,LVS,负载均衡 新年上班第一天,突然遇到一个socket连接No buffer space available的问题, ...
- IP分片重组的分析和常见碎片攻击 v0.2
IP分片重组的分析和常见碎片攻击 v0.2http://www.nsfocus.net/index.php?act=magazine&do=view&mid=584 作者:yawl ( ...
- 物联网(莹石云)WIFI一键配置原理分析(zz)
最近打算做一款自己的无线传输模块用来实现光伏电站的数据接入,希望可以尽量简化接入流程,其中wifi密码的配置就是一个比较麻烦的事情,想到最近使用萤石摄像头时,wifi密码配置似乎很简单,他们是怎么做到 ...
- [dpdk] 熟悉SDK与初步使用 (三)(IP Fragmentation源码分析)
对例子IP Fragmentation的熟悉,使用,以及源码分析. 功能: 该例子的功能有二: 一: 将IP分片? 二: 根据路由表,做包转发. 路由表如下: IP_FRAG: Socket : ad ...
随机推荐
- 冲刺阶段day3
day3 项目进展 今天周三,我们五个人难得的一整个下午都能聚在一起.首先我们对昨天的成果一一地查看了一遍,并且坐出了修改.后面的时间则是做出 登录界面的窗体,完善了登录界面的代码,并且实现了其与数据 ...
- Kindle 转换器
一款比较好用的Kindle转换器,支持txt, opf, htm, html, epub 到 mobi 的转换,支持拖放操作,支持批量操作.只需要选中多个待转换的文件,拖放到程序窗口即可. 曾经用过一 ...
- [游戏模版10] Win32 平面地图贴图 正
>_<:picture resource >_<:If you master the ways of mapping picture,then this problem is ...
- Redis教程(七):Key操作命令详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/134.html?1455807040 一.概述: 在该系列的前几篇博客中, ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- 使用SVG生成的奔跑吧兄弟的动画效果
在线演示 本地下载 缩放一下在线演示效果窗口,看看不同大小下的动画是不是都显示的非常完美? 体验一下SVG的强大之处吧!
- AT&T Assembly for Linux and Mac (sys_exit)
Exit() in C : (sys_exit.c) int main(void) { ; } Exit() in AT&T for Linux: (sys_exit.s) .section ...
- java生成竖排文字图片
package com.kadang.designer.web.action;import java.awt.Color;import java.awt.Font;import java.awt.Fo ...
- python BeautifulSoup实例测验
- Help Viewer 2.2 独立运行
"C:\Program Files (x86)\Microsoft Help Viewer\v2.2\HlpViewer.exe" /catalogName VisualStudi ...