TCP/IP协议详解: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
地址解析协议,根据IP地址获取物理地址。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
硬件类型:表示硬件地址的类型.它的值为1即表示以太网地址
协议类型:表示要映射的协议地址类型.它的值为 0x0800 即表示 IP 地址
硬件地址长度和协议地址长度:分别指出硬件地址和协议地址的长度,以字节为单位.对于以太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4
OP:指出四种操作类型,ARP 请求(值为1)、ARP 应答(值为 2 )、RARP 请求(值为 3 )和 RARP 应答(值为 4 )
发送端以太网地址:占6个字节,表示发送端MAC地址
发送端IP地址:占4个字节,表示发送端IP地址
目的以太网地址:占6个字节,表示目标设备的MAC物理地址
目的IP地址:占4个字节,表示目标设备的IP地址。
ARP协议工作过程
1.当主机A向本局域网上的某个主机B发送IP数据报时,就先在自己的ARP缓冲表中查看有无主机B的IP地址。
2.如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。
3.如果查不到主机B的IP地址的表项。可能是主机B才入网,也可能是主机A刚刚加电。其高速缓冲表还是空的。在这种情况下,主机A就自动运行ARP。按一下步骤找出主机B的硬件地址。
(1)ARP进程在本局域网上广播一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是192.168.0.2,我的硬件地址是00-00-C0-15-AD-18.我想知道IP地址为192.168.0.4的主机的硬件地址。
(2)在本局域网上的所有主机上运行的ARP进行都收到此ARP请求分组。
(3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.0.4,我的硬件地址是08-00-2B-00-EE-AA”,请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓冲表中写入主机B的IP地址到硬件地址的映射。
说明:
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 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务
具体措施:
- 在主机和多播路由器之间的所有通信都是使用 IP 多播
- 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次
- 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系
- 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送
- 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了
转自:http://www.cnblogs.com/kzloser/articles/2582349.html
TCP/IP协议详解:IP、ARP、RARP、ICMP、IGMP相关推荐
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- TCP/IP协议详解---概述
工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本书,希望 ...
- TCP/IP协议详解、TCP三次握手
TCP/IP协议详解:TCP/IP协议详解_王佳斌-CSDN博客_tcp/ip协议认识HTTP协议它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本 ...
- 《TCP IP协议 详解》思考总结 · 三
前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将<TCP/IP协议详解 卷一>书中TCP相关章节前面的内容做一个结束,在下一篇文章专心的去 ...
- TCP/IP协议详解卷一:Chapter21 笔记
TCP/IP协议详解卷一:Chapter21 笔记 Chapter 21 TCP的超时与重传 21.3 往返时间测量 21.5 拥塞举例 21.6 拥塞避免算法 21.7 快速重传与快速恢复算法 21 ...
- IP协议详解及IPv4与IPv6协议的区别
IP协议是在TCP/IP协议模型中的重要组成部分,目前我们使用最多的是IPv4协议,IPv6协议的用户量也在慢慢增加,苹果在几年之前就已经开始支持IPv6协议了.我们先来了解一下IPv4和IPv6协议 ...
- SOME/IP协议详解「2.2.1·SOME/IP的传输方式」
SOME/IP协议详解「2.2.1·SOME/IP的传输方式」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.2.1·SOME/IP的传输方式」 1 基础传输 2 N ...
- SOME/IP协议详解「2.0·服务化通信概述」
SOME/IP协议详解「2.0·服务化通信概述」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.0·服务化通信概述」 1 SOME/IP服务的组成 2 Method| ...
- SOME/IP协议详解「总目录」
SOME/IP协议详解「总目录」 欢迎大家来到雪云飞星的<SOME/IP协议详解>,开始前博主先列出本专栏学习的大纲,同时这也可以作为大家学习SOME/IP协议知识点的参考.下面蓝字都是传 ...
- SOME/IP协议详解「3.1.1·服务发现报文的格式」
SOME/IP协议详解「3.1.1·服务发现报文的格式」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「3.1.1·服务发现报文的格式」 1 SD的SOME/IP格式头 ...
最新文章
- K-最近邻法(KNN)简介
- 2013-12-2 学习笔记
- 三连冠!百度PARL 拿下NeurIPS 2020电网调度竞赛双赛道冠军
- IP v4 IP v6
- python题目推荐_python题目
- 反转!2019程序员吸金榜来了,AI程序员刷爆了..
- ubuntu无法安装usb驱动
- Linux 杀死stuck线程,如何中断weblogic中stuck thread
- freemarker必须指定模板文件夹吗?
- div之间横竖方向的5px间距
- [codeforces 1384A] Common Prefixes 上一字串是当前字串的基础(构造)
- [转载] 花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪!
- Nature综述:人类微生物培养及培养组学culturomics
- Scrapy简明教程(一)
- Epoll的本质(内部实现原理)
- Web过滤器:Filter
- UDF、UDTF、UDAF自定义函数
- 记录: 之前发的 Unity 2018.x工具已经不能用了,我在这里说明一下,不是破解不是破解不是破解,我就说明一下情况!!!0.0
- 面试官问你期待工资多少时,该怎么回答?
- CSDN Markdown 商标标志 C、TM、R
热门文章
- 分享一个千万数据的磁力搜索网站 bt书虫 php+mysql+nginx
- Office 检测到一个与此文件相关的问题为帮助保护您的计算机,无法打开此文件。
- FreeBSD安装与配置(转)
- mybatis mapper xml的学习详解
- 将excel或是csv文件中的矩阵相乘,输出点乘后的excel文件
- 给大家推荐几本最优秀的编程书
- android屏幕投影到pc,安卓手机怎么把屏幕投影到电脑上
- linux桌面隐藏下面任务栏,CentOS 7 隐藏任务栏和顶栏,centos任务栏
- 2018第九届蓝桥杯国赛C组_java
- SMOTE算法原理及程序python(新手版)