socket编程的那些事儿

本文详细介绍了Python socket编程中的关键概念,包括SO_REUSEADDR选项、TIME_WAIT和CLOSE_WAIT状态及其解决方法。此外,还探讨了NAT的四种类型及其在通信中的影响,以及select模块的select函数参数解析。
摘要由CSDN通过智能技术生成

1、python的socket编程中socket.SO_REUSEADDR的含义:Socket中SO_REUSEADDR详解

2、socket编程的TIME_WAIT和CLOSE_WAIT状态:

(1)定义:TCP四次挥手时,主动发起断开连接的一方最后会进入TIME_WAIT状态,而被动断开连接的一方最后会进入CLOSE_WAIT状态:

(2)为什么需要TIME_WAIT状态?

a.防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
b.可靠的关闭TCP连接。在主动关闭方发送的最后一个 ACK(FIN) ,有可能丢失,这时被动方会重新发FIN, 如果这时主动方处于 CLOSED 状态 ,就会响应 RST 而不是 ACK。所以主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。另外这么设计TIME_WAIT 会定时的回收资源,并不会占用很大资源的,除非短时间内接受大量请求或者受到攻击。

(3)如何解决TIME_WAIT过多问题?

让服务器能够快速回收和重用那些TIME_WAIT的资源,如修改/etc/sysctl.conf文件的配置内容,修改完之后执行/sbin/sysctl -p让参数生效࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值