JavaScript--TCP三次握手,四次握手

TCP三次握手 (请求连接)

三次握手的目的是:同步连接双方的序列号和确认号并交换 TCP窗口大小信息。
三次握手过程
1客户端向服务器端发送SYN报文seq(x),请求连接,等待服务器端确认
2服务器端接收到客户端的SYN报文,向客户端发送确认信息 SYN seq(y)+ack(x+1)
3客户端收到服务器端的报文,向服务器端发送ACK )报文ack=y+1,这个报文段发送完毕以后,客户端和服务器端都进入established状态,完成TCP三次握手。

为什么需要三次握手?
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
一个被C丢弃的数据,被S接收到,S直接发送第二次握手后,对报文进行处理(此时并不知道该数据是否有用),如果三次握手,没有得到C的第三次握手,说明该报文是失效的,不用进行无用处理了

TCP四次握手 (请求关闭)

四次握手过程
1 主机1(可以使客户端,也可以是服务器端),设置seq=x+2 ack=y+1,向主机2发送一个FIN报文段; 表明主机1没有数据要发送了,请求关闭进入close状态
2 主机2收到了主机1发送的FIN报文段,向主机1回一个ACK(x+3)报文段, 我“同意”你的关闭请求;
3 主机2向主机1发送FIN报文段seq=y+1,请求关闭连接,同时主机2进入close状态;
4 主机1收到主机2发送的FIN报文段,向主机2发送ACK y+2报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,主机1也可以关闭连接了。

你可能感兴趣的:(JavaScript--TCP三次握手,四次握手)