问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

记一次完整的网络通信过程

创作时间:
作者:
@小白创作中心

记一次完整的网络通信过程

引用
1
来源
1.
https://cloud.tencent.com/developer/article/1173767

网络通信是计算机网络中最重要的功能之一,它使得不同主机之间能够互相交换数据。本文将详细介绍网络通信的基本过程,包括同一网段内和跨网段主机通信的完整流程。

通用流程

网络设备之间的通信首先会经过如下两个步骤:

  1. 发送主机应用程序生成数据,准备向外发送一个数据包;
  2. 发送主机(TCP/IP协议栈)判断这个数据包的目的地址是否在同一个网段:本机IP地址和目的IP地址分别与本机子网掩码作按位与操作,结果一致则在同一网段,否则两者分别位处不同网段,针对两种不同情况,通信流程也有明显差异。

注意:网关通常指的是路由器的一个物理端口,此时路由器称为“网关路由器”。路由器转发数据包时不会对它的源IP地址和目的IP地址做修改,只会修改MAC地址。

网内通信

网内通信,即通信双方都位处同一网段中,数据传输无需经过路由器(或三层交换机),即可由本网段自主完成。

以下图拓扑为例:

在第一节的两个步骤基础上,若目的主机与发送主机属于同一网段,假设发送主机的ARP表中并无目的主机对应的表项,则发送主机会以目的主机IP地址为内容,广播ARP请求以期获知目的主机MAC地址,并通过交换机(除到达端口之外的所有端口发送,即洪泛(Flooding))向全网段主机转发,而只有目的主机接收到此ARP请求后会将自己的MAC地址和IP地址装入ARP应答后将其回复给发送主机,发送主机接收到此ARP应答后,从中提取目的主机的MAC地址,并在其ARP表中建立目的主机的对应表项(IP地址到MAC地址的映射),之后即可向目的主机发送数据,将待发送数据封装成帧,并通过二层设备(如交换机)转发至本网段内的目的主机,自此完成通信。

网际通信

网际通信,即通信双方分处不同网段,数据传输需经过路由器(或三层交换机)才能完成不同网段的通信。

以下图拓扑为例:

在第一节的两个步骤基础上,若目的主机与发送主机不在同一网段,则需进行以下五个步骤:

  1. 假设发送主机的路由表中也无目的主机所在网段对应的表项,发送主机会将此数据包先发送至默认网关,由默认网关完成转发,假设发送主机的ARP表中并无默认网关对应的表项,则进行上一节中相同的ARP过程以获知默认网关MAC地址,之后根据此MAC地址,本机将数据包封装成帧后发送给默认网关。值得注意的是,此数据包的目的MAC地址为默认网关的MAC地址,而目的IP地址仍为目的主机的IP地址,即:源、目的MAC地址在帧转发过程中会被修改为本跳和下一跳的MAC地址,而源、目的IP地址则始终不变;
  2. 假设两个通信网段仅通过此默认网关连接(两个网段之间只有默认网关这一跳),默认网关提取数据包的目的IP地址,并查找路由表对应表项,通过与每个表项的掩码(Genmask)进行按位与操作,得到的结果如果与对应目的网段(Destination)相同,在本例中将会找到一个满足要求的路由表项,并发现此表项指示的下一跳(Gateway)的IP地址为0.0.0.0,即说明目的主机属于与该网关的某个端口(由Iface指示)直连的网段,会向该端口转发此数据包,但在此之前,假设网关的ARP表项中并无目的主机对应的表项,那么它还是需要向目的网段广播ARP请求以获知目的主机的MAC地址,并随后以此MAC地址作为目的MAC地址,以路由表项Iface指示的端口的MAC地址为源MAC地址,将数据包封装成帧向目的主机发送。
  3. 假设两个通信网段之间包含不止一跳,那么默认网关进行步骤2类似过程,重新封装数据包转发到下一个网关;
  4. 直到网关发现目的网段与本机的某个端口直连,再行获取目的主机的MAC地址,并将数据包重新封装成帧发送到目的主机网卡;
  5. 目的主机协议栈验证目的IP地址是自身的IP地址后交付给上层应用,自此完成通信。

总结

本文详细介绍了网络通信的基本过程,包括同一网段内和跨网段主机通信的完整流程。通过具体的示例和图解,帮助读者理解通信过程中各硬件设备和网络协议的协同工作流程。随着网络技术的不断发展,网络通信也在向着更高速、更智能的方向发展,例如SDN(软件定义网络)和NFV(网络功能虚拟化)等新技术正在改变着网络通信的架构和方式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号