IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP数据传输协议详解 -> 正文阅读

[网络协议]TCP数据传输协议详解

1、TCP概述

1、点对点
一个发送方,一个接收方

2、可靠地,按顺序的字节流
没有报文边界

3、管道化(流水线)
TCP拥塞控制和流量控制设置
窗口大小

4、发送和接收缓存

5、全双工数据
在同一连接中数据流双向流动
MSS:最大报文段大小

6、面向连接:
在数据交换之前,通过握手(交换控制报文)初始化发送方、接收方的状态变量

7、有流量控制
发送方不会淹没接收方

2、TCP报文段的首部格式

1、TCP是面向字节流的,但是TCP传送的数据单元是报文段
2、一个TCP报文段分为首部和数据两部分
3、TCP首部的最小长度是20字节
在这里插入图片描述

在这里插入图片描述

4、首部固定部分各字段的意义如下:
1)源端口和目的端口
各占2个字节(1字节 = 8bit),分别写入源端口号和目的端口号。

2)序号(报文段序号):报文段首字节在字节流的编号。
占4个字节,在一个TCP连接中传送的字节流中的每一个字节都按照顺序编号,整个要传送的字节流的起始序号必须在连接建立是设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。

3)确认号
占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。
在这里插入图片描述
总之,确认号 = N,则表明:到序号N-1为止的所有数据都已正确收到。
在这里插入图片描述
在这里插入图片描述
主机A发送X是从42开始,发送一个字节C【报文段中只包含一个字节】,主机B发送的ACK=79,说明78及以前的数据都收到了,告诉主机A希望再从X=79开始传

4)数据偏移
占4位,它指出TCP报文段的数据起始处距离TCP报文段起始处有多远。

5)紧急URG
当URG设置为1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针字段配合使用。

6)确认ACK
仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
TCP规定,在连接建立后所有传送的报文段都必须把ACK设置为1

7)窗口
在这里插入图片描述

5、MSS:最大报文段长度
MSS是每一个TCP报文段中的数据字段的最大长度。
数据字段加上TCP首部才等于整个的TCP的报文段。所有MSS并不是整个TCP报文段的最大长度。而是TCP报文段长度减去TCP首部长度。

MSS应尽可能大些,只要在IP层传输时不需要再分片就行。对网络的使用率就高一些。如果TCP报文段十分长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片转配成原来的TCP报文段。当传输出错时还要进行重传。这些也都会使开销增大。
若主机没有填写这一项,则MSS的默认值是536字节长。因此,所有在互联网上的主机都应能接受的报文段长度是536+20(固定首部长度) = 556字节。
在这里插入图片描述

6、往返时间RTT
第一,用来计算往返时间RTT。发送方在发送报文段时把当前时钟的时间值放入时间戳字段,接收不方在确认该报文段时把时间戳字段值复制到时间戳回送回答字段。因此,发送方在收到确认服文后,可以准确地计算出 RTT来。

第二,用于处理TCP序号超过232的情况,这又称为防止序号绕回PAWS S(Protect Against Wrapped Sequence numbers)。我们知道,TCP 报文段的序号只有32位,而每增加2的32次方个序号就会重复使用原来用过的序号。当使用高速网络时,在一次 TCP连接的数据传送。为了使接收方能够把新的报文段和迟到很久的报文段区分开,可以再报文段中加上这种时间戳。

3、超时重传时间的选择

1、TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。
在这里插入图片描述

2、TCP采用了一种自适应算法
RTT:报文段的往返时间
在这里插入图片描述

3、超时重传时间RTO
在这里插入图片描述

4、TCP:可靠数据传输

1、TCP在IP不可靠服务的基础上建立了rdt
1)管道化的报文段
2)累计确认
3)单个重传定时器
定时器只和最老的报文段相关联
4)是否可以接收乱序的,没有规范
接收方收到一个乱序的报文段怎么处理,接收方可以进行缓存也可以抛弃掉

2、TCP发送方事件
从应用层接收数据:
1)用nextseq创建报文段
2)序号nextseq为报文段首字节的字节流编号
3)如果还没有运行,启动定时器
* 定时器与最早未确认的报文段关联
* 过期间隔:TimeOutInterval
4)超时
* 重传后延最老的报文段
* 重启定时器
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
TCP快速重传是在超时重传时间到来之前,发送方连续收到3个ACK,发送方快速重传。

5、TCP:流量控制

1、接收方控制发送方,不让发送方发送太多,太快以至于让接收方的缓冲区溢出
在这里插入图片描述

6、TCP连接管理

在这里插入图片描述

7、拥塞控制原理

拥塞:
1、非正式的定义:“太多的数据需要网络传输,超过了网络的处理能力”
2、与流量控制不同
3、拥塞的表现
1)分组丢失(路由器缓冲区溢出)
2)分组经历比较长的延迟(在路由器的队列中排队)
4、网络中前10位问题

7.1 导致网络拥塞的原因

1、当某个节点缓存的容量太小时,到达该节点的分组因无存储空间暂存而不得不被丢弃。

2、简单的对节点缓存扩容也解决不了网络拥塞的问题,原因是由于链路的容量和处理机的速度并没有提高,在队列中的绝大多数分组的排队等待时间会大大增加,结果上层软件只好把他们进行重传(超过重传时间)。

3、如果一个路由器没有足够的缓存空间,它就会丢弃一些新到的分组。但是当分组被丢弃,发送这一分组的源点就会重传这一分组,甚至可能还要重传多次,这样会引起更多的分组流入网络和被网络中的路由器丢弃。反而会加剧网络的拥塞。

在这里插入图片描述

在这里插入图片描述
1、理想的拥塞控制作用下,网络的吞吐量仍然维持在其所能达到的最大值。
2、实际的拥塞控制情况下,随着提供的负载的增大,网络吞吐量的增长速率逐渐减少。当提供的负载达到某一数值时,网络的吞吐量反而会随着提供的负载的增大而降低。当提供的负载继续增大到某一数值时,网络的吞吐量就下降到零,网络已无法工作,这就是所谓的死锁。

在这里插入图片描述
网络拥塞的原因:
1、为了达到有效的输出,需要输入更多的数据。在网络拥塞的时候需要重传很多没有不必要的数据,从而加速了网络拥塞的程度,使得网络变得更拥塞。

在这里插入图片描述

8、TCP拥塞控制

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

在这里插入图片描述

8.1 TCP的拥塞控制方法

1、慢开始算法:当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入到网络,那么就有可能引起网络发生拥塞。经验证明,较好的方法是先探测一下,及由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。
在这里插入图片描述
拥塞窗口cwnd是按倍数增加的。

2、拥塞避免算法:是让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是像慢开始阶段那样加倍增长。因此在拥塞避免阶段就有“加法增大”的特点。这表明在拥塞避免阶段,拥塞窗帘cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增大速率缓慢得多。

3、快重传
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:21:54  更:2022-09-30 01:22:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/31 5:35:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码