我正在学习网络和套接字,但有些我不明白。我经常听说“TCP 端口”,但我认为端口与应用层有关(例如 HTTP 服务器的 80)。那么为什么不说“应用程序端口”呢?为什么端口似乎与 TCP 层相关联(它应该与更高层相关联)?对我来说端口与 TCP 协议无关
谢谢
您的理解是错误的,您需要在继续讨论其他网络概念之前澄清这一点。
端口是 TCP 的基本概念。
TCP 是两个端点 (Source和Destination)之间的双向通信协议,由两件事标识:IP address和Port。TCP 旨在IP address通过添加Port和允许单个 IP 地址存在多个通信端点来扩展 IP 协议(仅通过 标识主机)。
事实上,TCP 数据包(通过线路发送)封装了 IP 数据包,但在 IP 之上添加了一些额外的信息,例如Port和一些传输控制标志等信息。这就是人们经常使用术语 TCP/IP 的原因。
在 TCP/IP 之上,人们已经构建了其他协议,例如 HTTP。
一个 HTTP 数据包(或请求)由在客户端和服务器之间交换的多个 TCP/IP 数据包组成。HTTP使用TCP/IP,使用 HTTP 发送的所有数据包都是 TCP/IP 数据包。HTTP通常使用 TCP 端口 80,但是它可以在任何其他端口上运行而不会出现问题。
此外,任何其他应用程序级协议都可以配置为使用端口 80。
端口仅按照惯例与应用程序级协议相关联。同样,SSH通常配置在端口 22 上,但可以在任何其他端口上使用。