传输层协议——TCP、UDP

目录

1、UDP 协议(用户数据报协议)

协议特点

报文首部格式

2、TCP 协议(传输控制协议)

协议特点

报文首部格式

TCP连接建立时的三次握手

TCP拆除连接的四次挥手

TCP的流量控制

TCP的拥塞控制

3、传输层端口号

三类端口号

一些熟知端口号


协议类型是否面向连接是否可靠传输效率开销通信方式
UDP单点/多点 到 单点/多点
TCP点到点

1、UDP 协议(用户数据报协议)

协议特点

  • 无连接
  • 面向报文
  • 首部开销小(8字节)
  • 尽最大努力交付,不保证可靠,不提供拥塞控制
  • 支持 一 or 多 对 一 or 多 通信

报文首部格式

2、TCP 协议(传输控制协议)

协议特点

  • 面向字节流(将应用层交下来的数据当成字节来处理,并对其进行相应的编号)
  • 面向连接
  • 每一条 TCP 连接只有两个端点(一对一的连接)
  • 保证可靠交付
  • 可以全双工通信

报文首部格式

源端口和目的端口的取值为0~65535;

序号(seq)表示本报文段的数据的第一个字节的序号,取值为 0 ~ 2^{32} - 1;

确认号(ack)表示期望收到对方下一个报文段的第一个数据字节的序号,取值为 0 ~ 2^{32} - 1;

数据偏移 表示TCP首部的长度,可以方便地识别出数据段的起始位置,最小长度为5(0101),单位是字节,则首部的最小长度为20字节;

紧急指针 当 URG 位为 1 时,此字段有效,并会指出需要紧急发送的数据;

填充字段 长度可变,用于确保TCP报文的首部长度为 4 字节的整数倍;

字段占位说明
控制字段URG(1bit)紧急位;当为1时表示有数据要紧急发送
ACK(1bit)确认位;这里是大写,与确认号(小写ack)区分开来;当为1时确认字段有效,表示肯定应答
PSH(1bit)推送位;置为1时,立即发送TCP报文
RST(1bit)复位位;置为1时表示TCP连接有严重错误,需要重新建立连接;也可以用于拒绝一个连接
SYN(1bit)同步位;置为1时,表示正在建立一个TCP连接
FIN(1bit)终止位;置为1时,表示正在释放一个TCP连接
窗口16 bit接收空闲窗口值,用于实现TCP流量控制

TCP连接建立时的三次握手

三次握手的作用是为了避免产生错误的连接

        主机 A 向服务器 B 发送 SYN 表示请求建立一个 TCP 连接,即便是没有数据,也要消耗一个 seq。此时直到没有收到目标服务器第一次回应前,主机 A 处于SYN-SENT 状态。

        服务器 B 在没有接收到TCP连接请求前,属于 LISTEN 的监听状态。

        服务器响应给主机 A SYN,表示也向主机 A 请求建立一个连接,ACK=1 表示同意了刚才主机 A 的连接请求,服务器 B 也要消耗一个 seq,seq = y,ack = x + 1,表示确认了刚刚主机发送过来的数据内容,并且提出期望,希望主机 A 下次发送消息给服务器 B 时的 seq 为 x + 1。此时服务器 B 需要等待主机 A 的响应,此时也转变到 SYN-SENT 状态。

        主机 A 接收到服务器B的回应,再回应服务器 B ,ACK=1 表示确认了服务器 B 的TCP建立请求,响应服务B的期望,即便展示还没有数据,也发送一个seq,seq = x + 1,同时 ack = y + 1,也是对刚刚服务器 B 发送过来的内容的一个确认,同时也提出期望,希望服务型下次发送消息时的 seq 为 y + 1。同时将状态设置为 ESTABLISHED,表示已经建立起连接。

        服务器 B ,收到主机 A 的响应,确认无误后也将状态设置为 ESTABLISHED,表示TCP连接成功建立。

        此时主机 A 和服务器 B 已经建立起了一条TCP连接,双方可以正常进行数据传送。

状态说明
SYN-SENT发送了SYN请求,请求建立TCP连接的第一步
LISTEN监听SYN报文的状态
SYN-RCVD接收到SYN请求报文后的状态
ESTABLISHEDTCP连接建立成功的状态

