TCP三次握手

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

三次握手(客户端与服务器建立连接)

  • 服务器开启监听端口 从closed状态变为listen
  • 客户端发送TCP报文 SYN=1(报文不携带数据但消耗一个序号) , seq=x(序号位一共随机数),客户端从closed状态变为SYN-SENT状态
  • 服务器监听到报文,如果服务器同意建立连接就向客户端发送一个TCP报文 SYN=1,ACK=1(确认),seq=y,ack=x+1(希望客户端传输的下一个序号为x+1),服务器从LISTEN状态变为SYN-RCVD
  • 客户端收到报文再想服务器发送一共TCP报文 ACK=1,seq=x+1,ack=y+1,客户端从SYN-SENT状态变为ESTABLISHED状态
  • 服务器收到客户端的确认报文后也进入ESTABLISHED状态
  • 连接建立
    TCP三次握手_第1张图片

通俗一点

TCP三次握手_第2张图片

为什么是三次握手而不是两次或者四次

  • 能进行到第三次握手,说明双方都可以具备发送和接受消息的能力,就能建立链接了,如果再继续下去就是重复握手
  • 只有两次握手
    1.服务器无法判断客户端是否有接收信息的能力
    2.当线路堵塞时,客户端长时间未收到回送,会认为信息丢失。若线路恢复畅通,服务器接收到上一次的信息便会建立连接过程,但此时客户端并不会,造成资源浪费。

你可能感兴趣的:(TCP三次握手)