IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录
IP协议首部格式
地址解析协议 ARP
逆向地址解析协议 RARP
网际控制报文协议 ICMP
网际组管理协议IGMP
IP 数据报首部
IP数据报首部格式:
最高位在左边,记为0 bit;最低位在右边,记为31 bit

版本:
占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)
首部长度:
占4位,可表示的最大数值是15个单位(一个单位为 4 字节)因此IP 的首部长度的最大值是 60 字节
区分服务:
占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.1998 年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段
总长度:
占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节.总长度必须不超过最大传送单元 MTU
标识:
占16位,它是一个计数器,用来产生数据报的标识
标志(flag):
占3位,目前只有前两位有意义
MF
- 标志字段的最低位是 MF (More Fragment)
- MF=1 表示后面“还有分片”。MF=0 表示最后一个分片
DF
- 标志字段中间的一位是 DF (Don't Fragment)
- 只有当 DF=0 时才允许分片
片偏移:
占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位

生存时间:
占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
协议:
占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议

首部检验和:
占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址:
都各占 4 字节,分别记录源地址和目的地址
地址解析协议 ARP
说明:
ARP 每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表
作用:
通过IP地址得知其物理地址
步骤:


注意:
- 网络上其他主机并不响应 ARP 询问,只有接收端主机接收到这个帧时,才向发送端主机做出这样的回应
- ARP 是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题.若所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络.剩下的工作就由下一个网络来做
- 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的.
- 主机或路由器要和本网络上另一个已知 IP 地址的主机或路由器进行通信,ARP 协议会自动地将该IP地址解析为链路层所需要的硬件地址
四种典型情况:
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机.这时用 ARP 找到目的主机的硬件地址
- 发送方是主机要 IP 数据报发送到其他网络的主机.这时 ARP 找到本网络上某个路由器硬件地址.剩下工作由这个路由器完成
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机.这时用 ARP 找到目的主机的硬件地址
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机.这时用 ARP 找到本网络上的一个路由器的硬件地址.剩下的工作由这个路由器来完成
报头格式:

说明:
- 硬件类型字段表示硬件地址的类型.它的值为1即表示以太网地址
- 协议类型字段表示要映射的协议地址类型.它的值为 0x0800 即表示 IP 地址
- 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位.对于以太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4
- 操作字段指出四种操作类型,它们是 ARP 请求(值为1)、ARP 应答(值为 2 )、RARP 请求(值为 3 )和 RARP 应答(值为 4 )
- 接下来的四个字段是发送端的硬件地址(在本例中是以太网地址)、发送端的协议地址( IP 地址)、目的端的硬件地址和目的端的协议地址.
参考链接:
http://blog.csdn.net/tigerjb/article/details/7351992
逆地址解析协议 RARP
定义:
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其IP地址
用途:
这种主机往往是无盘工作站.因此 RARP 协议目前已很少使用
RARP 与 RAP:

网际控制报文协议 ICMP
目的:
为了提高 IP 数据报交付成功的机会
注意:
- 允许主机和路由器报告差错情况和提供有关异常情况的报告
- ICMP不是高层协议,而是IP层的协议
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
- ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和.接着的4个字节的内容与ICMP的类型有关
种类:
- ICMP 差错报告报文:
- 终点不可达
- 源点抑制(Source quench)
- 时间超过
- 参数问题
- 改变路由(重定向)(Redirect)
- ICMP 询问报文:
- 回送请求和回答报文
- 时间戳请求和回答报文
报文格式:


ICMP地址掩码请求和应答报文

ICMP时间戳请求和应答报文

ICMP不可达报文

ICMP回显请求和回显应答报文格式

ICMP超时报文

ICMP重定向报文

ICMP路由器请求报文格式

ICMP路由器通告报文格式

ICMP 源站抑制差错报文格式

ICMP 类型:

不应发送ICMP差错报告报文的情况:
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文
- 多播地址的数据报都不发送ICMP差错报告报文
- 特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP差错报告报文
网际组管理协议IGMP
报文格式:

作用:
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系
功能:
当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址以宣告它的成员身份,多播路由器和交换机就可以从中学习到组的成员.利用从IGMP中获取到的信息,路由器和交换机在每个接口上维护一个多播组成员的列表
两个阶段:
- 加入:
- 当主机加入新的多播组时,向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员.本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器
- 询问:
- 周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员
- 注意:
- 因为组成员关系是动态的,因此本地多播路由器要只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的
- 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器
数据包:
IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务
具体措施:
- 在主机和多播路由器之间的所有通信都是使用 IP 多播
- 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次
- 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系
- 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送
- 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了
转自:http://www.cnblogs.com/kzloser/articles/2582349.html
IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)的更多相关文章
- (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- 网络层 IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- tcp/ip--IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
IP 数据报首部 最高位在左边,记为0 bit:最低位在右边,记为31 bit 版本: 占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4) 首部长度: 占4位,可表示的最 ...
- IP数据报首部格式
IP协议提供不可靠.无连接的数据报传送服务. 不可靠:尽力而为地传输,不保证IP数据报能成功到达目的地. 无连接:每一个数据报之间相互独立地进行路由选择,可不按发送顺序接收. IP首部格式例如以下: ...
- 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接建立---三次握手、tcp连接释放---四次握手)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105516090 学习课程:<2019王道考研计算机网络> 学习目的 ...
- IP首部格式[转载]
TCP 传输首部是 IP首部,所以把IP首部格式 拿过来研究下,看IP首部解码过程: 来源:51CTO博客,地址:http://lihuan.blog.51cto.com/4391550/7999 ...
- IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式
IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个 ...
- TCP/IP笔记——TCP特点、首部格式、滑动窗口
这次总结一下TCP相关的知识. TCP主要特点 面向连接:在通信前必须建立连接(只是逻辑上存在,而不是物理连接) 只能有两个端点:即只能一对一通信(所以通常p2p是用UDP实现的) 提供可靠交付服务: ...
- TCP/IP UDP 协议首部及数据进入协议栈封装的过程
数据的封装 UDP 封装 TCP 封装 IP 封装 检验和算法 当应用程序用TCP传送数据时,数据被传送入协议栈中,然后逐一通过每一层直到被当作一串比特流送入网络 注: UDP数据TCP数据基本一致. ...
随机推荐
- Android源码下载并绑定到Eclipse中
在Windows下,通过SDK Manager.exe更新下载的Android,是不带源码的,我们开发开发起来不是很方便: 其实Android的源代码是可以下载的,其源代码入在http://andro ...
- 实现一个 Variant
很多时候我们希望能够用一个变量来保存和操作不同类型的数据(比如解析文本创建 AST 时保存不同类型的结点),这种需求可以通过继承来满足,但继承意味着得使用指针或引用,除了麻烦和可能引起的效率问题,该做 ...
- 各种Camera,总有一款适合你(一)
根据游戏类型的不一样,会需要各种各样的摄像机,下面将分享三种典型的摄像机类型:(1)地下城摄像机:(2)第三人称跟随摄像机:(3)鼠标控制旋转摄像机.将这些控制脚本拖动到场景的MainCamera上即 ...
- Android学习笔记之性能优化SparseArray
PS:终于考完试了.来一发.微机原理充满了危机.不过好在数据库89分,还是非常欣慰的. 学习内容: 1.Android中SparseArray的使用.. 昨天研究完横向二级菜单,发现其中使用了Sp ...
- 前端引擎初步设计稿 -通过配置生成动态页面 ,LandaSugar平台 .NET-C#-MVC
公司准备开发出一款项目开发平台 LandaSugar,分为 前端引擎.工作引擎.数据引擎 三大块,开发人员只需要对三大模块进行相应的配置便能够完成一个定制项目的开发. 听起来貌似是异想天开,但是是否真 ...
- 分享几个cocos2dx的小游戏
先上几个自己写的,因为最近要用cocos2dx,所以就边学边开发几个小游戏玩玩,有捕鱼,连连看,还有打地鼠!都不算完整的项目,不过拿来学习还是可以的,或者在基础上再二次开发,扩展自己! 1:捕鱼的 先 ...
- 前端翻译:Activating Browser Modes with Doctype
一.前言 原本备份: http://www.cnblogs.com/fsjohnhuang/p/3830623.html 由于本人英语能力有限,译本内容难免有误,望各位指正! 本译文不含附录部分,请知 ...
- mysql rand()产生随机整数范围及方法
根据官方文档,rand()的取值范围为[0,1) 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))例如, 若要在7 ...
- 软件工程---阅读《构建之法》P384~391
-阅读<构建之法>P384~391后,我充分认识到软件工程师的职业道德的重要性,具体有: 原则1:公众 原则2:客户与雇主 原则3:产品 原则4:判断 原则5:管理 原则6:职业 原则7: ...
- OpenProcess打开进程返回错误的问题
问题描述 项目中需要做一个小功能:能够查看系统中当前正在运行的进程的内存信息,如内存块类型.分配状态.访问权限等.如下图所示: 需要的信息和上图相差无几.说起来也不算太难,毕竟现成的API已经提供了. ...