TCP运输连接的建立和释放

运输连接的三个阶段:

  • 建立连接
  • 数据传送
  • 连接释放
    TCP报文首部字段:

序号seq:本报文段所发送的第一个字节的序号。

确认号ack:期望收到对方下一个报文的第一个数据字节的序号。
例如B正确收到了A发送的一个报文段,其序号字段值是501,而数据长度是200字节(501~700),这表明B正确收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号为701,于是B在发送A的确认报文中把确认号置为701.
- 即:若确认号 = N,表明到序号N-1的所有数据都已正确收到。

确认位ACK:仅当ACK = 1时, 确认号字段才有效。

同步SYN:在建立连接时用来同步序号。
- 当SYN =1, ACK = 0时,表明这是一个请求报文,表明请求建立连接。
- 若对方同意建立连接,则发送响应报文,响应报文中SYN = 1, ACK = 1。

终止FIN:用来释放一个连接。当FIN = 1 时,表明此报文的发送方的数据已经发送完毕,请求释放连接。

记忆版1

TCP连接建立:三次握手(简)

TCP运输连接的建立和释放

流程:请求-确认-对确认的确认

步骤:

  1. 客户端向服务器端发送SYN包;
  2. 服务端向客户端发送SYN+ACK;
  3. 客户端回复ACK。

描述:客户端发送连接请求报文段,服务器端发送确认报文段,客户端发送确认报文段。

发生的错误:已失效的连接请求报文段
如果是两次握手:假如A发送了两次“连接请求报文段”,其中一个完成了建立连接、传输数据、关闭连接的操作后。服务器端对另一个“连接请求报文段”进行了确认而进入等待,浪费资源。而三次握手机制中由于服务器端并没有收到客户端的“确认报文段”,因而知道不必太长等待。

TCP连接释放:四次挥手(简)

TCP运输连接的建立和释放

流程:A:拜 B:好吧,拜 A:好吧。

  1. 客户端向服务器端发送FIN;
  2. 服务器端回复ACK,并进入wait状态;
  3. 服务器端确认并发送FIN;
  4. 客户端回复ACK。