Computer互连网通信进程难点浅析,使用IP地址通讯时数据转载的流水生产线葡萄娱乐场

ip数据包经由路由转载的时候源ip,目标ip是还是不是变动?

1. 背景:

在复习Computer通讯相关的学识的时候,有境遇1个难点:互连网中两台主机A和B使用IP地址实行通讯时,数据包是怎么转车的?

日前面试网络方面包车型大巴常常问到那些难题,答案是不可能改动的,\唯有做了nat调换本事改换*。

二. 有血有肉的流水生产线:

  1. 主机A打算通过IP地址向长机B发送音信,首先在主机A的网络层中对数码举行组装,个中:

源IP地址:A的IP地址
目的IP地址:B的IP地址

  1. 在主机A的互连网层,首先剖断主机B的IP地址与主机A是不是时属于同三个字网,具体的做法是:主机A使用自个儿的字网掩码与主机B的IP地址进行“与”运算,获得的结果跟主机A的网络地址进行自己检查自纠,倘使相同则表示A和B属于同1子网,不然属于差异的字网。

  2. 若A和B属于同一子网,假诺A知道B的MAC地址,则在主机A的多寡链路层把IP数据包封装成“帧”的款式,在那之中:

    源MAC地址:A的MAC地址
    目的MAC地址:B的MAC地址
    源IP地址:A的IP地址
    目的IP地址:B的IP地址

    若果A不明了B的MAC地址,则运用ARP协议,发送一个数目包来获取B的MAC地址,获得之后,在动用同一的措施来对IP数据包实行打包。然后径直发给主机B,至此实现多少传输。
    若A和B属于分裂的子网,A会利用ARP协议发送多个ARP数据包来获取与A相连
    接的路由器一的MAC地址,之后再在多少链路层对IP数据包举行打包,在那之中:

    源MAC地址:A的MAC地址
    目的MAC地址:路由器1的MAC地址
    源IP地址:A的IP地址
    目的IP地址:B的IP地址

    然后再把包裹好的多少帧发送给与A相连接的网关一.

  3. 路由器一取出来自内部主机A的数据帧后,知道主机A希望团结转载这些数据帧,于是它就招来本人的路由表,路由器的路由表可以有二种方法实行得到:1是管理员手动增加,称为静态配置,另壹种是透过路由器转载的记录自动得到,称为动态配置。在路由表中查到有与指标IP地址互连网地址相呼应的下3个路由地址后,那里固然为路由器二,就会对来自A的数据帧进行组合,重组后:

    源MAC地址:路由器1的MAC地址
    目的MAC地址:路由器2的MAC地址
    源IP地址:A的IP地址
    目的IP地址:B的IP地址

即便在路由器一的路由表中尚无找到与主机B的互联网地址相关的下三个路由地址,就会把数量发送到路由表中的私下认可路由地方,那是构成后的数据帧中:

源MAC地址:路由器1的MAC地址
目标MAC地址:暗中认可路由的MAC地址
源IP地址:A的IP地址
目的IP地址:B的IP地址

  1. 路由器二在收取到路由器1发来的数量后,首先举办剖断目标IP地址即主机B的IP地址是还是不是团结的本地网络内的,纵然是团结所在的子网,则不在举办中间转播,将选用的数额开始展览重新打包:

源MAC地址:路由器2的MAC地址
目的MAC地址:主机B的MAC地址
源IP地址:A的IP地址
目的IP地址:B的IP地址

中间主机B的MAC地址能够透过ARP协议得到。封装过后再发放主机B,至此数据传输实现。如若不是,所做的事情跟在此之前路由器1一样,对其重新实行打包后再转车。

  1. 接下去的每一跳中,经过的路由器举行转向的时候所做的办事就跟路由器二所做的劳作同样,直到找到目标IP(主机B)所在的互联网。

  2. 须求专注的事:


  • 沿途所通过的中间转播的路由器它们并不知道从主机A到主机B完整的路由路线,它们只是精晓自身应该转载的下二个的路由地址。
  • 数据包在被转载的长河中源、指标MAC地址会被涂改,可是相关的IP地址不会被涂改。
  • 上述所讲的路由器也足以通晓为网关。
  • 在UNIX下能够动用命令traceroute + 网址来对完全的路由消息举行追踪。

只是mac地址是变化的,因为发送端起来不清楚目标主机的mac地址,所以每经过1个路由器mac地址是浮动的。

目标mac地址是如何赢得的?

TCP/IP里面是用的ARP协议。比如新建了1个内网,假诺一台机器A找机器B,封装FRAME时(OSI的第1层用的多少格式),要卷入对方的MAC,发轫时A不亮堂B的MAC,只略知12IP,它就发三个ARP包,源IP是团结的,指标IP是B的,源MAC是自身的,指标MAC是广播的。然后这些请求包在内网内被广播,当别的机器接到这一个包时,用目标IP和友好的IP相比较,不是的话就撇下。B接到时,发现IP与本身的1律,就答应这么些包的央浼,把温馨的MAC送给A。假使B是别的子网的机器,那么路由器会剖断出B是其它子网,然后路由器把本身的MAC重临给A,A以往再给B发包时,目标MAC封装的是路由器的。

路由转载过程:

当主机A发向主机B的数据流在网络层封装成IP数据包,IP数据包的首部包括了源地址和目的地址。主机A会用本机配置的2十二人IP互联网掩码255.255.255.0与目的地方举办与运算,得出指标互连网地址与本机的网络地址是或不是在同一个网段中。1经不是将IP数据包转发到网关。

在发往网关前主机A还会透过ARP的恳求获得暗中同意网关的MAC地址。在主机A数据链路层IP数据包封装成以太网数据帧,然后才发住到网关……也正是路由器上的贰个端口。

当网关路由器接收到以太网数据帧时,发现数据帧中的目的MAC地址是团结的某一个端口的物理地址,那时路由器会把以太网数据帧的卷入去掉。路由器以为那些IP数据包是要透过自个儿举办转向,接着它就在相配路由表。相配到路由项后,它就将包发往下一条地点。

路由器转载数量包就是那样,所以它一向是不会改IP地址的。只会改MAC.

当有多少包传到路由器时,路由器首先将其的目标地址与路由表进行比较,要是是本地互联网,将不会议及展览开转账到外互连网,而是径直转载给本地网内的指标主机;可是倘使指标地址经路由表相比较,发现不是在本网中,有nat就将转移源地址的IP(原源地址的Ip地址改为了路由器的IP地址),路由器将数据包转载到对应的端口,实行通讯。

比如: 
如:A访问B, 
率先对比是不是同一子网,如若是,检查ARP表,有B的MAC就径直发送,没有就发送ARP请求.如若否,发送到暗许网关C,源IP为A,源MAC为A,目标IP为B,指标MAC地址为C, 
C接收到那些包,检查路由表,发送到下1跳D,源IP为A,源MAC为C,目标IP为B,指标MAC为D….. 
这么循环往复,直到发送到B.

NAT为特殊应用,会修改源IP为网关自身外网IP。