计算机网络自学之路------IP协议(2)

之前忘记说了,这些内容都是边看视频边写的,视频出自西安交通大学。

本期说的是IP分组转发的内容,里面详细介绍了IP协议跟ARP协议,最后再给出一个例子,说明这两个协议在网络中传输的具体过程。


1)Ip分组与转发

2)在Internet中,IP分组的特点

3)ARP协议

4)IP分组发送过程


1)Ip分组与转发

计算机网络自学之路------IP协议(2)

红色部分为固定部分,绿色部分是数据部分

  • IP头包括20个字节的固定长度和变长(最多40个字节)的可选部分,
  • 版本:如IPV4,IPV6;
  • 头部长度:IP分组头的长度
  • 长度:IP头+数据部分的长度
  • 标识域: 很重要,用于分段与重组
  • 标识位: 有DF跟MF,当DF=0时,表示允许分段;MF=0时,表示这是最后一个分片
  • 偏移量:标明分片在原始的报文中的位置.

举例来说明标识域标识位跟偏移量的使用,假设有AB两个节点,跟R1 R2两个路由,现在A->R1->R2->B这样传输,

长度=4000 标识符 MF=0 偏移量=0

这是一个长度为4000bit的一个报文,假设经过路由的最大长度只能是1500bit,所以传输的过程中要将它分为几个分组分别发送,这里分组的长度要满足,长度-IP头必须是8的整数倍才行.

长度=1500 标识符 MF=0 偏移量=0

1500-IP头=1480;1480/8=185

长度=1500 标识符 MF=1 偏移量=185

同上,偏移量也是185

长度=1040 标识符 MF=0 偏移量=370

这里的长度为什么是1040呢?因为给前两个分组的IP头留出位子,这样数据的长度才能是4000-20=3980.

这样分组后,在最后一个路由器是要把这些分组重装起来,而这些分组又不是按顺序到达的,所以最后一个路由器通过偏移量和MF,就可以进行合理有序的重装了。

  • 生存期(TTL):指明这个IP分组能在网络中存活的最长时间,这里的时间是指跳数(从跟由R1跳到R2为一跳),当TTL为零的时候,这个IP分组就会被丢弃了~我们经常使用的Ping指令就能一项参数是TTL的值.   这里TTL的作用是,当一个数据包因为种种原因没能传到目的主机,这个包就会流浪在网络中,这时网络的开销就会增大,所以才会制定这个TTL机制.
  • 协议域:上层是哪种协议如:TCP UDP等
  • 源地址:本身的地址
  • 目的地址:要发送的地址

2)在Internet中,IP分组的转发具有如下特点

  • 每个IP分组中都包含目的主机的IP地址(有时的源地址不是发送主机的IP地址哦)
  • IP地址中的网络号唯一标识Internet中的一个物理网络,路由在转发过程中就按照网络号在不同的网络中传输
  • 所有连接到相同物理网络中的主机和路由,它们的网络号是一样的,在同一个网络中可直接通信
  • Internet中的每个物理网络至少有一个与之相连接的路由器
  • 在路由器中根据目的IP地址进行转发
  • 路由器中路由表的格式,在cmd中输入route print就可以看到路由表,可以简化成下图:

计算机网络自学之路------IP协议(2)

  • 看一个子网互联的例子

计算机网络自学之路------IP协议(2)

看到子网1跟子网2,以总线式分布着,这两个网络由一个路由器相连,路由器连接着这两个子网,掩码使用的是标准的C类掩码,通过IP地址与掩码可得:子网1的网络号是202.1.64.0子网2的网络号是202.1.61.0.可知它们不在一个网络中,就通过一个路由相接。在这里还可看出,路由器的网络号跟他相连接的网络的网络号是一样的。

  • 再看一个例子

计算机网络自学之路------IP协议(2)

三个子网络,以总线式的方式相连。三个子网络再通过三个路由器实现互联。尝试的画出R1路由器的路由表吧~

计算机网络自学之路------IP协议(2)

1、跟R1直接相连的网络有:20.0.0.0;30.0.0.0;50.0.0.0。直接相接,没有下一跳,距离也就是0

2、到10.0.0.0可以会经过R3,所以下一跳是20.0.0.0,距离为1. 路由表是实时更新的,所以也有可以通过R2再到R3这样走

3、40.0.0.0和60.0.0.0的方式跟10.0.0.0差不多

4、要是给在LAN1的三台主机分配地址,假设子网掩码是标准的A类掩码。可以分配为50.1.2.1;50.2.0.2;50.0.5.3。也就是说,只要网络号想同,主机号就可随意了。

5、而给R1这个路由器的三个端口分配IP地址,也要满足他们的网络号跟连接的网络的网络号相同,比如跟LAN1相接的可以是50.0.0.8,跟R3相连的可以是20.0.0.2等。


3)ARP协议

ARP协议:地址解析协议,解决的是从网络层地址到数据链路层的地址映射问题。使用arp -a这个命可看到你电脑中的ARP表--IP地址与对应的MAC地址。

计算机网络自学之路------IP协议(2)

在一个网络中,主机A在网络中广播去出一个 ARP请求包,想知道IP地址是10.1.0.5的MAC地址,这时的C收到这个包后回响应A,将自己的MAC地址发送出去。


4)IP分组发送过程

计算机网络自学之路------IP协议(2)

如图所示,AB之间想通信。跟AB直连的那个路由叫做网关。

1、假设A:202.117.15.4;B:202.117.15.8,子网掩码是标准C类掩码。用IP地址跟掩码的相与运算就可判断他们是否在同一个网络内,可知AB是在同一个网络内,是可直接通信的。然后,就通过刚才说的ARP协议,来获得目的IP的MAC地址(也可能是查A中的ARP表,因为之前可以已记录了B的MAC地址)。

2、假设A:202.117.15.4;B:202.117.16.8,子网掩码是标准C类掩码,可知他们不在同一网络。

则首选通过ARP协议获取网关的MAC地址(假设是202.117.15.1,红色部分相同就可啦,后面那个只要不是0或255都行)。网关收到请求后就响应之,返回他的MAC地址。

发送的IP分组:

源MAC:A 网关MAC 源IP:A 目的IP:B

这时网送就收到了这个IP分组,再解析帧,获得目的 IP:B,这时的网关就开始路由了,先查找路由表,确定下一跳在哪,再发送ARP请求包获得下一跳的MAC地址。

源网关MAC 目的网关MAC 源IP:A 目的IP:B

然后下一个路由收到后再解析…………

这样就一直下去,直到出口网关(也就是B所在的子网)。到C后,解析IP分组,取出TCP/UDP报文,转交给上层!

过程如下图描述

计算机网络自学之路------IP协议(2)


看跟写真是的二种完全不一样的概念,学习到很多,感觉网络很神奇,嘿嘿,进步进步~~

上一篇:python简说(十四)内置函数


下一篇:学习 Spring (六) 自动装配