TCP拆除连接的四次挥手

        当主机 A 发送 FIN = 1 (断开连接)标志后,它会进入 FIN-WAIT-1 状态,等待对方确认关闭。当主机收到对方的 ACK = 1(确认)标志后,主机 A 会进入 FIN-WAIT-2 状态。此时,主机 A 已经断开了到对方的连接,但尚未完全断开TCP连接,仍等待对方发送 FIN 标志以确认对方的关闭。

        只有在主机 A 收到对方的 FIN 标志并发送 ACK 标志确认后,才会进入 TIME-WAIT 状态,此时主机才真正关闭了TCP连接。

状态说明
FIN-WAIT-1发送了第一个 FIN 请求,等待对方确认
FIN-WAIT-2等待对方的 FIN 请求
CLOSE-WAIT等待自己进程发出断开连接的命令
LAST-ACK等待对方最后一次确认
TIME-WAIT等待足够的时间,以确保对方接收到了确认
CLOSED关闭状态

TCP的流量控制

        流量控制是针对两端之间的通信的。考虑的是发送方和接收方之间的数据传输速率之间的差异。

        TCP流量控制是通过可变大小的滑动窗口机制实现的。即 让数据发送端传输的速率不要太快,让数据接收端来得及接收。
    

        数据传输窗口 win 在连接建立时由双方商定。但在通信的过程中,数据接收端可根据自己的资源情况,随时动态地调整对方的传输窗口大小。(上面经过协商后,窗口大小为3)

        接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

        接收方通常会在接收到数据后立即发送一个 ACK 报文,确认收到数据并通知发送方此时窗口的大小。如果接收方的缓冲区已满,它会将窗口大小设置为0,发送方就会停止发送数据。当接收方处理完数据后,它会将窗口大小设置为一个大于 0 的值,并发送 ACK 报文通知发送方,以便发送方继续发送数据。

TCP的拥塞控制

        拥塞控制是针对整个网络的通信而言的,考虑的是网络中的各个路由器和线路的资源利用情况,以避免因过多的数据流量导致网络拥塞。

        四种常见的拥塞控制方法:

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

拥塞窗口(cwnd):是发送方维护的一个状态变量,其大小取决于网络的拥塞程度,并且会动态变化;

慢开始门限(ssthresh):为了防止拥塞窗口 cwnd 的增长过大而引起网络拥塞所设置的一个门限值;

cwnd < ssthresh执行慢开始算法
cwnd = ssthresh可以使用慢开始算法,也可以使用拥塞避免算法
cwnd > ssthresh使用拥塞避免算法

慢开始:每经过一个传输轮次,cwnd 的值都会加倍,从小到大增大 cwnd;

拥塞避免:每经过一个传输轮次,cwnd 的值都会加 1,从小到大缓慢增大 cwnd;

快重传:接收方每收到一个失序报文段后就会立即发出重复确认 ACK,若发送方一连收到三个重复确认,就会立即重传对方尚未收到的报文段。因此能尽早重传未被确认的报文,而不是等待超时;

快恢复:当发送方连续收到三个重传确认 ACK 时,就执行乘法减小算法,把门限值减半(当前 cwnd值的一半),同时把 cwnd 值设置为减半后的门限值,并执行拥塞避免算法;

乘法减小:出现超时(可能是拥塞时),则 ssthresh 减半(当前 cwnd 值的一半),同时执行慢开始算法;

加法增大:执行拥塞避免算法,使 cwnd 增大;

 

        如上图,初始慢开始门限为16,cwnd 从 1 开始,每当发送方接收到一个 ACK 确认报文时,都会使 cwnd 增大(在达到门限值前使用慢开始算法增大)。

        [① ~ ②] 当到达门限值后,改用避免拥塞算法来缓慢增大 cwnd;

        [② ~ ③] cwnd = 24 时发生超时,则门限减半,即 ssthresh = 12,然后下一次接收到 ACK 确认报文时,cwnd 从 1 开始,使用慢开始算法来递增;

        [③ ~ ④] cwnd = 12 时,到达了门限,则改用拥塞避免算法缓慢递增;

        [④ ~ ⑤] 到 ④ 时,cwnd = 16,发送方一连收到三个重复确认,则门限减为当前 cwnd 的一半,即 ssthresh = 8,而 cwnd 变为与门限值一致;

        [⑤ ~] 由于cwnd = ssthresh,开始采用避免拥塞算法来进行增加;

3、传输层端口号

三类端口号

  • 熟知端口 0 ~ 1023
  • 登记端口 1024 ~ 49151
  • 客户端口号 49152 ~ 65535

一些熟知端口号

端口号服务类型
TCP 20文件传输协议(数据)
TCP 21文件传输协议(控制)
TCP 23Telnet 终端仿真协议
TCP 25SMTP 简单邮件发送协议
TCP 80超文本传输协议(HTTP)
TCP 110POP3 服务器(邮箱接收服务器)
TCP 443安全超文本传输协议(HTTPS)

 

