LWIP学习笔记5——TCP协议

1 TCP 协议

TCP 协议(TransmissionControl Protocol,传输控制协议) 它是最常用传输层协议,也是最稳定传输层协议,很多上层应用都是依赖于 TCP 协议进程传输数据,如SMTP、 FTP 等等。
一个完整的 TCP 传输必须有数据的交互,接收方在接收到数据之后必须正面进行确认,向发送方报告接收的结果,而发送方在发送数据之后必须等待接收方的确认,同时发送的时候会启动一个定时器,在指定超时时间内没收到确认,发送方就会认为发送失败,然后进行重发操作,这就是重传报文。
TCP 提供可靠的运输层, 但它依赖的是 IP 层的服务, IP 数据报的传输是无连接、 不可靠的,因此它要通过确认来知道接收方确实已经收到数据了。但数据和确认都有可能会丢失, 因此 TCP 通过在发送时设置一个超时机制(定时器) 来解决这种问题, 如果当超时时间到达的时候还没有收到对方的确认,它就重传该数据。
CP 协议是全双工通信。

1.1 窗口的概念

TCP 提供了流量控制服务(flow-control service)以消除发送方使接收方缓冲区溢出的可能性。流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速率相匹配, TCP 通过让发送方维护一个称为接收窗口(receive window)的变量来提供流量控制。
TCP 协议中使用滑动窗口的流量控制方法,它允许接收方根据自身的处理能力来确定能接收数据的多少,因此会告诉发送方可以发送多少数据过来,即窗口的大小,而发送方尽可能将数据都多发到对方那里,所以发送方会根据这个窗口的大小发送对应的数据 。
在这里插入图片描述
在这里插入图片描述
关于窗口的概念必须强调三点:

  1. 发送方的发送窗口并不总是和 接收方接收窗口一样大,因为有一定的时间滞后。
  2. TCP 标准没有规定对不按序到达的数据应如何处理, 通常是先临时存放在接收窗
    口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
  3. TCP 要求接收方必须有确认的功能,这样可以减小传输开销。

1.2 端口号的概念

TCP 协议的连接是包括上层应用间的连接,简单来说, TCP 连接是两个不同主机的应用连接,而传输层与上层协议是通过端口号进行识别的,如 IP 协议中以 IP 地址作为识别一样,端口号的取值范围是 0~65535,这些端口标识着上层应用的不同线程,一个主机内可能只有一个 IP 地址,但是可能有多个端口号,每个端口号表示不同的应用线程。
在这里插入图片描述
在这里插入图片描述

1.3TCP 报文段结构

在这里插入图片描述
在这里插入图片描述

2 TCP 连接

2.1 “三次握手” 建立连接

在这里插入图片描述

2.2 “四次挥手” 终止连接

在这里插入图片描述

2.3 TCP 状态

在这里插入图片描述
TCP 状态转移:
在这里插入图片描述
对图 13-14 的补充说明(很重要,要牢牢记住):
 虚线:表示服务器的状态转移。
 实线:表示客户端的状态转移。
 图中所有“关闭”、“打开”都是应用程序主动处理。
 图中所有的“超时”都是内核超时处理。

2.4 TCP 层的工作流程示意图

在这里插入图片描述

发布了30 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_31039061/article/details/104750876