我对 TCP/IP 堆栈的理解是应用层(第 4 层)由 HTTP 等协议实现组成。
像 Web 浏览器这样的用户代理是否自己实现此 HTTP 协议?即用户代理本身是否负责格式化数据包以符合 HTTP 协议,然后将消息传递到传输层?或者用户代理是否将请求数据传递给实现 HTTP 协议的操作系统上的特定系统应用程序?
答案1
是的。例如:https://www.chromium.org/developers/design-documents/network-stack。
这就是为什么有些浏览器支持某些功能(例如 Http/2)而有些则不支持的原因。
答案2
HTTP 是应用程序或其使用的某些库的责任。
你可以通过查看一些代码来了解它们是如何组合在一起的
像这样http://search.cpan.org/~ether/HTTP-Message-6.11/lib/HTTP/Request.pm
和这个https://stackoverflow.com/questions/1359689/how-to-send-http-request-in-java
HTTP 是第 7 层
https://en.wikipedia.org/wiki/List_of_network_protocols_(OSI_model)