TCP 监听却能接收 HTTP 请求:Golang 服务器如何做到?
TCP 监听却能接收 HTTP 请求的原因
众所周知,在 OSI 模型中,HTTP 协议位于第 7 层(应用层),而 TCP 协议位于第 4 层(传输层)。那么,为什么使用 Golang 编写的 TCP 监听服务器可以接收 HTTP 请求呢?
HTTP 与 TCP 协议的关系
事实上,HTTP 协议在传输数据时依赖于 TCP/IP 连接。这意味着,在 HTTP 客户端和服务器可以在 TCP 层建立连接之前,必须先通过 TCP/IP 连接交换数据。换句话说,TCP 作为一种可靠的传输协议,为 HTTP 请求和响应的传输提供了底层基础。
在 Golang 示例中,net.ListenTCP 函数用于监听传入的 TCP 连接,而 Postman 是一个 HTTP 请求测试工具。因此,即使服务器正在监听 TCP 连接,但它也可以接受 HTTP 请求,因为 HTTP 协议依赖于 TCP 进行传输。