1. Wireshark的TCP三次握手
右键->追踪流->TCP
TCP 状态 Source IP Destination IP Protocol Info
第一次握手:10.92.246.134 -> 203.208.41.87 TCP 【SYN seq=x】[SYN]Seq=x=0 具体{Flags:0x002(SYN),Sequence number:0}
第二次握手:203.208.41.87 -> 10.92.246.134 TCP 【SYN+ACK seq=y,ack=x+1】[SYN,ACK]Seq=y=0 Ack=x+1=1具体{Flags:0x012(SYN,ACK),Sequence number:0,Acknowledgment number:1}
第三次握手:10.92.246.134 -> 203.208.41.87 TCP 【ACK seq=x+1,ack=y+1】[ACK]Seq=x+1=1 Ack=y+1=1具体{Flags:0x010(ACK),Sequence number:1,Acknowledgment number:1}
缩写术语:
- 大写SYN:TCP标志位,全称为synchronous,表示建立联机
- 大写ACK:TCP标志位,全称为acknowledgement,表示确认
- 小写seq: 全称为 Sequence Number,记录包的序号,TCP 按照报文字节进行编号,用于解决包在网络中的乱序问题
- 小写ack: 全称为 Acknowledgment Number,确认序列号,用于向发送方确定已收到了哪些包,用来解决不丢包的问题
- Flags:包的类型,即TCP标志位,例如SYN、ACK、SYN+ACK
2. TCP状态变化
客户端 服务端
CLOSED CLOSED
SYN-SENT -------SYN seq=x----------> LISTEN
SYN-SENT <--SYN+ACK seq=y,ack=x+1--- LISTEN
SYN-SENT ---ACK seq=x+1,ack=y+1----> SYN-RCVD
ESTABLISHED ESTABLISHED
第一次握手:
握手过程:
客户端发生 SYN 报文,并进入 SYN-SENT 状态,等待服务端的确认;
作用:
服务端可以得出结论:客户端的发送能力是OK的,服务端的接收能力是OK的
第二次握手:
握手过程:
a.服务端收到 SYN 报文,需要给客户端发生 ACK 确认报文;
b.同时服务端也要向客户端发生一个 SYN 报文,合计向客户端发送SYN+ACK报文,并进入SYN-RCVD;
作用:
客户端得出结论:客户端得出结论:客户端和服务端的收发能力都是OK,但是服务端还不知道客户端的接收能力
第三次握手:
握手过程:
a. 客户端收到SYN+ACK报文;
b. 并向服务端发送确认包,客户端进入ESTABLISHED状态;
c. 待服务端收到ACK报文后,也会进入ESTABLISHED状态,至此完成三次握手;
作用:
服务端得出结论:客户端的接收能力是OK的,即现在客户端和服务端都相互确定收发能力OK