TCP协议的十个重要特性

  • TCP报头
  • 保证可靠性的机制
    • 确认应答(ACK机制,可靠传输的最核心机制)
    • 超时重传
  • TCP可靠性的保证机制总结

TCP是有连接,进行可靠传输,面向字节流的协议

TCP报头

先来分析分析每部分的含义和作用

源端口号/目的端口号:
表示数据从哪个进程来, 到哪个进程去.

32位序号/32位确认序号:
后面的图中解释

4位首部长度:
表示该tcp报头有多少个4字节(32个bit),所以TCP头部最大长度是15*4=60个字节

6位保留: 顾名思义, 先保留着, 以防万一

6位标志位
URG: 标识紧急指针是否有效
ACK: 标识确认序号是否有效
PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走
RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段
SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段

16位窗口大小: 看后图

16位检验和:
由发送端填充, 检验形式有CRC校验等. 如果接收端校验不通过, 则认为数据有问题. 此处的校验和不光包含TCP首部, 也包含TCP数据部分.

16位紧急指针:
用来标识哪部分数据是紧急数据.
选项和数据暂时忽略

保证可靠性的机制

确认应答(ACK机制,可靠传输的最核心机制)

确认应答其实就跟我们平时打电话一样,比如韦德今天要约詹姆斯去打球,韦德打电话给詹姆斯,然后詹姆斯回复,詹姆斯的每次回复就是一次确认应答。

对上述过程有个大致了解后我们再来看看我们TCP协议

超时重传

确认应答是比较理想的情况.数据在真实情况中传输过程中,可能会丢包的。
举个例子

实际的传输

超时的时间如何确定?
最理想的情况下, 找到一个最小的时间, 保证 “确认应答一定能在这个时间内返回”.
但是这个时间的长短, 随着网络环境的不同, 是有差异的.
如果超时时间设的太长, 会影响整体的重传效率;
如果超时时间设的太短, 有可能会频繁发送重复的包;

TCP为了保证无论在任何环境下都能比较高性能的通信, 因此会动态计算这个最大超时时间.
Linux中(BSD Unix和Windows也是如此), 超时以500ms(可以修改内核参数进行改变)为一个单位进行控制, 每次判定超时重发的超时时 间都是500ms的整数倍.
如果重发一次之后, 仍然得不到应答, 等待 2*500ms 后再进行重传.
如果仍然得不到应答, 等待 4 * 500ms 进行重传.
依次类推, 以指数形式递增累计到一定的重传次数, TCP认为网络或者对端主机出现异常, 强制关闭连接.

TCP可靠性的保证机制总结

TCP保证可靠性主要依靠下面7种机制:
1、检验和
TCP检验和的计算与UDP一样,在计算时要加上12byte的伪首部,检验范围包括TCP首部及数据部分,但是UDP的检验和字段为可选的,而TCP中是必须有的。计算方法为:在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存在错误。
2、序列号
TCP将每个字节的数据都进行了编号,这就是序列号。
序列号的作用:
a、保证可靠性(当接收到的数据总少了某个序号的数据时,能马上知道)
b、保证数据的按序到达
c、提高效率,可实现多次发送,一次确认
d、去除重复数据
数据传输过程中的确认应答处理、重发控制以及重复控制等功能都可以通过序列号来实现
3、确认应答机制(ACK)
TCP通过确认应答机制实现可靠的数据传输。在TCP的首部中有一个标志位——ACK,此标志位表示确认号是否有效。接收方对于按序到达的数据会进行确认,当标志位ACK=1时确认首部的确认字段有效。进行确认时,确认字段值表示这个值之前的数据都已经按序到达了。而发送方如果收到了已发送的数据的确认报文,则继续传输下一部分数据;而如果等待了一定时间还没有收到确认报文就会启动重传机制。
4、超时重传机制
当报文发出后在一定的时间内未收到接收方的确认,发送方就会进行重传(通常是在发出报文段后设定一个闹钟,到点了还没有收到应答则进行重传)
5、连接管理机制
连接管理机制即TCP建立连接时的三次握手和断开连接时的四次挥手。
6、流量控制
接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,导致接收端的缓冲区满,而发送方继续发送,就会造成丢包,继而引起丢包重传等一系列连锁反应。

