【问题标题】:How IP address information is propagated from the TCP layer to the IP layer?IP 地址信息如何从 TCP 层传播到 IP 层?
【发布时间】:2021-11-01 10:58:11
【问题描述】:

在 TCP/IP 模型中,它表明应用层消息被发送到 TCP 层,TCP 层将其分解为段,并将源端口和目标端口添加到其段头中,然后到封装每个传入的 IP 层TCP 分段成 IP 数据包,并在其数据包头中添加源 IP 地址和目标 IP 地址。

源/目标 IP 地址是如何传播到 IP 层的,因为它只是(假设)接收到仅包含源/目标端口的 TCP 段?

其他一些元数据是否也跨层发送,这些元数据通过 TCP 层从应用层到 IP 层维护此 IP 地址信息?

【问题讨论】:

    标签: networking operating-system network-programming


    【解决方案1】:

    通常,甚至在数据包离开您的计算机之前,所有层都碰巧被跨越。层的观点可能会产生误导,因为它与人们对层的看法不同。从完全分层的角度来看,您有单独的层,每一层都独立于最后一层。对于网络,情况并非如此。

    应用程序(第 7 层)使用 socket() 函数创建一个套接字。套接字函数返回一个伪文件句柄,该句柄被传递给后续函数以建立连接。在此之后,应用程序创建一个结构,其中包括使用的端口(第 4 层)和目标 IP 地址(第 3 层)。然后,应用程序调用 connect,操作系统会将所有这些封装到一个带有本地 MAC 地址(第 2 层)的数据包中,以便在本地网络上使用。然后数据包离开计算机在物理介质(第 1 层)上。

    您会看到数据包已跨越所有层,最终到达物理介质,甚至在它退出您的计算机之前。因此,操作系统具有完整的上下文来创建适当的数据包以发送到路由器。 “应用程序”层可能会产生误导,因为通常它并不代表像程序这样的实际应用程序。我想说的是,在现实世界的场景中,应用程序负责做所有事情直到第 3 层,然后操作系统使用路由表等处理第 2 层和第 1 层。

    从层的角度来看,并不是只有当数据包改变网络时才跨越第 3 层。当包含端口的 TCP 数据包被封装到具有目标和源 IP 地址的数据包中时,第 3 层被跨越。这一切都发生在您的计算机中,然后被封装成具有目标和源 MAC 地址的数据包并在物理介质上发送。因此,操作系统拥有完整的上下文来创建适当的数据包以通过物理介质发送。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-26
      • 2015-06-22
      • 2012-01-31
      • 1970-01-01
      • 2021-12-05
      • 2016-04-18
      • 2013-11-01
      • 1970-01-01
      相关资源
      最近更新 更多