一文读懂计算机网络--两台pc机之间的交互过程

写在前头:

我时常在思考,两台pc机之间是怎么交互的,整个网络到底都做了什么,看了很多的网上资料,感觉讲的也可以,不过就是没有具体的串成一条线。故而我想通过自己的理解整理一下,如有不对之处,还请大佬们不吝赐教。

正文:

当我们在访问框中输入www.baidu.com时,它会通过dns进行域名解析,获取目标主机的ip。 此时,它的请求消息中,其实已经知道了目标主机的ip和端口(端口号知道是因为,不同的服务事先都设定好了端口号,当访问某个服务时,我们可以很容易的知道该服务的端口号)。

应用层: 首先在应用层把请求报文信息包裹起来,通过socket套接字 (位于应用层和传输层之间) 将ip和端口号附上,之后传给 传输层 ,传输层选择是udp传输还是tcp传输(其实严格来讲,这一步也是在socket中完成的,传输层其实就是根据所选择的协议,进行可靠或者不可靠传输)。之后再 传给网络层,网络层中得代表就是路由器了,将数据传到路由器,路由器之间根据最短路等策略进行“跳”的动作,每个路由器需要通过ARP协议将目标ip转换成对应的物理Mac地址,通过Mac地址定位路由器的某个接口,当到达目标pc机的子网时(即网关位置时),通过ip定位子网(外网)的目的实现,然后进入链路层,同样还是用到ARP协议,通过ARP协议获取子网中目标pc的Mac地址,从而定位到目标pc机,最底层的传输过程是在物理层,数字信号传输。另外,此过程中,每一层都会相应的被包裹一次。 假设此时源主机是在一个局域网中,它和好多台主机连接在一个交换机上,同时多组交换机之上又连接了路由器,通过路由器又把多个不同的网络连接起来。 以此图为例:


此时网络1中的主机x向网络2中的主机y,发送消息。

首先内网中的192.168.52.37 要找 20.39.57.99,先通过ARP协议,将20.39.57.99的mac地址映射到交换机的mac地址,此时到达交换机位置。

之后,继续找20.39.57.99,通过ARP协议,将20.39.57.99的mac地址映射到路由器的mac地址,此时到达路由器的位置。同时,通过NAT协议,将源ip映射为:20.32.15.6。

在当前路由器下,继续找20.39.57.99,还是通过ARP协议映射对应的mac地址,进而跳到第二个路由器上,该路由器再通过NAT协议,将目标主机的ip映射回:192.168.32.31。

最后,在网络二中继续寻找目标主机,仍通过ARP协议,将192.168.32.31映射到主机y的mac地址,从而找到主机y,接着通过目标主机的端口号,定位相应的服务,至此一次交互流程基本完成。

总结:

通过ip地址来确认属于那个网络 通过mac地址来确定某个网络中的那台机器、那个交换机接口或那个路由器接口 通过端口号来确定那个具体的应用、那个线程

参考:

分享一句话,与大家共勉,唯有热爱,方能抵御岁月漫长

经验分享 程序员 微信小程序 职场和发展