注意点

父进程需要关闭 acceptfd(确保 acceptfd 的引用计数会变为 0,否则父进程不关闭的话始终占用引用计数)、子进程需要关闭 sockfd

关于父子进程并发,那么父进程和子进程共用同一端口及 IP 地址。当父进程的监听套接字封装完毕后,此连接套接字的套接字对(套接字对是唯一标识一个网络上的每个 TCP 链接)可以表示为 {*:21 , *:*},第一个 *(通配符)表示任意本地端口(也就是说如果服务器是多宿的话,那么此主机可能拥有多个服务器 IP 地址,要么指定一个,要么指定任意),第二对*.* 表示外部 IP 地址和外部端口号(也就是链接的客户端的信息)。

当一个客户端连接的时候,产生已连接套接字,此套接字的外部地址及外部端口号立即被填充,也就是说通过父进程的监听套接字和子进程的已连接套接字的套接字对来区分接收到的同一端口和 IP 地址的信息到底发送给谁。比方说 1.1.1.1:100 链接了,那么子进程里面的套接字对就被填充为 {0.0.0.0:21 , 1.1.1.1:100},假设同一客户端又链接了同一服务器的同一端口,那么客户机为这个新客户的套接字分配一个未使用的临时端口比方说是 101,那么服务器针对这两个链接时有区别的:他俩的套接字对不一样。所以以此区分同一端口的父子进程信息不会混乱。

应注意,TCP 无法仅仅通过查看目的端口号来分离外来的分节到不同的端点,他必须查看套接字对的所有 4 个元素才能确定由哪个端点接收某个到达的分节。来自 1.1.1.1:100 目的为 0.0.0.0:21 的分节被递送给第一个子进程,来自 1.1.1.1:101 目的为 0.0.0.0:21 的分节被递送给第二个子进程。所有目的端口为 21 的其他 TCP 分节都被递送给拥有监听套接字的那个最初服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值