MSL的名字与实际作用不一致


        MSL全称是Maximum Segment Lifetime,译为“最大报文生存时间”,它是一台机器上TCP协议中的一个指标。从字面上理解,应该是指一个TCP报文段从发送方发出到达接收方(可能是途径的路由器或最终的目的机)所用时间的最大值,如果超过这个时间,接收方应该丢弃该报文。然而,实际TCP协议的实现,却并未拿它用在此处。原因是什么呢?

        MSL只是一个本地指标,各个操作系统的MSL可能并不一致,于是造成一个问题,接收方在计算一个报文是否超过MSL时,是用自己的MSL还是用对方的呢?要用对方的,并不知道。要用自己的会怎样呢?就要用自己的MSL与报文经过的时间做对比,那经过的时间怎么计算呢?到达时间接收方自己知道,发出时间呢?依赖TCP头选项中的时间戳选项吗?既然是可选项,就可能不包含,于是根本没办法计算。

        所以,TCP使用另一个指标,就是TTL(Time To Live),用于判断一个报文是否超时,TTL是一个TCP头中的字段,是给路由器看的,这点与MSL是不同的,MSL是一个系统本地指标。

        那MSL有啥用呢?实际上它只用于当一个TCP连接的一方进入TIME_WAIT状态时。可以认为它有3方面的作用,一是处于TIME_WAIT状态要多长时间,是2倍的MSL。二是处于TIME_WAIT状态时如果收到对方所发的包,会丢弃。三是处于TIME_WAIT状态的连接所用的端口号,在该状态结束前默认是锁定的(可以通过API选项SO_REUSEADDR解锁)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值