当我们在TCP包中有端口号时,为什么我们需要在HTTP的主机头中端口号?



我知道HOST头如何帮助我们在单个IP地址上拥有多个网站。在HOST头中,我们可以选择指定端口号。(HTTP默认为80)

在OSI模型中,第四层负责处理"端口";在重新组合数据包后,它可以将它们交给正确的应用程序/进程。

另一方面,HTTP工作在OSI的第七层。因此,在这一点上,我认为应用程序已经收到了正确的数据包,并且知道端口号。

那么为什么主机头有这个"端口号"呢?这部分又怎么能"port"呢?的主机头帮助我们吗?

我还想知道如果它们是不同的或者可以是不同的吗?

URL中的端口与TCP连接使用的端口相同,并且与主机报头中的端口相同。

该协议是第5/6层,但绝对不是第7层。你可能会说它是第6层,但如果它是加密的,可能就不是了,在这种情况下,TLS是15层,http是16层。

添加端口允许会话层指示操作系统使用哪个端口。

对于某些L5协议,应用程序知道默认端口,例如http(80) https(443) ftp(21)。

但是当您想要在不同的L4连接上运行其中一个L5会话时,用户需要一种方法来指示TCP堆栈这样做。因此,http的设计者决定在URL的末尾允许一个可选的TCP端口。

主机报头中的端口告诉您客户端连接到哪个端点。例如abc.com:80和abc.com:81是不同的端点,但它们可以连接到同一个服务器实例。

虽然服务器确实可以通过查看套接字来确定用户连接到哪个端口,但服务器实现可能不支持此功能,或者将来可能需要保留此功能。

如果你的服务器需要主机头上的端口就变成了一个实现和需要的问题。

相关内容

  • 没有找到相关文章

最新更新