面试题答案
一键面试第一次握手(客户端发送SYN包)
- 主要信息:
- SYN(同步序列号):这是一个标志位,表明此包用于同步连接。同时会携带一个随机生成的初始序列号(Initial Sequence Number,ISN),记为
seq=x
。
- SYN(同步序列号):这是一个标志位,表明此包用于同步连接。同时会携带一个随机生成的初始序列号(Initial Sequence Number,ISN),记为
- 作用:
- 客户端通过发送SYN包,向服务器表明自己想要建立连接的意愿。服务器接收到该包后,就知道客户端打算与它进行通信。随机生成的初始序列号
x
为后续数据传输的序列号计数提供了起始点,用于保证数据传输的有序性和准确性。
- 客户端通过发送SYN包,向服务器表明自己想要建立连接的意愿。服务器接收到该包后,就知道客户端打算与它进行通信。随机生成的初始序列号
第二次握手(服务器端发送SYN + ACK包)
- 主要信息:
- SYN:同样是同步标志位,携带服务器端随机生成的初始序列号,记为
seq=y
。 - ACK:确认标志位,确认号
ack=x+1
。表示服务器已经收到客户端的SYN包,并且期望下一次接收到序号为x+1
的数据。
- SYN:同样是同步标志位,携带服务器端随机生成的初始序列号,记为
- 作用:
- SYN 标志位及序列号
y
,告知客户端服务器也准备好建立连接,并给出自己的初始序列号,用于后续数据传输的计数。ACK 及确认号x+1
,是对客户端第一次握手SYN包的确认,让客户端知道服务器已正确接收其连接请求,且为后续数据传输的确认提供基础。
- SYN 标志位及序列号
第三次握手(客户端发送ACK包)
- 主要信息:
- ACK:确认标志位,确认号
ack=y+1
。 - 序列号:
seq=x+1
(这里的序列号x+1
是基于第一次握手中客户端的初始序列号x
递增的)。
- ACK:确认标志位,确认号
- 作用:
- ACK 标志位及确认号
y+1
,告知服务器客户端已收到服务器的SYN + ACK包,并且确认服务器的初始序列号y
。序列号x+1
表明客户端开始使用从初始序列号递增后的序号进行数据传输,至此,TCP连接建立完成,双方都确认对方已准备好,可以开始正式的数据传输。
- ACK 标志位及确认号