网络--网络层协议

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的检验和是必需的。

posted @ 2017-03-01 19:19  tla001  阅读(405)  评论(0编辑  收藏  举报
个人网站 www.tla001.cn