TCP传输机制[简略]

发布于 2020-12-15  1.15k 次阅读


前言

曾经学习过一段时间的数通方向的课程,后来又转向Linux和云计算。学习过的知识都忘得差不多了。今天翻起来之前记过的笔记,看到有关于TCP传输方面的记录,就又整理了一下。
去掉了关于底层TCP头部包的分析。

一、主机和服务器在进行交互信息之前的动作

1、TCP建立连接的过程(三次握手)--->成功标志着双方都遵守TCP协议

PC与服务器通过三次握手建立可靠连接(双方都遵守这个协议)

三次握手

Send SYN:发送请求消息 seq:序列号(为传输的消息做一个编号)

ACK:确认消息 ack:确认序列号

  1. 主机A发送了一个标识SYN的数据段,表示期望与服务器A建立连接,数据段的序列号(seq)为a。
  2. 服务器A向主机A回复标识为ACK的数据段确认序列号(ack+1)为主机A的序列号加1(a+1),一次作为对主机A的SYN报文的确认;同时向主机A发送一个SYN的数据段,数据段的序列号为b。
  3. 主机A发送了一个标识为ACK的数据段,此数据段的序列号(seq)为a+1(和第一次序列号+1),确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文段的确认。

基于上一次消息的序列号向对方进行确认。

二、主机和服务器在进行交互信息时的动作

2、TCP流量控制--协商窗口大小--->窗口字段1

只会对超出流量进行控制,不超出就不控制。

信息交互

主机A向服务器A发送消息,主机A不知道服务器A的窗口大小,所以先发四段消息,服务器A只能接受三段消息,所以服务器A发送以ACK 3073响应(ACK+1),窗口大小调整为3072,表明服务器的缓存区只能处理3072个字节的数据段。于是主机A改变其发送速率,发送窗口大小为3072的数据段。

3、TCP传输过程(丢包重传机制)

丢包重传

注释丢包重传

如三个数据段第一个丢包,则三数据段重新传输。三个数据段丢了最后一个数据段,则只传最后一个数据段。三个数据段丢了中间那个数据段,则传最后两个数据段。

三、主机和服务器在进行交互信息之后的动作

4、TCP关闭连接(四次分手)

四次分手

FIN:结束消息

  1. 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
  2. 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。(主机)---释放主机完成
  3. 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
  4. 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。

我们都要做生活的高手。