关于TCP/IP协议端口复用的问题,麻烦大佬进来撇两眼

BinaryZs 2020-08-23 08:15:45
一个多线程反射服务器,就是简单的小写转大写。
网络模型:
客户端与服务器皆采用短连接。
服务器端口固定为8888
客户端端口固定为9999

场景:
客户端write数据,服务器返回转换后的数据,客户端read后sleep,保证服务器为主动关闭连接的一方。
服务端没有设置端口复用,双方正常关闭连接,服务端此时处于TIME_WAIT状态,等待2MSL时长。

情景1:多线程服务器
如果把服务器Ctrl+C关闭掉再启动服务,会提示端口已经在使用,2MSL结束后可以正常启动。
情景2:多线程服务器
服务端处于TIME_WAIT状态,不关闭服务进程。在2MSL时间内,客户端再次用自身固定的端口发起请求。
此时为什么服务端没有报错,并且服务端不再处于TIME_WAIT状态,而是进行了正常的收发数据。

未启用端口复用、进程未重启的情况下,2MSL时长内服务器端口还可以继续使用?不然为什么服务端还能正常通信。
不让使用端口仅是针对bind函数而言?只要不再次调用bind函数就一直可以用?

...全文
20670 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜗牛世家 2020-08-25
  • 打赏
  • 举报
回复

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