四次挥手
断开连接需要四次挥手
1.客户端发送一个FIN(SEQ=x)标志的数据包到服务端,用来关闭客户端到服务端的数据传送, 然后客户端进入FIN-WAIT-1状态。
2.服务端收到一个FIN(SEQ=x)标志的数据包,它发送一个ACK(ACK=x+1)标志的数据包到客户 端,服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。
3.服务端发送一个FIN(SEQ=y)标志的数据包到客户端,请求关闭连接,服务端进入LAST-ACK状 态
4.客户端发送一个ACK(ACK=y + 1)标志的数据包到服务端,然后客户端进入TIME-WAIT状态,服 务端收到这个数据包后进入CLOSE状态,如果此时客户端等待2MSL后依然没有收到回 复,证明服务端已经正常关闭,随后客户也可以关闭连接了。
为什么不能把服务端发送的ACK和FIN合并起来,变成三次挥手?
因为服务端收到客户端断开连接的请求时,可能还有一些数据没有发完,先回复ACK表示接收到了断开连接的请求,等到数据发完之后再发FIN,断开服务端到客户端的数据传送。
为什么第四次挥手需要等待2MSL时间?
如果服务端没有收到客户端的ACK,会重发FIN。2MSL是一个发送和一个回复所需的最大时间,如果直到2MSL客户端都没有再收到FIN,则客户端认为ACK已经被成功接收,结束TCP连接。
TCP与UDP区别
1.TCP是面向连接的,UDP不是。
2.TCP是可靠传输,UDP不可靠。
3.TCP传输是有状态的,UDP是无状态服务
4.TCP的传输效率UDP低
5.TCP面向字节流,UDP面向报文
6.TCP首部开销比UDP大
7.TCP只支持点对点通信,UDP提供广播和多播服务
TCP如何保证传输的可靠性?
1.基于数据块传输
2.通过序列号保证数据包的有序性
3.校验和
4.重传机制
5.流量控制
6.拥塞控制
HTTP是基于TCP还是UDP?
HTTP/3.0之前是基于TCP协议的。HTTP/3.0弃用TCP,改用基于UDP的QUIC协议
DNS协议使用的是TCP还是UDP?
DNS在域名解析的过程中,会根据DNS响应报文的大小选择使用TCP还是UDP。一般情况下响应报文不会超过512字节,所以实际DNS配置时仅支持UDP查询包。
区域传输的时候使用TCP协议
什么是MAC地址,IP地址到MAC地址如何转换?
一切网络设备都由MAC地址唯一标识。
ARP地址解析协议,解决了IP地址转MAC地址的一些问题。