golang tcp 服务监听为什么可以接收 http 请求?

http协议在3.0之前都是基于 tcp 协议的,但是我使用golang写了一个简单的监听tcp请求的服务器为什么可以接收到http请求

tcpListener, err := net.ListenTCP("tcp", server.OuterServer.LocalAddress)

但是居然可以直接使用 Postman 进行请求,网络学的不是很好,仅仅知道7层协议模型,TCP可靠传输之类的简单问题,在我印象里,应该是仅能使用 tcp 请求才能请求 这个端口,建立链接,有人知道为什么吗

阅读 2.3k
2 个回答

HTTP OSI 模型的第 7 层(应用层),TCP 位于 OSI 模型的第 4 层(传输层)
是终还是通过TCP/IP 连接传输数据

在客户端和服务器可以交换 HTTP 请求/响应之前,它们必须首先建立 TCP 连接。因此,HTTP 依赖于 TCP 标准才能成功完成其工作。

http.ListenAndServe 可以看下这个标准库源码

http 库基于 net.listen 实现了 http 服务,其本质还是建立了 tcp 连接来接收响应数据,只是按照了http协议标准标准在tcp做了封装。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