【计算机网络笔记Part1 概述】
【计算机网络笔记Part2 物理层(Physical Layer)】
【计算机网络笔记Part3 数据链路层(Data Link Layer)】
【计算机网络笔记Part4 网络层(Network Layer)】
【计算机网络笔记Part5 传输层(Transport Layer)】
【计算机网络笔记Part6 应用层(Application Layer)】
三次握手:
- 客户端发送SYN请求
(SYN(同部位)=1,seq(序号32位)=x(随时),此时确认号ack无意义(客户端还未收到服务器数据))请求,
进入SYN_SEND状态 - 服务端收到SYN请求,并返回一个ACK
(SYN=1,ACK=1,seq=y(随机),ack(ACK为1确认号有效)=x+1)应答,并发送一个SYN其请求,
服务器进入SYN_RECV状态 - 客户端收到服务端的SYN请求和ACK应答,发送ACK应答
(SYN=0,ACK=1,seq=x+1(接下来要发送的为x+1),ack=y+1(期待服务器发来的下一个序号为y+1)),
客户端进入ESTABLISHED状态,
服务端收到应答后进入ESTABLISHED。
如果没有收到应答,数据包都会根据TCP的重传机制进行重传。
四次挥手:
- 客户端发送(连接释放报文段)FIN包,主动断开TCP连接,
FIN(结束位)=1,seq=u(报文段第一个字节的序号/报文段标识)
客户端进入FIN_WAIT1状态
2.服务端收到FIN包后返回应答ACK确认报文段,
ACK=1, seq=v, ack=u+1
进入CLOSE_WAIT半关闭状态
客户端收到确认时进入FIN_WAIT2状态 - 服务器发送完数据,就发出连接释放报文段,主动关闭TCP连接
FIN=1,ACK=1,seq=w, ack=u+1(客户端等待期间未发送数据)
进入LAST_ACK状态 - 客户端回送一个确认报文,
ACK=1, seq=u+1,ack=w+1
进入TIME_WAIT状态(等待计时器设置的2MSL(最长报文段寿命)后彻底断开连接) - 服务器收到ACK应答后,进入CLOSED状态。