TCP:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
1.HTTP工作原理
-
首先客户端和服务端先(TCP四次挥手)
-
发送HTTP请求
-
服务器接受请求并返回HTTP响应
-
客户端收到响应后断开连接(TCP四次挥手)
-
客户端浏览器解析HTML内容
2 .TCP 三次握手
-
第一次握手:客户端向服务端发出连接请求,将标志位SYN置为1,随机产生一个值seq=J;客户端进入SYN_SENT状态,等待服务器端确认
-
第二次握手:服务端响应客户端,并要求确认,将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K;服务器端进入SYN_RCVD状态
-
第三次握手:客户端校验(ackJ+1 && ACK1),校验通过将标志位ACK置为1,ack=K+1响应服务端;服务端收到后校验(ackK+1 && ACK1),校验通过连接建立成功;客户端、服务端进入ESTABLISHED状态,完成三次握手
注意为什么要三次握手:
客户端:C,服务端:S
第一次:C向S请求,此时C什么都不知道,S知道C发送正常,自己接收正常
第二次:S向C响应,此时C知道自己和S收/发正常,S知道C发送正常,自己接收正常
第三次:C向S响应,此时C知道自己和S收/发正常,S知道自己和C收/发正常
3 TCP四次挥手
-
第一次挥手:客户端向服务端发出断开请求,将标志位FIN置为M;客户端进入FIN_WAIT_1状态
-
第二次挥手:服务端响应客户端,发送ack=M+1;客户端进入FIN_WAIT_2状态
-
第三次挥手:服务端向客户端发送请求,将标志位FIN置为N;服务端进入LAST_ACK状态
-
第四次挥手:客户端响应服务端,发送ack=N+1; 客户端进入TIME_WAIT状态,等待2MSL后没后收到回复证明服务端已关闭连接,此时客户端就关闭连接完成四次挥手
注意:为什么四次挥手
客户端:C,服务端:S
第一次:C向S请求,C不再发送数据了,但是还能接收
第二次:S向C响应,S确认收到请求,但是还有数据要发送
第三次:S向C请求,S数据发完了,可以关闭了
第四次:C向S响应,C确认收到请求,等待超时关闭;S收到响应后立即关闭