TCP/IP协议三次握手与四次挥手
TCP与UDP的区别
TCP:在不可靠的网络信道中建立可靠的连接,是一个面向连接、可靠的传输
UDP:非连接、不可靠的传输,常用于对丢包要求小的场合,如直播、视频通话,数据包通过网卡直接发出,内存占用少,性能损耗小
三次握手
第一次握手:客户端会向服务器发送SYN包,连接请求数据
第二次握手:服务器收到SYN包会回复客户端发送SYN+ACK包,同意连接请求
第三次握手:客户端收到SYN+ACK包后,向服务器发送ACK包,此时连接建立
第三次握手正是建立可靠的关键,如果第二次握手就建立连接的话,第一次握手时,若SYN包因为通道堵塞而没无法发送到服务器端口,再次发送并被收到,此时第一次发送的SYN包又恢复并进入通信,服务器由建立连接,但是客户端并不连接,这时这条通信就有可能造成不必要的麻烦
数据传输

解决丢包与乱序问题就在序列号码与确认号码中
传输层会将应用层过来的字节流保存在序列号之中,之后在发送缓冲中取请求的序列号
若客户端发送了个序号为500,长度为100字节,确认号为600,则服务器就会回复一个序列为600,长度任意,确认号任意的报文,即下一个序号就等于上一个确认好,若接收到了


(From wikipedia)
四次挥手
因为此时是全双工的,谁都可以关闭连接,假设客户端发起的
第一次挥手:客户端发送FIN包给服务器端,并进入终止等待状态
第二次挥手:服务器端回复ACK包给客户端,并进入关闭等待状态,此时还可以进行数据传输
第三次挥手:服务器端会再次发送个FIN包给客户端,最后确认客户端是否要真要关闭
第四次挥手:客户端接受FIN包回复ACK包给服务器端,确认要关闭,此时进入超时等待阶段,等待若服务器端没有接收到ACK包,再次发送ACK包,保证连接正式断开

浙公网安备 33010602011771号