一、TCP建立连接三次握手过程详解
1、TCP(Tran**issionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
2、客户端发送SYN(SEQ=1022)报文给服务器端,客户端进入SYN_SEND状态。
3、服务器端收到SYN报文,回应一个SYN(SEQ=2032)ACK(ACK=1022+1)报文,服务器端进入SYN_RECV状态。注意:服务器根据syn=1判断客户端请求建立连接,返回ack=1。
4、客户端收到服务器端的SYN报文,回应一个ACK(ACK=2032+1)报文,进入Established状态。注意:确认acknumber是否与第一次发送(seqnumber+1)相等,并ack=1。正确,发送acknumber=seqnumber(服务器顺序编号)+1。
5、服务器端代码:javaserversocket代码(只包含建立连接的握手源码)。注意:由于编辑器所限,只能将源码截图了,大家看的时候注意一下行号即可。
6、客户端代码:javasocket代码(只包含建立连接的握手源码)。注意:由于编辑器的限制,只能将源码截图了,大家看的时候注意一下行号即可。
二、TCP协议的三次握手的过程
TCP握手协议:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
1、第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(SynchronizeSequenceNumbers)
2、第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
三、TCP的三次握手过程是什么
1.第一次握手(SYN):客户端向服务器发送一个带有SYN(同步序列号)标志的请求,表示客户端希望建立连接。客户端选择一个初始序列号(ISN)并发送给服务器。
2.第二次握手(SYN+ACK):服务器收到客户端的请求后,会返回一个带有SYN和ACK(确认)标志的响应,表示服务器准备好了,并确认收到了客户端的请求。
-确认序列号(ACK)字段中的值为客户端发送的初始序列号加1。
-服务器也会选择一个自己的初始序列号(ISN)。
3.第三次握手(ACK):客户端收到服务器的响应后,会发送一个带有ACK标志的确认消息,确认收到了服务器的响应。客户端的确认序列号(ACK)字段中的值为服务器发送的初始序列号加1。
此时,TCP连接已经建立,双方都可以开始进行数据的传输。
通过三次握手过程,客户端和服务器能够彼此确认对方的准备和接收能力,确保双方的状态和序列号匹配,从而建立一个可靠的连接。如果握手过程中发生错误或超时,会触发重新握手的过程,保证连接的稳定性和可靠性。
好了,文章到此结束,希望可以帮助到大家。