端口号服务类型
UDP 53域名服务器(DNS)
UDP 67DHCP(服务端)
UDP 68DHCP(客户端)
UDP 69简单超文本传输协议(TFTP)
UDP 161SNMP(轮询)
UDP 162SNMP(陷阱)
UDP 520RIP 路由协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】设计模式之——建造者

建造者模式概念模拟实现建造者模式代码实现 建造者模式 首先先大体了解一下&#xff0c;建造者模式是什么意思&#xff0c;它是怎么实现的&#xff1f; 首先&#xff0c;建造者模式是一种创建型设计模式再一个它是使用多个简单的对象一步一步的搭建出一个复杂的对象它可以将一个…

windows WSL配置cuda,pytorch和jupyter notebook

机器配置 GPU: NVIDIA Quadro K2000 与 NVIDIA 驱动程序捆绑的CUDA版本 但按照维基百科的描述&#xff0c;我的GPU对应的compute capability3.0&#xff0c;允许安装的CUDA最高只支持10.2&#xff0c;如下所示。 为什么本地会显示11.4呢&#xff1f;对此&#xff0c;GPT是这…

objective-c 基础学习

目录 第一节&#xff1a;OC 介绍 ​​第二节&#xff1a;Fundation 框架 ​第三节&#xff1a;NSLog 相对于print 的增强 ​第四节&#xff1a;NSString ​第五节&#xff1a;oc新增数据类型 第六节&#xff1a; 类和对象 ​类的方法的声明与实现 ​第七节&#xff1a;类…

思科:iOS和iOSXe软件存在漏洞

思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…

【软考】4.2 关系代数

《 关系代数 》 表和表之间的逻辑运算 笛卡尔积&#xff1a;S1 x S2 投影&#xff1a;π&#xff1b;选择某一列&#xff08;属性&#xff09;&#xff1b;一个关系R的投影操作结果也是一个关系&#xff0c;记作Πa&#xff0c;它由从关系R中选出的A列元素构成&#xff1b;选择…

Excel·VBA日期时间转换提取正则表达式函数

标准日期转换 Function 标准日期(ByVal str$) As DateDim pat$, result$arr Array("(\d{4}).*?(\d{1,2}).*?(\d{1,2})", "(\d{4}).*?(\d{1}).*?(\d{1,2})")If Len(str) < 8 Then pat arr(1) Else pat arr(0)With CreateObject("vbscript.r…

怒刷LeetCode的第16天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;迭代 方法二&#xff1a;模拟 方法三&#xff1a;循环模拟 方法四&#xff1a;传递 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;回溯 方法二&#xff1a;枚举优化 第三题 题目来源 题目…

2023年中国电动汽车充换电站行业现状分析:随车配建私人充电桩增量持续上升[图]

充电站指为电动汽车提供充电服务的专用场所&#xff0c;由多台集中布置的充电设备以及相关的供电设备、监控设备﹑配套设施等组成。可将充电站规模分为3类&#xff1a;大型充电站、中型充电站和小型充电站。换电站指为电动汽车提供电池更换服务的场所。按换电模式分类&#xff…

竞赛选题 大数据商城人流数据分析与可视化 - python 大数据分析

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的基站数据分析与可视化 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度…

【强化学习】05 —— 基于无模型的强化学习(Prediction)

文章目录 简介蒙特卡洛算法时序差分方法Example1 MC和TD的对比偏差&#xff08;Bias&#xff09;/方差&#xff08;Variance&#xff09;的权衡Example2 Random WalkExample3 AB 反向传播(backup)Monte-Carlo BackupTemporal-Difference BackupDynamic Programming Backup Boot…

CCF CSP认证 历年题目自练Day19

题目一 试题编号&#xff1a; 201812-1 试题名称&#xff1a; 小明上学 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 题目背景   小明是汉东省政法大学附属中学的一名学生&#xff0c;他每天都要骑自行车往返于家和学校。为了能尽可能充…

电脑右键新建记事本不见了--设置恢复篇(无需操作注册表)

电脑右键新建记事本不见了–设置恢复篇&#xff08;无需修改注册表&#xff09; 电脑不知怎么想右键新建记事本结果竟然不见了&#xff0c;搜寻网上的都是什么修改注册表&#xff0c;粘贴代码修复&#xff08;感觉太复杂了&#xff09;&#xff0c;这里介绍通过设置内重新对记…