2020-10-14

TCP/IP协议是Internet最基本的协议,由多个协议组成,包括TCP、IP等。TCP是面向连接的协议,建立连接需三次握手:A发送SYN,B回应SYN+ACK,A再次发送ACK确认连接。释放连接则通过四次挥手:A发送FIN请求断开,B确认后进入CLOSE-WAIT,B发送FIN请求断开,A确认后等待2MSL,最后双方关闭连接。
摘要由CSDN通过智能技术生成

TCP/IP的“三次握手”与“四次挥手”详解:
TCP/IP协议:全称Transmission Control Protocol/Internet Protocol,传输控制协议/网间网协议,是目前世界上应用最为广泛的协议,其作用域包括网络层、传输层、应用层、物理层和数据链路层,TCP/IP协议是Internet最基本的协议,也是我们接触最多的协议之一。
需要注意的是TCP/IP是由很多协议组成的协议簇,并非一个单一协议,其中包括了TCP协议、IP协议、UDP协议、FTP协议、DNS协议等,其中TCP协议与IP协议最为重要,所以用其名命名。
TCP协议,是面向连接的协议,顾名思义就是在数据发送前和对方建立有效的连接。一个TCP连接必须要经过三次“对话”才能建立起来,我们称之为建立连接的“三次握手”:
大致就是A发送了一个http请求到B,那么A会主动结束closed状态,打开一个连接,B被动结束closed状态,进入LISTEN阶段,随后开始三次握手,首先A向B发送一段TCP报文,表示“请求建立连接”,此时报文中标记位SYN置为1,序号为Seq=x(由A生成,一般为1),随后A进入SYN-SENT阶段;
B在接收到A的报文之后,结束LISTEN阶段,然后返回给A一段报文,其中标记位为SYN和ACK,表示“B已收到A的连接请求,当前连接正常,允许建立连接”,序号为Seq=y(由B生成,为几未知),确认号为Ack=x+1,随后B进入SYN-RCVD阶段;
A在接收到B返回的报文之后,明确了B允许建立连接的答复,结束SYN-SENT阶段,再发送一段报文给B,其中标志位为ACK,表示“确认收到同意建立连接信号”,序号为Seq=x+1(表示接收到B确认号),确认号为Ack=y+1(表示接收到B序号),随后进入ESTABLISHED状态;
B收到A的报文之后,明确了A已进入确认连接状态,结束SYN-RCVD阶段,也进入ESTABLISHED状态;
随后A与B可以进行正常的数据传输,这就是“三次握手”的过程,其中A与B双方的确认号Ack和序号Seq都在对方的基础上进行计算,这样保证了TCP报文传输的连贯性,一旦出现序号不连贯,则代表某一方发出的TCP报文丢失,需要重新发起连接,其中需要注意的是,在“三次握手”过程中,并没有应用层的数据,SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0;
通过“三次握手”的这个机制,通过确认号和序号,我们有效的规避了有时服务器会开启一些无用的连接导致浪费资源和一些无效的连接请求报文突然又传送到了服务器从而产生错误的情况。
既然有建立连接,那么也必然会有释放连接,释放连接的过程就叫“四次挥手”:
连接的释放也是由一方自动发起,当A传输完数据后,发出停止TCP连接的请求,同时将控制位FIN置为1,序号Seq=U,随后A进入FIN-WAIT-1阶段,代表半关闭状态,在这个状态下,A不能再向B发送数据,但是B还能再向A发送数据;
B在收到A的请求之后,确认了A想要断开连接的信号,随后结束ESTABLISHED状态,进入CLOSE-WAIT状态,然后返回一段报文,其中标记位为ACK,序号Seq=V,确认号Ack=U+1,随后B准备断开与A的连接;
A收到B发送的报文后,确认了B已经收到先前断开连接的信号,于是结束FIN-WAIT-1阶段,进入FIN-WAIT-2阶段;
B在准备好断开与A的连接之后,会再向A发送一段报文,其中标记位为FIN,ACK,序号为Seq=W,确认号为Ack=U+1,表示是在收到A报文的基础上,将其序号Seq值加1作为本段报文确认号Ack的值,随后B结束CLOSE-WAIT阶段,进入LAST-ACK阶段,这个状态下B不会再向A发送数据,但允许接受A的数据;
A在收到B的报文之后,结束FIN-WAIT-2阶段,进入TIME-WAIT状态,向B发送一段报文,其中标记位为ACK,序号为Seq=U+1,确认号为Ack=W+1,随后A在TIME-WAIT状态等待2MSL(即两个报文最大生存时间);
B在接收到A的报文之后,结束LAST-ACK阶段,进入CLOSED阶段,正式关闭A与B的通道。
A在等待完2MSL之后,结束TIME-WAIT状态,进入CLOSED状态;
以上就是“四次挥手”的过程;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值