济南营销网站建设,网站开发组播地址的作用,电子商务网站的建设内容,js网站源码在CS模式的TCP连接建立过程中#xff0c;客户端与服务器端流程如下#xff1a;
客户端流程#xff1a;发送请求-接收服务器端确认-发送对服务器端确认的确认。
服务器端流程#xff1a;接收客户端的连接建立请求-发送确认-接收客户端发送的对确认的确认。…在CS模式的TCP连接建立过程中客户端与服务器端流程如下
客户端流程发送请求-接收服务器端确认-发送对服务器端确认的确认。
服务器端流程接收客户端的连接建立请求-发送确认-接收客户端发送的对确认的确认。 1、刚开始客户端和服务端都处于CLOSED状态服务端开始监听某个端口进入LISTEN状态。
2、客户端发送连接请求报文其中包含SYN1,ACK0,初始序列号x进入SYN-SENT状态。
3、服务器端接受请求报文后向客户端发送确认报文其中包含SYN1,ACK1,确认号x1自己的初始序列号y,之后服务器会进入SYN-RCVD状态。
4、客户端收到 服务器端的确认报文后会发送一个确认报文给服务器表明已经接收到服务器发送的确认报文。该报文中包含ACK1,确认号y1序列号x1。同时客户端会进入ESTABLISHED状态。
5、服务器收到上述报文后会进入ESTABLISHED状态。此时客户端与服务器的TCP连接建立完成。
为什么TCP连接不是两次握手即为什么客户端最后会向服务器发送确认报文。
1假设只有两次握手客户端发出了一个连接请求报文A。但是由于网络原因A并未及时到达服务器。之后客户端发送了连接请求报文B并到达了服务器随后双方建立连接传输数据最后断开连接。此时客户端进入CLOSED状态服务器进入LISTEN状态。随后A报文到达服务器由于服务器处于LISTEN状态故服务器向客户端发送确认报文后进入ESTABLISHED状态并等待客户端发送数据。但是客户端此时处于CLOSED状态。收到服务器的确认报文后会丢弃该报文。服务器一直等待客户端传输数据会造成副武器的资源浪费。
2TCP的可靠传输要求通信双方判断自己发送的数据是否被接收到。TCP依靠的就是TCP报文中的序号和确认号。因此当TCP连接建立时双方均需要确认对方的初始序列号。而第三次握手则是客户端对服务器端的初始序列号的确认。因此第三次握手是必须的否则无法保证服务器端到客户端的可靠传输。
为什么TCP连接不是4次握手
三次握手已经能够证明客户端与服务器端之间的信道是可用的。再增加一次握手无非就是增加一点信道的可靠性但是无论多少次握手都无法使信道100%可靠因此也没有必要增加一次握手。
TCP断开连接的过程 1、客户端停止发送数据并发送连接释放请求报文报文含有FIN1,sequ并且进入FIN-WAIT-1状态。
2、服务器端接收到该报文后返回一个连接释放确认报文。包含ACK1,seqv,acku1,并进入CLOSE-WAIT状态此状态下服务器端可能还会向客户端发送数据。
3、客户端收到确认报文后进入FIN-WAIT-2状态等待服务器发送连接释放请求报文并接收服务器端可能发送的数据。
4、服务器端发送完所有数据之后会发送连接请求释放报文。报文包含FIN1,ACK1,seqw,acku1,。之后服务器进入LAST-WAIT状态等待客户端发来的连接释放确认报文。
5、客户端收到服务器的连接释放报文后返回ACK1ackw1而自己的序列号是sequ1此时客户端就进入了TIME-WAIT时间等待状态TCP连接此时未释放因为不确定服务器端是否还有数据没有到达客户端。因此必须经过2MSL最大报文生存时间后才进入CLOSED状态。 6、服务器只要收到了客户端发出的连接释放确认报文立即进入CLOSED状态。 HTTP1.0和HTTP1.1和HTTP2.0的区别