HCIA网络基础

三次握手和四次挥手的理解

TCP/IP TCP协议提供可靠的连接服务,采用三次握手来建立连接。

三次握手:如图所示:

第一次握手:建立连接;客户机先向服务器发送一个请求报文段,客户端发送一个SYN为1;seq为x,客户端进入SYN-SENT状态,使服务器进入LISTEN状态,等待服务器的回应。

第二次握手:服务器收到客户端的 SYN 报文段,需要对这个 SYN 报文段进行确认,设置 Ack 为x+1(Sequence Number+1);同时,自己还要发送 SYN 请求信息,将 SYN 位置为 1,Seq 为y;服务器端将上述所有信息放到一个报文段(即 SYN+ACK 报文段)中,一并发送给客户端,此时服务器进入 SYN_RECV 状态;

第三次握手:客户端收到服务器SYN+ACK报文后,向服务器发送ack确定报文,从而客户端进入ESTABLISHED状态,从而客户端可以读写数据;而服务器收到客户端的报文,会进入ESTABLISHED状态,可以开始读写数据了。

简单对三次握手的理解:第一次握手是为了确定客户端和服务端正常开启;第二次握手是服务器给客户端发送报文,客户端回应收到了;第三次握手是客户端向服务器发送报文,服务器回应收到了的过程,因此三次握手缺一不可,要是采用二次握手会使传输数据不安全;而四次握手就没必要,三次握手时就已经建立连接,四次握手就显得很多与。

客户端:你在线吗?

服务器:我在线的,你在线吗?

客户端:我在线的。

四次挥手:当客户端与服务器通过TCP三次握手建立连接,传输数据结束后,需要对TCP断开连接,从而出现了四次挥手。

第一次挥手:当客户端主动调用close报文时,向服务器发送结束报文fIN,会进入FIN_WAIT状态

第二次挥手:服务器收到FIN结束报文,并向客户端发送一个ack确定请求报文,自己进入CLOSE_WAIT状态;

第三次挥手:服务器调用close报文时,服务器向客户端发送一个FIN结束报文,使服务器进入LAST_ACK,等待最后一个ack确定请求;

第四次握手:客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出送确认报文段ACK;服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接。而客户端要等待2MSL的时间,才会进入到CLOSED状态。

三次握手和四次挥手的区别:

其实在TCP握手的时候,接收端将SYN包和ACK确认包合并到一个包中发送的,所以减少了一次包的发送。对于四次挥手,由于TCP是全双工通信,主动关闭方发送FIN请求不代表完全断开连接,只能表示主动关闭方不再发送数据了。而接收方可能还要发送数据,就不能立即关闭服务器端到客户端的数据通道,所以就不能将服务端的FIN包和对客户端的ACK包合并发送,只能先确认ACK,等服务器无需发送数据时在发送FIN包,所以四次挥手时需要四次数据包的交互。

简单理解四次挥手:

客户端:数据传输结束,我需下线。

服务器:我知道了,我还有一些数据需要传输,先稍等下。

服务端:数据传输结束了,你可以下线了。

客户端:好的。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值