TCP常见面试题及答案

1、TCP如何唯一确定一条连接?

TCP通过四元组唯一确定一条连接,四元组即源IP地址、目的IP地址、源端口和目的端口。

图片[1]-TCP常见面试题及答案-不念博客

2、TCP三层握手过程中,可以携带数据吗?

第一次、第二次握手不可以携带数据,第三次握手时,是可以携带数据的。

图片[2]-TCP常见面试题及答案-不念博客

3、TCP和UDP可以同时绑定同一个端口吗?

可以,TCP和UDP是两种不同的传输层协议,它们各自使用的端口号也相互独立,如TCP有一个80端口,UDP也可以有一个80端口,二者并不冲突。

图片[3]-TCP常见面试题及答案-不念博客

4、多个TCP服务器进程可以同时绑定同一个端口吗?

要看它们绑定的IP地址是否相同,如果IP地址也相同,就不可以再绑定同一个端口。

如果IP地址不相同,就可以。

图片[4]-TCP常见面试题及答案-不念博客

5、客户端的端口可以重复使用吗?

可以重复使用。TCP通过四元组(源IP地址、目的IP地址、源端口和目的端口)唯一确定一条连接,只要四元组中的一个维度不一样,就表示不同的TCP连接。

所以,即使客户端的端口(即源端口)相同,只要其它三个维度有一个维度不相同,就不会导致连接冲突的问题。

图片[5]-TCP常见面试题及答案-不念博客

6、IP层已经有了分片机制,TCP为什么还需要分段?

因为IP层本身没有超时重传机制,超时和重传是由TCP负责的,当某一个IP分片丢失后,TCP就得重传整个IP报文的所有分片,效率太低。

所以一般都是UDP使用IP分片,TCP使用分段而不使用分片。

TCP在建立连接时,会根据网卡MTU的大小协商双方的MSS值,超过MSS时,就会先进行分段,由它形成的IP包的长度也就不会大于MTU ,也就不用进行IP分片了。

图片[6]-TCP常见面试题及答案-不念博客
图片[7]-TCP常见面试题及答案-不念博客

7、为什么有TIME_WAIT状态?为什么等待的时间是2MSL?

TIME_WAIT是TCP四次挥手过程中,主动发起结束连接的一方,在发送第四次挥手ACK包之后的状态。

处于TIME_WAIT状态的一方,在经过2个MSL(报文最大生存时间)时间后,才变为CLOSED状态,结束连接。

图片[8]-TCP常见面试题及答案-不念博客

在TIME_WAIT状态时,两端的端口不能使用,要等到2MSL时间结束才可继续使用,而2MSL的时间足以让两个方向上的数据包都被丢弃,使得原来连接的数据包在网络中都自然消失,所以可以保证历史连接的报文不会影响新的连接。

图片[9]-TCP常见面试题及答案-不念博客

等待2MSL时间主要目的是怕最后一个ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭的一方接到重发的FIN包后可以再发一个ACK应答包。

图片[10]-TCP常见面试题及答案-不念博客
© 版权声明
THE END