TCP/IP 三次握手与四次挥手

TCP/IP 三次握手与四次挥手

TCP协议是面向连接的,所谓面向连接,就是当计算机双方通信时必须经过先连接,然后传送数据,最后拆除连接的三个过程。

TCP的三次握手

第一次握手:客户端发送一个含SYN同步标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;
第二次握手:服务器在收到客户端的SYN报文后,将返回一个SYN+ACK报文,表示客户端的请求被接收。同时TCP序号被加1;
第三次握手:客户端返回一个确认报文ACK给服务器端,同样TCP序号被加1,至此一个TCP连接完成;然后才开始通信的第二步,数据处理。

为什么是三次握手?不是两次、四次?

  • 三次握手才可以阻止重复历史连接的初始化(主要原因);
  • 三次握手才可以同步双方的初始序列;
  • 三次握手才可以避免资源浪费。

TCP协议四次挥手

第一次挥手:客户端打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后客户端进入FIN_WAIT_1状态。
第二次挥手:服务端收到该报文后,就向客户端发送ACK应答报文,接着服务端进入CLOSED_WAIT状态;客户端收到服务端的ACK应答报文后,之后进入FIN_WAIT_2状态。
第三次挥手:等待服务端处理完数据后,也向客户端发送FIN报文,之后服务端进入LAST_ACK状态。
第四次挥手:客户端收到服务端的FIN报文后,会一个ACK应答报文,之后进入TIME_WAIT状态;服务器收到ACK应答报文后,就进入了CLOSE状态,至此服务器端已经完成连接的关闭;客户端在经过2MSL一段时间后,自动进入CLOSE状态,至此客户端也完成连接的关闭

TCP传输可靠性如何保证

数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后悔重发数据;
对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
丢弃重复数据:对于重复数据,能够丢弃重复数据;
应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。