我正在尝试理解套接字和端口之间的关系。我发现套接字是端口的一部分,它处理该端口的通信。然而,在另一篇博客上,我读到
操作系统不必支持套接字即可支持 TCP 或 UDP!
那么,如果服务器上的操作系统不支持套接字,那么特定端口上的通信将如何在特定端口上进行?
有人可以指导我并简单解释一下端口和套接字之间的关系以及它们在通信中各自起的作用是什么吗?
答案1
套接字是应用层上用于通信的实际地址。套接字地址的格式为ip_address:protocol:port
。您可以找到有关套接字地址的更多信息这里。
例子:
192.168.1.1:tcp:80
如果您使用协议,这表示 PC 的套接字地址和192.168.1.1
“预期”连接的IP 地址。port 80
tcp
来自我的电脑的示例
xxx@xxx ~ $ netstat -tp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 xxx.local:54595 104.16.17.44:http ESTABLISHED 32294/chrome
本次会议的解释
- 我的电脑可以与
104.16.17.44
- 连接已建立
- 我们使用
tcp
协议 - 我的电脑访问了远程端口 80,又称 http 端口
概述
这代表了
我的电脑带有套接字地址xxx.local:54595:tcp
,远程电脑带有套接字104.16.17.44:http:tcp
端口实际上是用于连接的“洞”。但在名为“洞”的地方,port 80
您可以使用任何服务。port 80
您可以在服务器上使用任何服务。例如 ftp、ssh、pop3 或任何其他服务。
众所周知的“洞”,又名众所周知的端口,有关端口的更多信息这里
端口是套接字地址的一部分。
端口和插座是 的一部分tcp stack
。很好的解释这里。
Tcp stack
只是操作系统的一个模块。