网络之间的连接

主要研究了一下一次完整的网络请求所经历的几个步骤对OSI模型的二三层,特别是在数据链路层传中的ARP进行了初步的认知。
大致可以看下这段文字

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

也就是说我们通信的时候不管怎么样都是需要获取Mac地址的,在同一个网络下可以直接使用ARP协议发送一个数据包。但是在不同的子网络下就是交给网关去处理。比如子网A下的a主机放送给子网B下的c数据时该怎么办呢?需要用到ARP协议吗。答案是肯定的。首先a找到网关的时候就要发送数据给网关,这里需要知道网关的ip地址和网关的mac地址,获取网关的mac地址就需要用到ARP协议,然后网关需要找到发送数据目的地建立连接,那么就又需要和子网B的网关建立连接发送数据,这里需要用到arp吗?那就看需要看第二层传递方式如果是以太网就需要用到ARP,如果是其他的传递方式可能就不需要(反正知道如果是),所以决定是否需要ARP,是由二层封装方式决定的。但是到了这里怎么和公网相连呢?如果是以太网就可能做一次广播,广播给他所在局域网内的网关。可能会通过多次路由转换到达目的地。
A-R1-R2-R3-B
A想要找到B,则只知道B的ip地址和自己的ip地址,对于A来说,B不在本地的链路上(B与A不属于同一个子网)则数据就交给路由器(网关)来处理。如果网关mac地址在本地ARP缓存中就直接连,如果没有就发起arp请求。到了R2收到数据包进行拆解,要找的IP地址是B,又不在自己的子网下,就交给R1的网关R2来处理,R2收到后重复前面的步骤交给网关R3,R3收到数据发现是在自己的子网下,就交给B来处理。
但是这里的原地址和目标地址是不会变得。
如果路由器实现NAT功能的话就是以下模式:
就比如是这个样子的:
A(10.1.1.2)—-|
B(10.1.1.3) —|
C(10.1.1.4)—| -GW(1.1.1.1)-Internet -Server 2.2.2.2

A 使用TCP Port 1025 访问 server TCP 80
B 使用TCP Port 1025 访问 server TCP 80
C 使用TCP Port 2000 访问 server TCP 443

Gateway 上的NAT table 如下:
10.1.1.2 + TCP 1025 <—-> 1.1.1.1 + TCP 1025
10.1.1.3 + TCP 1025 <—-> 1.1.1.1 + TCP 1026
10.1.1.4 + TCP 2000 <—-> 1.1.1.1 + TCP 1027
通过以上IP地址+ TCP端口号的映射,Gateway 可以唯一区分任何一个host。

注意这里A的数据到了网关(路由器)之后,网关(路由器)会对数据进行处理,把发送端的ip地址从A的ip地址改为网关的公网ip地址,再去发送数据包给其他的路由器。其他的路由器如果收到数据包,如果仍需要转发的话,依然需要把发送端的ip改为本公网的ip地址。那他们以自己的公网ip发送之后怎么如何区分数据是给谁的呢(毕竟每个公网下的子网都有很多ip地址)?那就是用到了上面的NAT table,做一个映射关系。
所以路由器使用NAT功能和不使用的时候数据包中的源IP地址是有不同的,一个是永远不变,NAT功能的话转发时源IP地址改为自己的公网IP。
以上仅为个人认知,仅供参考,若存在纰漏,欢迎指出,因为网络这块内容不是三言两语能解释完的,但是大致的思路就是这样子。
推荐几篇文章加深理解:
阮一峰的网络协议入门(一)
阮一峰的网络协议入门(二)
关于NAT理解
关于ARP协议的知乎讨论
内网和外网之间的通信
MAC地址表、ARP缓存表以及路由表

#

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×