网络--网络层协议
2017-03-01 19:19
633 查看
IP协议
ip数据报格式
IP 数据报的首部长度和数据长度都是可变长的,但总是4 字节的整数倍。对于IPv4,4 位版本字段是4。
4 位首部长度的数值是以4 字节为单位的,最小值为5,也就是说首部长度最小是4x5=20 字节,也就是不带任何选项的IP 首部,4 位能表示的最大值是15,也就是说首部长度最大是60 字节。
8 位TOS 字段有3 个位用来指定IP 数据报的优先级(目前已经废弃不用),还有4 个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。
总长度是整个数据报(包括IP 首部和IP 层payload)的字节数。每传一个IP 数据报,16 位的标识加1,可用于分片和重新组装数据报。3 位标志和13 位片偏移用于分片。
TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0 就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。
协议字段指示上层协议是TCP、UDP、ICMP 还是IGMP。然后是校验和,只校验IP 首部,数据的校验由更高层协议负责。IPv4的IP 地址长度为32 位。
网际控制报文协议ICMP
目的:
为了提高 IP 数据报交付成功的机会
注意:
● 允许主机和路由器报告差错情况和提供有关异常情况的报告
● ICMP不是高层协议,而是IP层的协议
● ICMP报文作为IP层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
● ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和.接着的4个字节的内容与ICMP的类型有关
种类:
● ICMP 差错报告报文:
○ 终点不可达
○ 源点抑制(Source quench)
○ 时间超过
○ 参数问题
○ 改变路由(重定向)(Redirect)
● ICMP 询问报文:
○ 回送请求和回答报文
○ 时间戳请求和回答报文
报文格式:
所有的ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上响应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。
ICMP地址掩码请求和应答报文
ICMP不可达报文
日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。
Code
0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.
ICMP回显请求和回显应答报文格式
ICMP超时报文
网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文(Type为11),Code为0,表示传输过程中超时了。
一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。
ICMP重定向报文
当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type为5)给源发送方,提醒它想要发送的地址不在,去其他地方找找
ICMP路由器请求报文格式
ICMP路由器通告报文格式
ICMP 源站抑制差错报文格式
ICMP 类型:
不应发送ICMP差错报告报文的情况:
● 对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文
● 多播地址的数据报都不发送ICMP差错报告报文
● 特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP差错报告报文
IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP主要功能
当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址以宣告它的成员身份,多播路由器和交换机就可以从中学习到组的成员。利用从IGMP中获取到的信息,路由器和交换机在每个接口上维护一个多播组成员的列表。
IGMP报文格式和分类
一个完整的IGMP数据报:正如ICMP一样, IGMP 也被当作IP 层的一部分。
IGMP报文的基本格式:IGMP有固定的报文长度,没有可选数据。
1) 4位IGMP版本。
2) 4位IGMP类型:为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
3) 16位校验和:检验和字段覆盖整个IGMP报文。使用的算法和IP首部校验和算法相同。IGMP的检验和是必需的。
ip数据报格式
IP 数据报的首部长度和数据长度都是可变长的,但总是4 字节的整数倍。对于IPv4,4 位版本字段是4。
4 位首部长度的数值是以4 字节为单位的,最小值为5,也就是说首部长度最小是4x5=20 字节,也就是不带任何选项的IP 首部,4 位能表示的最大值是15,也就是说首部长度最大是60 字节。
8 位TOS 字段有3 个位用来指定IP 数据报的优先级(目前已经废弃不用),还有4 个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。
总长度是整个数据报(包括IP 首部和IP 层payload)的字节数。每传一个IP 数据报,16 位的标识加1,可用于分片和重新组装数据报。3 位标志和13 位片偏移用于分片。
TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0 就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。
协议字段指示上层协议是TCP、UDP、ICMP 还是IGMP。然后是校验和,只校验IP 首部,数据的校验由更高层协议负责。IPv4的IP 地址长度为32 位。
网际控制报文协议ICMP
目的:
为了提高 IP 数据报交付成功的机会
注意:
● 允许主机和路由器报告差错情况和提供有关异常情况的报告
● ICMP不是高层协议,而是IP层的协议
● ICMP报文作为IP层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去
● ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和.接着的4个字节的内容与ICMP的类型有关
种类:
● ICMP 差错报告报文:
○ 终点不可达
○ 源点抑制(Source quench)
○ 时间超过
○ 参数问题
○ 改变路由(重定向)(Redirect)
● ICMP 询问报文:
○ 回送请求和回答报文
○ 时间戳请求和回答报文
报文格式:
所有的ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上响应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。
ICMP地址掩码请求和应答报文
ICMP不可达报文
日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。
Code
0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.
ICMP回显请求和回显应答报文格式
ICMP超时报文
网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文(Type为11),Code为0,表示传输过程中超时了。
一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。
ICMP重定向报文
当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type为5)给源发送方,提醒它想要发送的地址不在,去其他地方找找
ICMP路由器请求报文格式
ICMP路由器通告报文格式
ICMP 源站抑制差错报文格式
ICMP 类型:
不应发送ICMP差错报告报文的情况:
● 对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文
● 多播地址的数据报都不发送ICMP差错报告报文
● 特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP差错报告报文
IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP主要功能
当一台主机加入到一个新的组时,它发送一个IGMP消息到组地址以宣告它的成员身份,多播路由器和交换机就可以从中学习到组的成员。利用从IGMP中获取到的信息,路由器和交换机在每个接口上维护一个多播组成员的列表。
IGMP报文格式和分类
一个完整的IGMP数据报:正如ICMP一样, IGMP 也被当作IP 层的一部分。
IGMP报文的基本格式:IGMP有固定的报文长度,没有可选数据。
1) 4位IGMP版本。
2) 4位IGMP类型:为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。
3) 16位校验和:检验和字段覆盖整个IGMP报文。使用的算法和IP首部校验和算法相同。IGMP的检验和是必需的。
相关文章推荐
- Linux网络编程——网络协议入门
- HTTP网络协议(一)
- 七层网络协议
- 网络层次协议的由来
- 网络协议的一些基本概念
- 网络协议词典-A
- 《java入门第一季》之tcp协议下的网络编程c/s实现通信交互
- 谷歌quic协议自带网络仿真器代码分析(一)
- 【转载】网络协议学习方法和工具
- 网络穿透 与 NAT类型 及 STUN TURN 协议
- HTTP网络协议(五)
- 网络协议
- Android - HTTP 协议访问网络
- [Android--USB]USB协议各个版本的关系_网络整理
- Java网络编程基础知识(IP/端口/协议)
- Visual C#实现网络对时系统——UDP协议的实际应用
- 小白学网络之二_TCP/IP协议之链路层协议
- 50行Python代码输出各种网络协议报文结构的纯文本表格图
- 计算机网络学习(4):网络协议与标准
- Google正研发不需要密码的网络协议