从客户端到服务器的HTTP请求。 TCP / IP堆栈之旅

时间:2016-02-09 22:22:03

标签: http networking tcp tcp-ip

我正在尝试理解HTTP请求在其通过的数据包和硬件方面从主机到服务器的过程。

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

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

路由器然后有一个IP包,并根据其路由表通过另一个NIC转发它,然后再对其进行帧化并发送它。

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

问题2:内核?它是负责计算机内部IP打包/解包的人吗?

问题3:如何负责TCP和"理解"计算机中的HTTP?操作系统的哪个部分是什么?我猜这个人也有责任理解HTTP。

我知道还有更多细节,但整体问题太长了。我也很高兴看到有趣的链接加深了这个问题。

1 个答案:

答案 0 :(得分:2)

  

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

我不知道你的意思是'重建'这里。 NIC 接收帧并将其传递给CPU,可能是通过DMA。

  

路由器然后有一个IP包,并根据其路由表通过另一个NIC转发它,然后再对其进行帧化并发送它。

这个词是'数据包'而不是'包'。否则正确。

  

逐跳,服务器的NIC终于收到&重建框架

我再也不知道'重建'手段。收到这些帧。

  

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

     

问题2:内核?它是负责计算机内部IP打包/解包的人吗?

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

  

问题3:如何对TCP和"理解"负责?计算机中的HTTP?

TCP层负责理解TCP。 HTTP是一种应用程序层协议,应用程序可以理解。

  

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

没有'它。这里有两个单独的问题,分别有两个答案:见上文。