Sockets 端口号和套接字之间的差异
我开始阅读W.Richard Stevens的UNIX网络编程,我对端口和套接字感到非常困惑。当我在互联网上读到这篇文章时,它说套接字是一个连接的端点,而对于端口号,它写道,IP地址和端口号不是唯一的一对。 现在我的问题是:Sockets 端口号和套接字之间的差异,sockets,networking,port,Sockets,Networking,Port,我开始阅读W.Richard Stevens的UNIX网络编程,我对端口和套接字感到非常困惑。当我在互联网上读到这篇文章时,它说套接字是一个连接的端点,而对于端口号,它写道,IP地址和端口号不是唯一的一对。 现在我的问题是: (1) 这两者有什么区别 (2) 如何在内部操纵套接字和端口。套接字是文件吗 (3) 当我们使用应用程序发送数据时,数据是如何发送的 (4) 如果有套接字,为什么要使用端口号 对不起,我的英语。。提前感谢您的回复 (1) 这两者有什么区别 运行IP网络的计算机总是有固定
- (1) 这两者有什么区别
- (2) 如何在内部操纵套接字和端口。套接字是文件吗
- (3) 当我们使用应用程序发送数据时,数据是如何发送的
- (4) 如果有套接字,为什么要使用端口号
- 插座类似于电话(即用于通信的端到端设备)
- IP就像你的电话号码(即你的插座地址)
- 端口类似于您想要与之交谈的人(即您想要从该地址订购的服务)
插座是(地址+端口),这意味着可以通过多个电话号码(IP)和多个插座(这并不意味着一个电话号码上的人会像另一个电话号码上的人一样回复你,因为他在这里/那里的工作可能不同).从一些初级计算机网络书籍开始,比如Tanenbaum的。我在上个学期读过这本书……然后,是时候让你再去读一次了。否则,你就不会问这个问题了!在学习过程中培养逻辑理解能力。可能重复我理解了你的整个答案,这是一个很好的解释,但请你详细说明一下:“另一方面,套接字是由每个程序按需分配的。”当程序想要创建套接字时,它通过调用socket()函数来实现。当使用套接字完成时,它会通过调用套接字的文件描述符上的close()(或者在Windows中为closesocket())来销毁套接字。一个程序可能同时使用0、1或多个套接字,这取决于它正在执行的操作,并且如果它选择,它可能随时关闭套接字和/或创建新的套接字。另一方面,港口从未“创建”或“销毁”;e、 g.给定主机上始终存在65535个TCP端口。根据您的回答(这是一个很好的解释),我们需要唯一标识主机上的应用程序,因此我们使用端口号,如果是这样的话,我们为什么不直接使用端口号呢?因为套接字被用作句柄来查找与给定通信上下文相关的所有状态,而不仅仅是端口号。例如,当您在连接的TCP套接字上调用send()时,内核使用socket fd参数不仅查找端口号,还查找远程计算机socke的IP地址