ipv4头部分析,读书笔记3
ip头部最长是60字节,前面的20字节是固定的,选项可加上40字节
4位版本号--- 对于ipv4来说呢,就是4
4位头部长度 --- 表示 有多小个32bit(4字节),4位最大表示数是15啦,也就是最大就是15啦,所以头部最长就是60啦
8位服务类型 --- 已经不用了
16总长度---ip数据报长度 所以最大长度为 65535啦
16位标识-- 分片的时候用的
3位标志 --- 第一位保留 第二位 禁止分片 第三位 表示更多分片
13位偏移 --- 相对ip数据报的开始处
8位生存时间 ---ttl 当变为0的时候抛弃
8 位协议 ---- 指应用层协议,区分上层协议
16位校验和 ---- 数据的hash值啦
32 位 原端 和目的端ip地址
选项 包括有
1 记录路由
2 时间戳
3 松散路由
4 严谨 路由
下面来分析一下
tcpdump -i eth0:1 -ent '(dst 192.168.5.190 and src 192.168.5.109)or( dst 192.168.5.109 and src 192.168.5.190)' –X
bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 74: 192.168.5.109 > 192.168.5.190: ICMP echo request, id 1, seq 72, length 40
0x0000: 4500 003c 7da4 0000 4001 70a1 c0a8 056d E..<}...@.p....m
0x0010: c0a8 05be 0800 4d13 0001 0048 6162 6364 ......M....Habcd
0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
0x4 代表ip版本号
0x5 头部长度为 5个32位(20个字节)
0x00 说明tos没有开启
0x003c 说明 数据报总长度 60字节
0x7da4 数据报标示
0x0 没有设置标志位
0x000 分片偏移
0x40 ttl设置为64
0x01 表示上层协议 为 icmp 1 ICMP # internet control message protocol (可以查找linux的/etc/protocols )
0x70a1 校验值
0xc0a8 056d 源ip
0xc0a8 05be 目标ip
IP分片
什么时候会分片呢,就是数据包大的时候啦
参照下图就最清楚啦
下面来做个试验
ping 192.168.5.190 -l 1473
bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 1514: (tos 0x0, ttl 64, id 20425, offset 0, flags [+], proto ICMP (1), length 1500)
192.168.5.109 > 192.168.5.190: ICMP echo request, id 1, seq 92, length 1480
bc:ee:7b:9d:ee:02 > 40:16:7e:79:c7:36, ethertype IPv4 (0x0800), length 60: (tos 0x0, ttl 64, id 20425, offset 1480, flags [none], proto ICMP (1), length 21)
192.168.5.109 > 192.168.5.190: icmp
从id可以看出
他们两个包都是同一个包的
第一个包偏移为0 ,flag[+] 表示MF标志啦
第二个包偏移为1480 flag[none]表示已经无下一个
从上个我们可以知道,第二个包是没有包含icmp头部,因为规范说第一次发了下次就不发啦
ipv4头部分析,读书笔记3的更多相关文章
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- STL源码分析读书笔记--第5章--关联式容器
1.关联式容器的概念 上一篇文章讲序列式容器,序列式容器的概念与关联式容器相对,不提供按序索引.它分为set和map两大类,这两大类各自有各自的衍生体multiset和multimap,的底层机制都是 ...
- STL源码分析读书笔记--第三章--迭代器(iterator)概念与traits编程技法
1.准备知识 typename用法 用法1:等效于模板编程中的class 用法2:用于显式地告诉编译器接下来的名称是类型名,对于这个区分,下面的参考链接中说得好,如果编译器不知道 T::bar 是类型 ...
- Linux内核分析 读书笔记 (第七章)
第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行. 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于 ...
- Linux源代码情景分析读书笔记 物理页面的分配
函数 alloc_pages流程图
- Linux内核分析 读书笔记 (第四章)
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限 ...
- Linux内核分析 读书笔记 (第三章)
第三章 进程管理 3.1 进程 1.进程: 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程:执行 ...
- Linux内核分析 读书笔记 (第十八章)
第十八章 调试 18.1 准备开始 1. 需要的只是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在跟踪bug的时候,掌握的信息越多越好. 18.2 内核中的bug 1. ...
- Linux内核分析 读书笔记 (第五章)
第五章 系统调用 5.1 与内核通信 1.调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个: 为用户空间提供了硬件的抽象接口. 系统调用保证了系统的稳定和安全. 实现多任务和虚拟内 ...
随机推荐
- struts2与struts1整合,java.lang.InstantiationException, Exception occurred during processing request: null
做了2个action,其中一个运行没有问题,另一个报错,看下面的报错信息,再看了看struts.xml,因为没有给GetBooks这个action配置actionform,所以就导致报null.下面是 ...
- php抽象 与接口
抽象方法和抽象类 PHP5支持抽象类和抽象方法.抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类.抽象类中 至少要包含一个抽象方法.如果类方法被声明为抽象的,那么其中就不能包括具体的功能 ...
- (三)在js(jquery)中获得文本框焦点和失去焦点的方法
在js(jquery)中获得文本框焦点和失去焦点的方法 文章介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $(" ...
- Android开发环境的安装 Eclipse
Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...
- ffmpeg mp4转yuv
mp4转yuv ffmpeg -i test.mp4 test.yuv 播放yuv ffplay.exe -f rawvideo -video_size 1280x720 -i test.yuv
- VMware中第一次启动mac遇到的错误及解决方案
本文部分参考 http://blog.sina.com.cn/s/blog_938d86e90100z5ep.html 虚拟机版本:VMware-workstation-full-7.1.3-3242 ...
- python lambda函数详细解析(面试经常遇到)
1 作用:通常是用来在python中创建匿名函数的 2 格式: lambda 参数[,参数] : 表达式 3 注意: (1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数 (2) ...
- 标准类型内建函数 str()和 repr() (及 `` 运算符) 简单介绍
内建函数 str() 和 repr() 或反引号运算符(``) 可以方便的以字符串的方式获取对象的内容.类型.数值属性等信息.str()函数得到的字符串可读性好, 而repr()函数得到的字符串通常可 ...
- Android HTTPS(3) IOException: Hostname 解决方案
Common Problems with Hostname Verification As mentioned at the beginning of this article, there are ...
- 重新安装sqlyog时备份数据库链接列表的方法
一般在本机C:\Documents and Settings\Administrator\Application Data\SQLyog这个目录下有个sqlyog.ini文件.把这个文件备份一下就ok ...