想问一下,tcp/ip协议中的三次握手的ack包是如何能正确找到发起链接请求的主机的?

发布于 2022-09-12 03:20:06 字数 195 浏览 29 评论 0

在tcp/ip协议的三次握手过程中,c向s发起链接申请,先是c向s发一个syn请求包,s收到c的syn包之后,s也会向c发一个ack包。c向s发的syn包,通过ip下一跳以及arp协议,就能找到s,因为s有独立唯一的公网ip。但是s发给c的ack包,c是没有独立ip的,这个ack包如何能够找到c的?比如mqtt协议推送消息给app,从协议的角度,消息是如何能够到达app的?

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

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

发布评论

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

评论(1

孤独难免 2022-09-19 03:20:06

s->c 走的是 网关路由器。

路由器NAT:https://www.zhihu.com/questio...

比如 c (192.168.0.1) 网关g(8.8.1.1) 服务器s(8.4.1.1)


c发送数据包:
源IP 192.168.0.1 端口 19201
目标IP 8.4.1.1 端口 8080


经过网关g
会变成
源IP 8.8.1.1 端口 10201
目标IP 8.4.1.1 端口 8080

同时记录映射关系
源IP 192.168.0.1 端口 19201 -> 端口 10201


服务器s收到数据包,
源IP 8.8.1.1 端口 10201
目标IP 8.4.1.1 端口 8080

回复:
源IP 8.4.1.1 端口 8080
目标IP 8.8.1.1 端口 10201


经过网关g
根据映射关系查找
源IP 192.168.0.1 端口 19201 -> 端口 10201

变成
源IP 8.4.1.1 端口 8080
目标IP 192.168.0.1 端口 19201


c收到 s的数据包
源IP 8.4.1.1 端口 8080
目标IP 192.168.0.1 端口 19201

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