在阅读TCP如何工作的同时,我已经阅读了很多书,其中提到在listen()
之后,当客户端连接到服务器时,accept()
应由套接字程序员调用接受来自客户端的连接。父TCP服务器进程(侦听端口,比如80)然后调用fork()
并创建子进程,然后继续与客户端通信。子进程显然必须绑定到另一个临时端口以与客户端通信。我的问题是,一旦子进程被分叉,客户端将如何知道将数据发送到哪个端口以进行通信?侦听端口80的父TCP进程是否将其传送给客户端?
答案 0 :(得分:2)
Hiw客户端是否知道子TCP进程正在使用的临时端口?
没有短暂的端口可以知道。客户端只是继续使用它所连接的相同目标端口。
子进程显然必须绑定到另一个临时端口以与客户端通信。
没有。客户端进程继承接受的套接字,该套接字绑定到与侦听套接字相同的本地端口。
我的问题是,一旦子进程被分叉,客户端将如何知道将数据发送到哪个端口以进行通信?
它通过连接的同一端口进行通信。
侦听端口80的父TCP进程是否将其传送给客户端?
客户端通过FD继承机制继承套接字。