目录
1.三次握手
图 1
第一次握手:客户端发送SYN报文
SYN标识:1,seq(序号):X
第二次握手:服务端发送SYN+ACK报文
SYN标识:1,ACK标识:1,seq(序号):Y,ack(确认号):X+1
第三次握手:客户端发送ACK报文
ACK标识:1,seq(序号):X+1,ack(确认号):Y+1
2.三次握手作用?
图 2
目的:确认客户端和服务端接收以及发送能力是否正常
确认的信息如下:
1.窗口大小
2.序号
3.选项:
- kind 2:最大报文传输长度(MSS)
- kind 3:窗口扩大因子
- kind 4:SACK支持
3.为什么握手是三次,而不是两次或者四次?
- 两次握手容易出现以下问题:
情况1.已失效的连接请求报文段突然又传送到了服务端产生错误
情况2.两次握手只能保证单向连接正常
- 四次握手:没有必要
情况1:已失效的连接请求报文段突然又传送到了服务端产生错误
客户端发送第一次握手,第一次握手在网络中滞留,客户端重发第一次握手,服务端可能接收两个握手消息,从而建立两个TCP连接,客户端接收两个第二次握手消息,但只建立一个TCP连接,连接出错。
图 3
情况2:两次握手只能保证单向连接正常
客户端发送第一次握手,服务端成功接收到第一次握手,服务端发送第二次握手并成功建立TCP连接,如果第二次握手丢失,客户端无法建立TCP连接,服务端也无法知道客户端是否建立连接。
图 4