协议森林学习笔记(三)

三、网络层协议

1. 在网络层面上各局域网根据IP协议相互连接,最终构成覆盖全球的Internet。更高层的协议,无论是TCP还是UDP,必须通过网络层的IP数据包来传递信息。操作系统也会提供该层的socket,从而允许用户直接操作IP包。IP数据包是符合IP协议的信息(0/1序列),分为头部和数据两部分。IP协议分为IPv4和IPv6两种。IPv6是改进版本,用于在未来取代后者。

 1.1     IP地址:IP包头部的发出地(source address)和目的地(destination address)都是IP地址。IPv4的地址为4 bytes的长度(32位)。通常将IPv4的地址分为4个十进制的数,每个数的范围为0-255,如192.0.0.1。填写在IP包头部的是该地址的二进制形式。IP地址是全球地址,它可以识别局域网和主机。( IPv6地址是128位0/1序列,也按照8位分割,以16进制来记录每一段,段与段之间以:分隔。)

   1.1.1.     IP地址分类:IP地址的32位分为两部分,第一部分用来区分局域网,第二个部分用来区分该局域网的主机。子网掩码(Subnet Mask)告诉我们这两部分的分界线,比如A类的255.0.0.0(8个1和24个0)表示前8位用于区分局域网,后24位用于区分主机。同理一个B类范围的IP地址,它的前16位和后16位分别表示局域网和主机。

 

       IP class       From                 To                  Subnet Mask

         A          1.0.0.0       126.255.255.255      255.0.0.0

            B        128.0.0.0     191.255.255.255     255.255.0.0

         C        192.0.0.0     223.255.255.255    255.255.255.0

 

   1.1.2.     网卡:IP地址实际上识别的是网卡(NIC),网卡是计算机的一个硬件,他在接收到网路信息后,将信息交给计算机(处理器/内存),当计算机需要发送信息的时候也通过网卡发送。一台计算机可以有不止一个网卡,如以太网卡和WiFi网卡。

   1.1.3.     路由器:实际上是一台配备有多个网卡的专用电脑,他让网卡接入到不同的网络中。

  1.2     IP包的传输要通过路由器的接力。每一个主机和路由中都存有一个路由表(routing table)。路由表根据目的地的IP地址,规定了等待发送的IP包所应该走的路线。

   1.2.1.     IP包从发出主机生成并发送,中间的router在收到IP包之后(实际上是收到以太协议的帧,然后从帧中的payload读取IP包),提取目的地IP地址,然后对照自己的routing table进行下一步的指导,IP包最终到达某个router,这个router与目标主机位于一个局域网中,可以直接建立连接层的通信。最后,IP包被送到目标主机。这样一个过程叫做routing(我们就叫IP包接力好了,路由这个词实在是混合了太多的意思)。

   1.2.2.     整个过程,IP包不断被主机和路由封装入帧并拆开,然后借助连接层,在局域网的各NIC间传送帧。过程中IP包的内容保持完整没有发生变化。最终的效果是一个IP包从一个主机传送到另一个主机,不需要去操心底层(如连接层)发生了什么。

   1.2.3.     ARP协议:上述过程实际上假设了,每一台主机和路由都能了解局域网内IP地址和MAC地址的对应关系,这是实现IP包封装到帧的基本条件。ARP协议只用于IPv4。IPv6使用Neighbor Discovery Protocol来替代ARP的功能。

     1.2.3.1.    IP地址与MAC地址的对应是通过ARP协议传播到局域网的每个主机和路由。每一台主机或路由中都有一个ARP cache,用以存储局域网内IP地址和MAC地址如何对应。(ARP介于连接层和网络层之间,ARP包需要包裹在一个帧中)

     1.2.3.2.    ARP协议的工作方式:主机会发出一个ARP包,包中含有自己的IP地址和MAC地址。通过ARP包,主机以广播的形式询问局域网上所有的主机和路由:我是IP地址xxxx,我的MAC地址是xxxx,有人知道199.165.146.4的MAC地址吗?拥有该IP地址的主机会回复发出请求的主机:这个IP地址属于我的一个NIC,它的MAC地址是xxxxxx。

     1.2.3.3.    由于发送ARP请求的主机采取的是广播形式,并附带有自己的IP地址和MAC地址,其他的主机和路由会同时检查自己的ARP cache,如果不符合,则更新自己的ARP cache。这样,经过几次ARP请求之后,ARP cache会达到稳定。如果局域网上设备发生变动,ARP重复上面过程。

   1.2.4.     RIP协议:另一个假设,是每个主机和路由上都已经有了合理的routing table来描述网络的拓扑结构,利用RIP(Routing Information Protocol)生成routing table。它通过距离来决定routing table,属于distance-vector protocol。对于RIP来说,距离是从出发地到目的地途径的路由器数目(hop number)。

     1.2.4.1.    根据RIP协议,向周围的路由器和主机广播自己前往各IP的距离。收到RIP包的路由器和主机根据RIP包和自己到发送RIP包的主机的距离,算出自己前往各个IP的距离。上述过程在各个点不断重复RIP广播/计算距离/更新routing table的过程,最终所有的主机和路由器都能生成最合理的路径(merge)。

     1.2.4.2.    RIP出于技术上的原因(looping hops),认为距离超过15的IP不可到达。所以RIP更多用于互联网的一部分(比如整个中国电信的网络)。这样一个互联网的部分往往属于同一个ISP或者有同一个管理机构,所以叫做自治系统(AS,autonomous system)。

     1.2.4.3.    AS内部的主机和路由根据通向外部的边界路由器来和其它AS通信。各边界路由器之间通过BGP协议(Border Gateway Protocol)生成自己前往其它AS的routing table。BGP的基本工作过程与RIP类似,但在考虑距离的同时,也权衡政策、连接性能等其他因素,再决定routing table。

2. IP协议的一个重要补充是ICMP协议,介于网络层和传输层,基于IP协议因此一个ICMP包需要封装在IP包中,然后在互联网传送。主要功能是传输网络诊断信息,传输的信息可以分为两类。

 2.1     一是错误信息,用来诊断网络故障。IP协议的工作方式是“Best Effort”,如果IP包没有被传送到目的地或者发生错误,上游发送IP包的主机和接力的路由器并不会知道下游发生了错误和故障,它们可能继续发送IP包。通过ICMP包,下游的路由器和主机可以将错误信息汇报给上游,从而让上游的路由器和主机进行调整。

 2.2     另一类信息是咨询性质的,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。

posted @ 2019-10-12 16:28  一碗粥粥粥呀  阅读(94)  评论(0)    收藏  举报