TCP/IP详解 IP路由选择

TCP/IP详解 IP路由选择

在本篇文章当中, 将通过例子来说明IP路由选择器过程

如图所示, 主机A与主机B分别是处在两个不同的子网当中, 中间通过一个路由连接. 如果主机A请求与主机B进行通行, 主机A寻找主机B的位置的过程就可以理解为IP路由的选择过程.

现在主机A的用户通过Ping命令确认与主机B的连通性. Ping命令看似简单, 但是其中IP路由选择的过程还是会有很多的步骤. 具体的步骤如下 :

  1. 当主机A上输入12.34.56.78之后, 主机A的因特网控制报文协议(ICMP)创建一个回应请求数据包, 其数据域中只包含有字母.
  2. ICMP协议会将刚刚创建的回应请求数据包(有效负荷)转交给因特网协议(IP协议)。IP协议会对这个数据包进行封装,创建一个数据包。在IP协议创建的数据包中,包括主机A的IP地址,目的主机B的IP地址以及值为01h的协议字段。当数据包达到主机B时,主机B通过判断协议字段01h,将这个有效负荷交给ICMP协议处理。
  3. IP协议创建数据包后,会判断目的主机B的IP地址是处于本地网络中还是处于远程网络。根据IP地址规则,主机A、B属于不同网络。此时IP协议所创建的数据包会被发送到默认的网关。(在每个终端设备中,网络配置中需要包含自身的IP地址,以及默认到的网关地址。在不同网络之间的主机互相通信,依靠的就是网关设备)
  4. 如图中所示,默认的网关就是图中的路由器。此时我们需要确认路由器的MAC地址。假设路由器对应连接到主机A的路由器网络接口的IP地址为10.142.149.1,那么主机A(10.142.149.6)的默认网关配置为10.142.149.1,。现在要将IP数据包发送到对应的路由器网络接口10.142.149.1上,就必须知道这个接口的物理地址,也就是MAC地址。只有知道MAC地址,IP数据包才能够从网络层传递到底层的数据链路层并根据链路层的规则生成帧。之后主机A才能把链路层中的包发送到IP地址为10.142.149.1的路由器接口上。在本地局域网中,主机只可以通过硬件地址进行相互通信。所以当主机A要把数据包发送给对应的路由器接口时,必须提前知道这个路由器对应的MAC地址。这时就需要用到ARP协议,ARP协议的具体讲解后面会单独写一篇笔记进行分析。主机A会先检查本地的ARP缓存,查看一个默认网关的IP地址是否有对应路由器接口的MAC地址。如果ARP缓存表中有对应的记录,表示IP地址已被成功解析。此时,IP层会将数据包传递到数据链路层并生成帧。其中目的主机B的MAC地址也将和数据包一起传递到数据链路层。通常情况下,在主机A中,可以通过ARP命令来查看主机当前的IP地址与MAC地址对应表。
  5. 生成数据帧。当IP数据包和目的主机B的MAC地址传递给数据链路层后,局域网驱动器将用以提供媒体访问服务,以通过以太网进行数据传输。通过一些控制信息封装IP数据包,形成数据帧。数据帧中包含有目的主机B和源端主机A的MAC地址,以及以太网类型字段。以太网类型字段主要用来描述交付这个数据包到数据链路层的网络层协议。数据帧结尾是一种被称作为帧校验序列的字段,它装载循环冗余校验计算值的区域。总结一下,以这个例子来说,主机A的数据链路层中生成的数据帧包括目的地址MAC地址(指的是对应路由器接口的MAC地址)、主机A自身的MAC地址、以太网类型字段、数据包、帧校验序列。注意:这个传输过程中,目的地址不是主机B的MAC地址,而是与主机A对应的路由器接口的MAC地址。最后数据帧到物理层以位(bit)的形式传输。
  6. 路由器接口接收这些位(bit)并且重新合并成数据帧。接收完毕后,会进行CRC过程并核对保存在帧校验序列字段中的内容。如果值互相不匹配,则数据帧将会被丢弃。如果两个值相同,则路由器接口将会接收主机A传输过来的数据帧,并核查数据帧中的目的放的MAC地址,是否与自身MAC地址匹配。路由器还会查看数据帧的以太网类型字段,以了解在网络层采用的协议类型,然后路由器就会抽出数据帧中的数据包,丢弃其余内容。抽取后的数据包传送给以太网类型字段中列出的上层协议。在本例中为IP协议。
  7. IP协议接收这个数据包后,检查目的IP地址。在本例中,由于数据包中的目的地址与接收路由器所配置的任何地址都不相匹配,所以路由器会在自己的路由表中查看目的IP网络的地址。本例中,由于路由器同时还连接着10.142.148.10,所以在这个路由器中的路由表中,有相关的记录。若没有相关记录,则这个数据包会直接被丢弃。数据包被丢弃后,会向主机A发送一个“目标地址不可达”的错误信息。
  8. 如果路由器在它的路由表中找到了对应的网络地址记录,则数据包就会被转发到路由器的输出接口。在本例中,就是路由器用来与主机B连接的接口。路由器会将这个数据包交换到对应接口的缓冲区内。
  9. 接下来就是路由器接口缓冲区中数据包处理情况。这个接口缓冲区需要知道目的主机B地址的MAC地址。因为现在数据包中包含了目的主机B的IP地址,所以路由器会根据这个IP地址检查本地ARP缓存表,如果主机B的MAC地址已经被解析并缓存在路由器的ARP缓冲中,则这个数据包和主机B的MAC地址会被传递到数据链路层以便重新生成数据帧。在路由器以前跟主机B通信过的情况下,主机B的IP与MAC地址的映射记录会在路由器中缓存四个小时。超过四小时未再通信的话,IP与MAC地址的映射记录将会被删除。如果在路由器ARP的缓冲表中没有这个映射记录,则路由器接口被在其连接的子网内部发送一个ARP请求。ARP请求是以广播方式发送的,子网内部所有的主机都会受到这个请求,发现这个请求的主体是10.142.148.10的MAC地址。这时各个主机会检查自己的IP地址,发现不匹配,就会抛弃这个ARP请求包。而主机B检查自己的IP地址,发现匹配成功,这时主机B就会进行响应,将自己的MAC地址告诉路由器。因此路由器就能够得知目的主机B的IP地址和MAC地址,就会把数据包和目的主机B的MAC地址传递到底层的数据链路层中。当然这时,路由器也会把主机B的IP地址和MAC地址缓存到自己的ARP缓冲表中,以备下次使用。
  10. 路由器随后会生成数据帧,传送到物理层,以位的方式发送到物理媒体上,在网络介质上进行传输。
  11. 主机B接收到数据帧后进行CRC校验过程。校验结果与帧校验序列中字段内容相同的话,则数据帧中目的方的MAC地址会被读取,主机B会比对这个MAC地址与自己的MAC地址是否相同。如果相同,则会抽取其中的数据包,并根据以太网字段类型中指定的协议,把数据包传递给相应的协议处理。在本例中,数据包中是一个回应请求,所以主机B会把这个数据包最终交给ICMP协议处理。ICMP协议会应答这个请求,同时把这个数据包丢弃并迅速生成一个新的有效负荷作为回应应答。然后主机B会利用同样的过程把数据包以及目的MAC地址传递到下一层,让其生成数据帧,通过物理介质传递到对应的路由器接口上。
  12. 路由器会重复上面对应的步骤,把数据包转交到另一个接口上进行传递,随后主机A就接收到一个回应应答信息,表示主机A到主机B的网络是通的。

