前言阅读本文前,请先了解计算机网络基础知识:献上一份全面 & 详细的计算机网络基础 学习指南
目录
1. 定义Transmission Control Protocol ,即 传输控制协议
属于 传输层通信协议 基于TCP 的应用层协议有HTTP 、SMTP 、FTP 、Telnet 和 POP3
2 特点面向连接、面向字节流、全双工通信、可靠 具体介绍如下:
3. 优缺点优点:数据传输可靠 缺点:效率慢(因需建立连接、发送确认包等)
4. 应用场景(对应的应用层协议)要求通信数据可靠时,即 数据要准确无误地传递给对方 如:传输文件:HTTP、HTTPS、FTP等协议;传输邮件:POP、SMTP等协议
万维网:HTTP 协议 文件传输:FTP 协议 电子邮件:SMTP 协议 远程终端接入:TELNET 协议
5. 报文段格式首部前20个字符固定、后面有4n个字节是根据需而增加的选项 故 TCP首部最小长度 = 20字节
6. 建立连接过程成功进行TCP的三次握手后,就建立起一条TCP连接,即可传送应用层数据 注 因 TCP 提供的是全双工通信,故通信双方的应用进程在任何时候都能发送数据 三次握手期间,任何1次未收到对面的回复,则都会重发
特别说明:为什么TCP建立连接需三次握手?SYN洪泛攻击:
7. 释放连接过程在通信结束后,双方都可以释放连接,共需 四次挥手 具体如下
特别说明:为什么TCP释放连接需四次挥手?即释放连接后,都无法接收 / 发送消息给对方
延伸疑问:为什么客户端关闭连接前要等待2MSL时间? 即 TIME - WAIT 状态的作用是什么; MSL = 最长报文段寿命(Maximum Segment Lifetime )
即 在下1个新的连接中就不会出现早已失效的连接请求报文
8. 无差错传输8.1 含义8.2 基础:滑动窗口 协议每收到一个确认帧,发送窗口就向前滑动一个帧的距离 当发送窗口内无可发送的帧时(即窗口内的帧全部是已发送但未收到确认的帧),发送方就会停止发送,直到收到接收方发送的确认帧使窗口移动,窗口内有可以发送的帧,之后才开始继续发送 具体如下图:
对于接收端:当收到数据帧后,将窗口向前移动一个位置,并发回确认帧,若收到的数据帧落在接收窗口之外,则一律丢弃。 滑动窗口 协议的重要特性停止等待协议:发送窗口大小=1,接收窗口大小=1;即 单帧滑动窗口 等于 停止-等待协议 后退N帧协议:发送窗口大小>1,接收窗口大小=1。 选择重传协议:发送窗口大小>1,接收窗口大小>1。
8.3 实现无差错传输的解决方案核心思想:采用一些可靠传输协议,使得 出现差错时,让发送方重传差错数据:即 出错重传 当接收方来不及接收收到的数据时,可通知发送方降低发送数据的效率:即 速度匹配
解决方案1:自动重传请求协议ARQ(针对 出错重传)下面,将主要讲解 上述3类协议 类型1:停等式ARQ(Stop-and-Wait)即 :发送窗口大小=1、接收窗口大小=1
发送方每发送一帧,要等到接收方的应答信号后才能发送下一帧 接收方每接收一帧,都要反馈一个应答信号,表示可接下一帧 若接收方不反馈应答信号,则发送方必须一直等待
类型2:后退N帧协议也称:连续ARQ协议 即 :发送窗口大小>1、接收窗口大小=1
示例讲解本示例 = 源站 向 目的站 发送数据帧。具体示例如下: 类型3:选择重传ARQ(Selective Repeat)即 :发送窗口大小>1、接收窗口大小>1
类似于类型2(后退N帧协议),此处仅仅是接收窗口大小的区别,故此处不作过多描述 由此可见,若信道传输质量很差,导致误码率较大时,后退N帧协议不一定优于停止-等待协议
解决方案2:流量控制 & 拥塞控制(针对 速度匹配)措施1:流量控制
措施2:拥塞控制拥塞:对网络中的资源需求 > 该资源所能提供的部分
其中,涉及4种算法,即 慢开始 & 拥塞避免、快重传 & 快恢复
具体介绍如下 解决方案1:慢开始 & 拥塞避免1.1 储备知识:拥塞窗口、慢开始算法、拥塞避免算法a. 拥塞窗口b. 慢开始算法并不是指拥塞窗口(cwnd) 的增长速率慢
c. 拥塞避免 算法拥塞避免 并不可避免拥塞,只是将拥塞窗口按现行规律缓慢增长,使得网络比较不容易出现拥塞 相比慢开始算法的加倍,拥塞窗口增长速率缓慢得多
1.2 解决方案描述(慢开始 & 拥塞避免)解决方案2:快重传 & 快恢复快重传 & 快恢复的解决方案 是对慢开始 & 拥塞避免算法的改进 2.1 储备知识:快重传算法、快恢复算法a. 快重传算法b. 快恢复当发送方连续收到3个重复确认后,就: 执行 乘法减小 算法:把 慢开始门限(ssthresh) 设置为 出现拥塞时发送方窗口值的一半 = 拥塞窗口的1半 将拥塞窗口(cwnd) 值设置为 慢开始门限ssthresh 减半后的数值 = 拥塞窗口的1半 执行 加法增大 算法:执行拥塞避免算法,使拥塞窗口缓慢地线性增大。
注: 由于跳过了拥塞窗口(cwnd) 从1起始的慢开始过程,所以称为:快恢复 此处网络不会发生网络拥塞,因若拥塞,则不会收到多个重复确认报文
2.2 解决方案描述(快重传 & 快恢复)至此,关于TCP 无差错传输的知识讲解完毕。
9. 与UDP协议的区别
10. 总结
|