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

当TCP包从内网通过路由连接公网时,其源地址会被路由器的NAT转换为公网出口地址。NAT(网络地址转换)用于解决IP地址短缺问题,允许内网设备使用私有IP地址并通过共享的公网IP通信。路由器会维护一个转换表,确保回包能够正确路由回内网设备。这样,尽管内网设备在TCP握手时使用的源地址是内网地址,但实际通信中外部看到的是公网地址。
摘要由CSDN通过智能技术生成

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

厚开来

  • 21

发布于 2014-11-13

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

tcp路由器

关注8收藏

回复

阅读 7.7k

iamwiki: 

这不就是NAT吗大哥?这种问题居然也能上推荐……

回复2014-11-20

4 个回答

得票数最新

王子亭

  • 11.5k

发布于 2014-11-13

NAT

http://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2

回复

faker

  • 262

发布于 2014-11-13

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

回复

misasagi_kosmos

  • 72

发布于 2014-11-13

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

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

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

回复

英国口音

  • 111

发布于 2014-11-13

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

回复

撰写回答

你尚未登录,登录后可以

  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进

注册登录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值