总结 : 以上就基本阐述了IP路由选择的全部过程。在本篇笔记中,列举的是一个路由器节点的例子。像多路由器的转发的情况也是同一个道理,到达每个路由器时都会先搜索路由表,以确定下一步数据传输到哪里或者是丢弃。大致步骤都是相同的,对于IP数据包,其在网络中的流向基本上是一个套路:

  • 主机A的传输层将数据交给网络层,网络层添加IP首部,如双方IP地址,TTL等信息,封装称为IP数据包,然后通过ARP协议获取目的MAC地址后,将数据包交给数据链路层。
  • 数据链路层根据IP、MAC地址,将数据帧封装为物理帧,通过物理媒体传输。
  • 主机B接收物理帧,判断MAC地址。如果与自己MAC地址匹配,就把数据帧交给网络层处理。
  • 网络层判断IP地址是否匹配,如果是发给自己的,则再移交上层协议处理;如果不是,则在路由表中查找此IP地址的下一跳地址,并将数据通过内存从接受数据网卡的IP程序copy到发送数据网卡的IP地址。在发送接口中, 通过ARP请求获取下一跳的MAC地址,IP程序将数据包和目的MAC地址交给数据链路层,然后封装为数据帧,通过物理媒体传输数据帧。

在IP路由选择的过程中,我们可以发现路由表的作用是不可或缺的。下一跳的地址还是直接丢弃数据包,都是与路由表息息相关。下一篇笔记将会简单介绍一下路由表的形式与作用。

