前言
对于三次握手可能很多人都不陌生了,在面试中常常被提到。所以今天特意来讲讲。争取一期下来我们可以做到不用背就可以清晰的讲出 三次握手。
为什么要三次握手?
因为要保持连续和可靠性约束,TCP协议要保证每一条发出的数据必须给返回,返回数据叫作 ACK(确认字段也就是响应返回). 要保证发送端与接收端之间都 ACK。
三次握手是怎样的?
我们注意到三次握手的操作流程是
- 客户端发送一个SYN段指明客户端打算连接的服务器的端口,以及序号 seq x。
- 服务器返回包含服务器的初始序号的SYN报文段作为应答。同时将确认序号设置为客户的seq 加1 以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
- 客户必须将确认序号设置为服务器的SEQ加1以对服务器的SYN报文段进行确认。
以上三个报文段完成连接的建立,这个过程就称为三次握手。我们可以看到首先是服务端发送了确认的信号,但是为了保证客户端也确认 所以也要等到客户端返送回一个ACK确认 这就能确保两端之间已经正式连接上了。 就是这么的简单。
名词解释:
- SYN 创建一个连接,同步报文段 1 是 0 否
- ACK 确认报文段 确认接收到的数据 1 是 0 否
- SEQ 表示序列号
- ISN 初始序列号 一般 sequence 为ISN