【问题标题】:HTTP request from client to server. The TCP/IP stack journey从客户端到服务器的 HTTP 请求。 TCP/IP 堆栈之旅
【发布时间】:2016-02-09 22:22:03
【问题描述】:

我试图从数据包和硬件方面了解 HTTP 请求从主机到服务器的过程。

首先,HTTP 数据被放入一个 TCP 数据包(第 4 层)。然后这个包被打包成 IP 数据包(第 3 层),由 NIC(第 2 层)构成,并通过物理介质(电缆、光纤等)传输(第 1 层)到最近的路由器。

问题 1. 路由器中的 NIC(连接到客户端 LAN 的那个,因为路由器有两个 NIC)是否重建帧并将有效负载(即 IP 包)传递给路由器的处理器?这似乎合乎逻辑,但我无法在网上找到任何明确说明这一点的地方。

路由器然后有一个IP包并根据它的路由表通过另一个网卡转发它,另一个网卡将它再次成帧并传输它。

逐跳,服务器的网卡最终接收并重构帧并将它们传递给...(参见问题2)...,它解包TCP包并以某种方式读取HTTP信息并使用给定的参数执行操作。

问题 2: 内核?是负责电脑内部IP打包/解包的人吗?

问题3:如何在计算机中负责TCP和“理解”HTTP?它是操作系统的哪一部分?我猜这个也是负责理解HTTP的。

我知道还有更多细节,但整个问题会太长。我也很高兴看到有趣的链接可以深入了解此事。

【问题讨论】:

    标签: http networking tcp tcp-ip


    【解决方案1】:

    问题 1. 路由器中的网卡(连接到客户端 LAN 的网卡,因为路由器有两个网卡)是否重构帧并将有效负载(即 IP 包)传递给路由器的处理器?这似乎合乎逻辑,但我无法在网上找到任何明确说明这一点的地方。

    我不知道你所说的“重建”是什么意思。 NIC接收帧并将其传递给 CPU,可能是通过 DMA。

    路由器然后有一个IP包,并根据它的路由表通过另一个网卡转发它,它再次成帧并传输它。

    这个词是“包”,而不是“包”。否则正确。

    逐跳,服务器的网卡最终接收并重构帧

    再一次,我不知道“重建”是什么意思。帧被接收。

    并将它们传递给...(请参阅问题 2)...,它会解压缩 TCP 包并以某种方式读取 HTTP 信息并使用给定的参数执行操作。

    问题 2:内核?是负责电脑内部IP打包/解包的人吗?

    到网络堆栈的 IP 层,该层将其传递到 TCP 层,最终将数据传递给服务器应用程序。

    问题3:计算机中如何负责TCP和“理解”HTTP?

    TCP 层负责理解 TCP。 HTTP是应用层协议,被应用理解。

    它是操作系统的哪一部分?我猜这个也是理解HTTP的责任。

    没有“它”。这里有两个不同的问题,有两个不同的答案:见上文。

    【讨论】:

    • 感谢您的回答 EJP。对于“重构”,我的意思是 NIC 只接收离散信号并通过使用标志字节(加上位填充)来分离不同的帧,以了解报头和报尾的开始/结束位置,从而区分一帧与另一帧。
    • “接收”这个词已经充分说明了这一点。您在同一件事上使用了两个词。
    • 我将“接收”理解为 NIC 识别到有信号。这并不意味着 NIC 能够重建帧,因为真正损坏的信号可能不会被正确识别。你怎么看?这两个过程有不同的表示法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2015-08-02
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多