TCP常见面试题
1.什么是TCP三次握手?
三次握手:client请求连接SYN---server确认收到,发送ACK和SYN---client确认收到
2.什么是TCP四次挥手?
四次挥手:client请求关闭FIN---(server确认收到,发送ACK---server继续发送数据直到完毕,发送FIN)----client确认收到
3.为什么TCP是三次握手?四次挥手?
三次握手确认双方收发功能都正常,四次也可以但是显得比较多余。
4.TIME_WAIT状态持续时间和原因?
1)为实现TCP这种全双工(full-duplex)连接的可靠释放
2)为使旧的数据包在网络因过期而消失
5.TCP的超时重传和快速重传?
超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。
在没有快速重传/快速恢复算法之前,重传依靠发送方的重传超时,在timeout时间内如果没有接收到对方的ACK,默认是丢包了,发送方就重传。
6.TCP首部长度有哪些字段?
TCP首部有20个字节的固定数据,用来存放报文传输过程所需的信息。有源端口,目的端口,序号,确认号,数据偏移,保留,控制位,紧急URG,控制ACK,推送PSH,复位RST,同步SYN,终止FIN,窗口,检验和,紧急指针,选项,MSS,窗口扩大,时间戳,SACK。
7.TCP在listen时候参数backlog的意义?
SYN队列的长度
8.Accept发送在三次握手的哪一步?
accept过程发生在三次握手之后,三次握手完成后,客户端和服务器就建立了tcp连接并可以进行数据交互了。这时可以调用accept函数获得此连接。
9.三次握手有哪些不安全性?
1)SYN flood 泛洪攻击
2)Land 攻击 ,
10.TCP和UDP的区别?
TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
TCP首部开销字节为20字节,UDP为8字节