TCP包在经过路由的时候有什么变化?

发布于 2022-08-30 00:09:17 字数 135 浏览 13 评论 0

最近在看一些关于TCP协议方面的文章,有一点比较困惑,如果两个机器都在公网还好说,A和B之间都是透明的,但如果A在某个内网里面,是通过路由连接上公网的。那么A在跟B握手的时候告诉它的那个自己的地址岂不是一个内网地址,或者这个包在经过路由的时候被更改了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不必在意 2022-09-06 00:09:17

按照我的理解,变动的应该是TCP包的IP头,TCP包作为IP包的body是不会变化的。因为TCP在传输层,经过路由器是经过网络层,IP包在网络上传输要经过好多路由器,就像是好多跳(TTL减1)。
参考 《计算机网络》 谢希仁 第五版

书间行客 2022-09-06 00:09:17

在网络上,每个设备其实并不需要在意网络环境如何,之需要照规矩发包就行了。
在A发给B的包中,确实缘地址是一个内网地址,而目标地址是一个公网地址。
而实际上B收到的包,源地址是A上游网关的公网地址,目标地址是自己。

这中间有一个NAT的概念。
因为网络飞速发展,而ipv4又过于老旧,人们发明IPv4的时候并没有想到现在一个人会有一个,几个,甚至e十几个可以联网的设备,导致IP地址枯竭。而我们不对外提供服务的设备实际上并不需要独占的公网地址。所以实际上我们在和别人共用一个公网的ip地址。这个将我们的内网地址转化为公网地址的过程就叫NAT。
当A源地址是一个内网ip的包发送至运营商的网关时,会被网关的NAT将源地址转换为该网关的公网ip,你的源tcp端口可能会被换掉,但是网关会维护一个转换表,当受到B的回包时,网关会将来自B包的目标tcp端口再转化回来。
当然,这一切对内网内的设备来说都是封装的。结果就是大家都能正常上网。

可见这实际上也是对内网设备的一种保护措施,即如果不存在网关维护的这个转换表,外网的设备就无法和内网进行通讯,但是外网设备是可以和网关通信的,所以一般这个网关会是防火墙一类的设备。

梅倚清风 2022-09-06 00:09:17

每个内网都会有一个或多个出口的,数据包到达了出口路由后,ip报头会被改成出口的公网ip(这个过程一般用到NAPT)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文