客户端如何知道子TCP进程使用的临时端口?

时间:2015-01-30 08:04:29

标签: sockets tcp network-programming tcpclient tcp-ip

在阅读TCP如何工作的同时,我已经阅读了很多书,其中提到在listen()之后,当客户端连接到服务器时,accept()应由套接字程序员调用接受来自客户端的连接。父TCP服务器进程(侦听端口,比如80)然后调用fork()并创建子进程,然后继续与客户端通信。子进程显然必须绑定到另一个临时端口以与客户端通信。我的问题是,一旦子进程被分叉,客户端将如何知道将数据发送到哪个端口以进行通信?侦听端口80的父TCP进程是否将其传送给客户端?

1 个答案:

答案 0 :(得分:2)

  

Hiw客户端是否知道子TCP进程正在使用的临时端口?

没有短暂的端口可以知道。客户端只是继续使用它所连接的相同目标端口。

  

子进程显然必须绑定到另一个临时端口以与客户端通信。

没有。客户端进程继承接受的套接字,该套接字绑定到与侦听套接字相同的本地端口。

  

我的问题是,一旦子进程被分叉,客户端将如何知道将数据发送到哪个端口以进行通信?

它通过连接的同一端口进行通信。

  

侦听端口80的父TCP进程是否将其传送给客户端?

客户端通过FD继承机制继承套接字。