IP 地址在哪里是 TCP 标头 - 第 3 层如何知道应用程序正在发送数据包

Posted

技术标签:

【中文标题】IP 地址在哪里是 TCP 标头 - 第 3 层如何知道应用程序正在发送数据包【英文标题】:Where is the IP Address is a TCP header - How does Layer 3 know were aplication is sending the packet 【发布时间】:2020-04-06 07:56:45 【问题描述】:

TCP 标头包含端口信息 - 可以理解。 但是当数据包/段被发送到第 3 层以将其封装为 IP 数据包时,第 3 层如何知道要使用的目标 IP 地址 - 这是在应用程序层中指定的。 TCP 报头中没有任何地方可以通知 L3 目标 IP 地址。是否有此信息的反向渠道?如果有,什么是反向通道?

【问题讨论】:

那么,TCP层是如何知道端口号的呢?这是同一个问题。 NB TCP 不以任何方式使用osi。 所以我可能已经被教导了 6 次,并且每次都被教导上层将其“直接向下”到下层的信息传递给下层以进行进一步封装。这意味着以某种方式包含了所需的一切。另一位用户评论说,该应用程序调用了操作系统,它以某种方式通过 TCP > 网络层传递信息,这是有道理的。那将是后台通道。感谢您对 OSI 的回答! 【参考方案1】:

第 3 层如何知道要使用的目标 IP 地址 - 在应用层中指定。

信息不会以某种方式从应用层转发到网络层。如果应用程序创建一个 TCP 套接字,然后在其上调用connect,它会将 IP 地址和端口都提供给操作系统。然后,操作系统将使用这些信息将连接数据封装在 IP 数据包中。

【讨论】:

非常感谢您提供这个缺失的部分!

以上是关于IP 地址在哪里是 TCP 标头 - 第 3 层如何知道应用程序正在发送数据包的主要内容,如果未能解决你的问题,请参考以下文章

TCP / IP如何选择源IP地址[重复]

为啥tcp服务器可以获取客户端的ip?

TCP如何在解复用中读取IP地址?

苹果电脑的ip地址在哪里

如何在主机将其发送到网络之前修改数据包标头(IP标头,TCP标头)

怎样分辨出IP地址是哪里的?