路径最大传输单元(MTU)
是指经过两台主机之间路径的所有网络报文段中最大传输单元的最小值。知道MTU后可以帮助一些像TCP这类的协议避免分片(主要通过设置DF位)。从而减少一次内核中TCP协议栈从传输层向下的一次拷贝。(这个值在TCP连接建立的时候可以确定)
TCP 保活机制(keepalive)(这个问题在面试中多次被问)
如果在一段时间内(称为保活时间, keepalive time)内连接处于非活动状态,开启保活功能的一端将向对方发送一个保活探测报文。如果发送端没有收到响应报文,那么经过一个已经提前配置好的保活间隔(keep interval),将继续发送保活探测报文,直到发送探测报文的次数达到保活探测数(keepalive probe),这时对方主机将被确认为不可到达,连接也将被中断。
开启保活功能的过程工作过程中,开启该功能的一端会发现对方处于以下四种状态之一:
- 对方主机仍在工作,并且可以到达。对方的TCP响应正常,并且请求端也知道对方在正常工作,请求端将保活计时器重置(重新设定为保活时间值)。如果在计时器超时之前有应用程序通过该连接传输数据,那么计时器将再次被设定为保活时间值。如果在计时器超时之前有应用程序通过该连接传输数据,那么计时器将再次被设定为保活时间值。
- 对方主机已经崩溃,包括已经关闭或者正在重新启动。这时对方的TCP将不会响应。请求端不会接收到响应报文,并在经过保活时间间隔指定的时间后超时。超时前,请求端会测报文的响应,那么它将认为对方主机已经关闭,连接也将被断开。
- 客户主机崩溃并且已经重启。在这种情况下,请求端会收到一个对其保活探测报文的响应,但这个响应是一个重置报文段,请求端将会断开连接。
- 对方主机仍在工作,但是由于某些原因不能到达请求端(例如网络无法传输,而且坑使用ICMP通知也可能不通知对方这一事实)。这种情况与状态2相同,因为TCP不能区分状态2与状态4,结果都是没有收到探测报文的响应。
参考:
[1] TCP/IP详解 (卷1:协议)