计算机网络原理——传输层TCP协议的十个重要特性之保证可靠性的机制(确认应答和超时重传)相关推荐

  1. 网络原理 --- 传输层Ⅱ TCP协议中的确认应答,超时重传和连接管理

    文章目录 网络原理 传输层 TCP 协议 TCP的基本特性 1.确认应答 2.超时重传 3.连接管理 ❗❗①建立连接(三次握手) ②断开连接(四次挥手) 总结 网络原理 介绍TCP/IP协议中每一层里 ...

  2. 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

    文章目录 一.TCP 协议 特点 二.TCP 报文段首部格式 三.TCP 报文段首部 666 控制位 一.TCP 协议 特点 TCP 协议 特点 : ① 面向连接 : TCP 协议的连接是 " ...

  3. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  4. 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)

    目录 TCP协议 安全机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制机制 ​编辑拥塞控制机制 效率机制 滑动窗口机制 延迟应答机制 捎带应答机制 TCP协议 · 传输层的 ...

  5. 传输层——TCP协议

    目录 一.初步认识 二.TCP协议格式 2.1 初识协议格式 2.2 序号与确认序号 2.3 16位窗口大小 2.4 六个标志位 三.确认应答机制 四.超时重传机制 五.连接管理机制 5.1 三次挥手 ...

  6. 计算机网络原理-传输层

    传输服务 传输层是整个协议层次结构的核心,传输层位于网络层和应用之间,在终端用户之间提供透明数据传输,向上层提供可靠的数据传输服务,如图所示.网络层是通信子网的最高层,但却无法保证通信子网或路由器提供 ...

  7. 计算机网络 --- 传输层TCP协议

    TCP协议的特点 TCP是面向连接(虚连接)的传输层协议. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的. TCP提供可靠交付的服务,无差错.不丢失.不重复.按序到达.可靠有序,不丢 ...

  8. OSI模型第四层传输层--TCP协议

    1.传输层2个协议tcp和udp 2.tcp的可靠性(挂号信). 面向链接的:类似寄挂号信,对方收到了并且能够确认.所以也是可靠的传输. 最大报文传输:两端可以协商传输报文大小.(协商一个报文的大小) ...

  9. 【计算机网络】传输层 : TCP 可靠传输 ( 可靠传输机制 | 快速重传机制 )

    文章目录 一.TCP 可靠传输 二.TCP 可靠传输机制 三.TCP 快速重传 机制 一.TCP 可靠传输 可靠性 : 保证 接收方进程 从 TCP 缓冲区 中读取的数据 与 发送方进程 发送的数据 ...

  10. 5.2 计算机网络之传输层UDP协议

    文章目录 1.用户数据报协议UDP概述及特点优势 2.UDP首部格式 3.当传输层从IP层收到UDP数据报时 4.UDP校验 1.用户数据报协议UDP概述及特点优势 为什么应用开发人员宁愿在UDP之上 ...

最新文章

  1. android 耳机红外线,红外线耳机制作方法
  2. Css中图片局部放大,将图片中局部放大效果
  3. 数据结构和算法分析学习笔记(三)--二叉查找树的懒惰删除(lazy deletion)
  4. C链表(顺序表、静态链表区别)
  5. html5 斜率画线,一次函数的斜率与图像的关系
  6. phpstorm xdebug本地调试断点不生效_PHPSTORM与xdebug配置
  7. Spring MVC 数据回显
  8. C盘不能新建文件的问题解决办法
  9. 如何将matlab转成jav,Matlab将GUI转化为exe文件,并且进行发布
  10. Delphi XE5 for Android (三)
  11. Jsoup爬虫的基本使用
  12. python地理数据处理 下载_Python批量下载地理空间数据云数据!Python无所不能!...
  13. 如何对萤石云视频解码
  14. 金融行业数据容灾架构中的数据复制技术
  15. java与模式.pdf_Java与模式(清晰书签版)PDF文档
  16. 基于java+swing的员工出差报销管理系统(java+swing+Mysql+lw)
  17. Python下opencv使用笔记(二)(简单几何图像绘制)
  18. spring中@Autowired用法
  19. 模糊数学 4、模糊模式识别
  20. 项目管理的3个关键动作:启动、推进、复盘

热门文章

  1. 还在用PPT做组织架构图?公司都在用的架构图软件是什么?
  2. 想学编程做程序员,是学前端好还是学后台好?
  3. 使用GoldWave制作“淡入/淡出”效果
  4. 我想成为一个记计算机程序员英语作文,我的梦想高中英语作文带翻译
  5. TDSQL将发布免费版本,助力国产数据库生态完善
  6. erp系统在会计岗位中起到哪些作用?
  7. BZOJ3654 : 图样图森破
  8. 神经计算棒python_将Pytorch模型部署到Movidius神经计算棒
  9. 树莓派4B + darknet-yolov4-tiny + 英特尔第二代神经计算棒
  10. matlab中的常用符号,matlab特殊符号表