原文地址:https://www.cnblogs.com/Dr-wei/p/11966224.html

时间: 2024-08-01 18:33:22

TCP/IP详解 IP路由选择的相关文章

tcp/ip详解-ip头部选项字段

IP头部的选项字段 作用:用于网络调试和测试 IP首部的可变部分就是一个可选字段.选项字段用来支持排错.测量以及安全等措施,内容很丰富.此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目.某些选项项目只需要1个字节,它只包括1个字节的选项代码.但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍. 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的.这就增加了每一个路由器处理数据报的

《TCP/IP详解卷1:协议》第3章 IP:网际协议(1)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 1.引言 IP是TCP/IP协议族中最核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠.无连接的数据报传送服务. (1)不可靠 它不能保证IP数据报能成功地到达目的地.IP仅提供最好的传输服务.如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端.

《TCP/IP详解卷2:实现》笔记--IP多播

D类IP地址(224.0.0.0到239.255.255.255)不识别互联网内的单个接口,但识别接口组,被称为多播组. 单个网络上的组成员利用IGMP协议在系统之间通信.多播路由器用多播选录协议,如DVMRP(distance vector multicast routing protocol,距离向量多播路由选择协议)传播成员信息. 在Net/3中,如果某个接口支持多播,那么在接口ifnet结构中的if_flags的标识IFF_MULTICAST比特就被打开. RFC 1112描述了多播对主

TCP、IP详解(转)

注:因在网上看到有位大神写的不错,就借鉴下了 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人

TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

《TCP/IP详解卷2:实现》笔记--IP选项处理

IP输入函数(ipintr)将在验证分组格式(检验和,长度等)之后,确定分组是否到达目的地之前,对选项进行处理.这表明分组所 遇到的每个路由器以及最终的目的主机都对要分组的选项进行处理. IP分组内可以包含某些在分组被转发或被接收之前处理的可选字段.IP实现可以用任意顺序处理选项.标准IP首部之后最多可跟 40字节的选项. 1.选项格式 IP选项字段可能包含0个或多个单独选项.选项有两种类型,单字节和多字节.如图所示: 所有选项都以1字节类型type字段开始.在多字节选项中,类型字段后面紧接着一

TCP/IP详解 (转)

TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义

《TCP/IP详解》

[TCP的那些事儿]TCP是个巨复杂的协议,而且不断地改进中.所以学习TCP本身是个比较痛苦的过程,但这个过程却能让人有很多收获.希望这篇快餐科普性文章能在快餐文化下让你对TCP有了解,并可以促发你对基础知识的兴趣和学习欲望. http://coolshell.cn/articles/11564.html http://coolshell.cn/articles/11609.html 大家知道,TCP/IP已成为计算机网络的事实上的标准.在关于TCP/IP的论著中,最有影响的就是两部著作.一部是

《TCP/IP详解卷1:协议》第14章 DNS:域名系统---读书笔记

<TCP/IP详解卷1:协议>第14章 DNS:域名系统---读书笔记 1.引言 5.指针查询 DNS中一直难于理解的部分就是指针查询方式,即给定一个IP地址,返回与该地址对应的域名. 当一个组织加入Internet,并获得DNS域名空间的授权,如noao.edu,则它们也获得了对应IP地址的in-addr.arpa域名空间的授权.在noao.edu这个例子中,它的网络号是140.252的B类网络.在DNS树中结点in-addr.arpa的下一级必须是该IP地址的第一字节(例中为140),再下