TCP在发送数据时是否使用另一个端口?

6
我听说对于TCP连接,服务器会在一个端口上进行监听,而使用另一个端口来发送数据。
例如,Web服务器侦听端口80。每当客户端连接到它时,该服务器将使用另一个端口(比如9999)向客户端发送数据(Web内容)。如果多个客户端连接到它,那么这个服务器是否会创建多个“另一个端口”来发送数据呢?
客户端是否像服务器一样使用2个端口(监听端口和发送数据端口)?
我是不是对的?我听很多人说过这个,但我找不到任何好的书籍或文章来解释。
请解释一下。

2
也许你把TCP和FTP搞混了? - Mikkel Løkke
2个回答

25
我听说对于TCP连接,服务器将侦听一个端口,并使用另一个端口发送数据。
不是这样的。相同的端口用于监听和接受连接,通常同一连接用于发送和接收。TCP连接是双向的。FTP是一个例外,它使用两个连接:一个用于命令,一个用于数据。
例如,Web服务器侦听端口80。每当客户端连接到它时,该服务器将使用另一个端口(例如9999)将数据(Web内容)发送到客户端。
不是这样的。
如果多个客户端连接到它,这个服务器是否创建多个"另一个端口"来发送数据?
不是这样的。
客户端是否像服务器一样使用2个端口(侦听端口和发送数据端口)?
不是这样的。
我是对的吗?
不是这样的。
我听说很多人说过这个问题,
他们都是错的。
我找不到任何关于此的好书籍或文章。
没有。只有非常糟糕的书或文章会说这样的话。

根据我的理解,如果是通过TCP传输SIP协议(SIP客户端既可以作为客户端端口,也可以作为服务器),那么...本地列表端口可以设置为5060,而出站端口则可能是动态的。 - just ME
@justME 我的回答涉及服务器,这也是问题所在。而你的评论涉及服务器+客户端,当然会使用两个端口。 - user207421
2
我喜欢你解释的方式。 - Harshit Gupta

0

这是一个简单的例子。 当您的笔记本电脑中的浏览器向监听端口443的Web服务器发送请求时,您的操作系统将使用临时端口(例如tcp / 3105)作为源端口,Web服务器的端口tcp / 443作为目标端口。

一旦Web服务器发送回响应,它将使用源端口作为tcp / 443,目标端口作为tcp / 3105。

这里是一个指向AWS文档的链接。 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接