tcp / udp连接如何工作?

时间:2018-10-31 09:20:22

标签: networking tcp dns udp router

我想问一个一般的新手问题。我了解到,要使位置A的计算机连接到位置B的服务器,必须将数据包通过多个网关和多个验证通道发送到多个数据中心,以确保连接请求找到正确的目的地。

但是,建立连接后,当计算机和服务器发送/接收数据时,这些数据是否仍然需要通过[通过多个网关和多个验证通道的多个数据中心]?

2 个答案:

答案 0 :(得分:0)

每个TCP / UDP数据包在源到目标之间可以具有不同的网络路径。但是,有状态的TCP连接的连接建立完全取决于什么数据包大小,压缩方法等。

在网络层-连接是无状态的。请详细了解OSI模型,您也可以参考此https://www.ccnahub.com/wp-content/uploads/2013/09/watermarked-pc1-comm.jpg,它对OSI的工作原理有很好的解释。

答案 1 :(得分:0)

从计算机A发送到计算机B的TCP数据包将被寻址到特定的IP地址。如果该TCP地址不在本地LAN上,它将首先通过本地LAN到达指定为本地网关的地址。然后,该网关通过连接将其发送到外部网络。届时,它将被传送到ISP中的某些路由器。该路由器将查看目标IP地址,并查询路由表以查找下一步应将数据包发送到的位置。那通常是网络中其他地方的另一个路由器。这将继续,并且(假设每个路由器中都有良好的路由表)数据包将在每个跃点上接近其最终目标。最终,数据包将到达具有路由表的路由器,该路由表知道该IP地址的实际IP地址或家庭网关,然后将数据包发送到该网关。然后,该家庭网关可以将数据包传递到该实际IP地址。在某些情况下,两端可能会有一个专用网络,其中专用IP地址/端口组合会转换为公用IP地址,反之亦然。

如果计算机A向计算机B发送多个数据包,则它们不必都走完全相同的路径,尽管通常它们会走(假设两个端点之间的网络没有问题或拥塞)。

在这种情况下,A和B在不同的专用网络上,计算机A和计算机B之间没有直接连接,因此每个数据包都必须遵循从一个路由器到下一个路由器的路径,直到到达最终网关为止,然后目的地址。

  

但是,建立连接后,当计算机和服务器发送/接收数据时,这些数据是否仍然需要通过[通过多个网关和多个验证通道的多个数据中心]?

如果路由器正确地执行其工作,则第一个数据包将采用网络知道的从A到B的最有效路径。没有“更好”的方式来发送后续数据包。随后的数据包将遵循相同的过程(对于路由器,路由器在路由表中查找要发送下一跳的路由器,依此类推)。如果两个端点相距很远(就网络拓扑而言),则数据包可能会通过许多路由器。路由器是经过高度优化的设备,能够每秒传输数百万个数据包,因为这是数据在任何TCP / IP网络(如互联网)上移动的方式。

第一个启动TCP连接的数据包与后续数据包的流向没有区别。在网络级别,它们只是从源IP地址传输到目标IP地址的数据包。建立连接后,将启动可靠性层以跟踪可能丢失的数据包,启动重传等...但是,这与给定数据包从A到B的获取方式无关。