HTTP如何转换为TCP,然后TCP如何转换为IP?

网络工程 ipv4 通讯协议 ipv6 互联网
2021-07-12 19:47:32

我知道在 Internet 协议栈中实际上有三层。它们是应用程序、互联网和传输。假设应用层中的 HTTP 将在传输层中转换为 TCP,而 TCP 将在 Internet 层中转换为 IP。

但实际上,当我试图从 Internet 捕获网络流量时,我只能理解 HTTP 层,而无法理解 TCP 和 IP 中的内容。

我正在使用wireshark 来捕获网络流量。

请解释该过程或为此提供一个简单的示例。

3个回答

没有转换,你拥有的是封装

例如:您在本地 PC 上使用 wireshark 来捕获您的 HTTP 会话。基本上,你最终的结果是这样的:

[以太网帧 [IP 数据包 [TCP 段 [HTTP 请求]]]]

  • 以太网帧的 EtherType 字段为 0x0800,它为我们提供了作为 IP 的封装协议
  • IP 数据包的协议字段为“6”,它告诉我们下一层是 TCP(ICMP 是协议“1”)
  • TCP 的目标端口为 80,通常 Web 服务器正在侦听该端口
  • HTTP 是 Web 服务器实际理解的内容

我认为您的困惑始于考虑“转换”。不会发生这样的事情...

IP 数据包是基本的传输单元。他们有诸如源地址和目标地址之类的东西,以及其他一些簿记的东西,但除此之外别无他物。当然还有数据包有效载荷。

UDP 或 TCP 是下一层。它位于 IP 有效载荷中。UDP 和 TCP 都包含源端口和目标端口。TCP 还包含序列号、确认等。再次是有效载荷。

我们以 HTTP 为例。HTTP 作为 TCP 的有效负载传输。客户端向服务器发送请求,服务器响应等。

所以:任何地方都没有转换。只是 HTTP 作为 TCP 的有效载荷,作为 IP 的有效载荷。

没有“转换”。它是一个协议栈;或者更好的词是“封装”。从一个IP包开始,它的payload是一个TCP包,payload是一个HTTP事务,通常是多个包。