java 网络编程之TCP “三次握⼿”

TCP “三次握⼿”原理

image.png

每次握手(发送数据请求或应答)时,发送的数据为TCP报⽂,TCP段包含了源/目的地址,端口号,初始序号,滑动窗口大小,窗口 扩大因子,最大报文段长度等。

  • 还有⼀些标志位:
    (1)SYN:同步序号
    (2)ACK:应答回复
    (3)RST:复位连接,消除旧有的同步序号
    (4)PSH:尽可能的将数据送往接收进程
    (5)FIN:发送⽅完成数据发送
    (6)URG
  • 从图中,可以看出三次握⼿的基本步骤是:
  • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack,同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向[服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

你可能感兴趣的:(java 网络编程之TCP “三次握⼿”)