TCP协议的工作原理:TCP连接建立、报文传输、TCP连接释放。
1.TCP连接建立:三次握手
(1)最初客户端TCP进程是处于“CLOSE”(关闭)状态。当客户端准备发起一次TCP连接,进入“SYN-SEND”(准备发送)状态时,它会向处于“LISTEN”(收听)状态的服务器端TCP进程发送第一个控制位SYN=1的“连接建立请求报文”。
“连接建立请求报文”是不携带任何数据字段的,但是需要给报文一个序号。图中标为:SYN=1 , seq=x
注意:“连接建立请求报文”的序号seq的值x是随机产生的,且不能为0.
为什么 x 不能为0?
避免因TCP连接非正常断开而可能引起的混乱。如果在连接突然中断时,可能有一个或两个进程同时等待对方的确认应答,而这个时候有一个新连接的序号也是从0开始,那么接收进程有可能认为是对方重传的报文,这样就有可能造成连接过程的错误。
(2)服务器端在接收到“连接建立请求报文”后,如果同意建立连接,则向客户端发送第二个控制位 SYN=1, ACK=1的“连接建立请求确认报文”。确认号