以太网详解(八)传输层协议:TCP/UDP 协议

文章目录

  • 传输层协议概述
    • 为什么需要传输层?
    • 传输层功能
      • 网络层与传输层在实现 “端到端” 传输的异同
      • 两类服务:面向连接/无连接服务
  • 传输控制协议 TCP
    • TCP 协议数据单元格式
    • TCP 的重传机制
      • 快重传和快恢复
        • 快重传举例
        • 快恢复算法
  • 用户数据报协议 UDP
    • UDP 概述
    • UDP 基本工作过程
    • UDP 用户数据报的首部(Head)格式
  • TCP 与 UDP 的比较

传输层协议概述

在这里插入图片描述

为什么需要传输层?

  • OSI网络层是通过 “逐节点”(Hop-by-Hop)实现源主机到目的主机间网络协议数据单元(Internet 中的 IP)的 “端到端” 传输的。即使网络层在节点间提供服务确认,仍不能保障 “端到端” 可靠传输(如果中间节点对收到的数据确认后,在前传前出现节点故障)。
  • 网络层地址仅能标识网络设备或端系统的网络端口,不能作为标识系统内部的多个应用进程(用户平台的应用进程或信控管理平台的特殊应用进程)的标识符,因此需要应用进程传输层标识符(TSAP);在 Internet 中称为 “端口号”。
    在这里插入图片描述

传输层功能

  • 连接管理
  • 流量控制
  • 差错检测
  • 对用户请求的响应
  • 建立无连接或面向连接的通信
    — 面向连接:会话建立、数据传输、会话拆除
    — 无连接:不保证数据的有序到达

网络层与传输层在实现 “端到端” 传输的异同

  • 网络层(主机间):通过通信子网中中继系统逐级转发实现的 “源”、“目的” 主机间物理上的 “端到端” 的用户数据的传输。但网络层协议通常只定义节点间的转发过程,因此网络层协议执行过程不是 “端到端” 直接通信,而是 “逐级”(Hop-by-Hop)转发实现的物理上的端到端通信。
  • 传输层(应用进程间):由于用户数据在通信子网的用户数据平台上没有传输层实体,因此,应用进程利用传输层实现进程间的传输只是概念上/逻辑上的 “端到端” 的 “直接传输”。物理上仍然利用网络层逐级实现的端到端服务。

两类服务:面向连接/无连接服务

  • 提供面向连接服务的协议:TCP (Transmission Control Protocol) - RFC 973
  • 提供无连接服务的协议:UDP (UserDatagram Protocol) - RFC 768

传输控制协议 TCP

客户(主动请求) / 服务器(被动响应)工作模式:

建立连接:通过三次握手方式建立连接。
在这里插入图片描述
数据传输

  • 基本数据传输:能连续、双向传输字节流。
  • 提供敦促接收方迅速将收到的数据提交应用进程的功能(PUSH)。
  • 可靠性:数据损坏、丢失、重复和错序必须能恢复(机制:以字节为基础的序号、正确接收确认(ACK)、重传时钟、检错)。
  • 流量控制:窗口可变的 “滑动窗口” 流控方式,窗口大小以 “字节” 为基础。

连接拆除
请求拆除、两次拆除确认等待、请求方在确认的方式。
在这里插入图片描述

TCP 协议数据单元格式

在这里插入图片描述
源端口和目的端口字段
各占 2 字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。

序号字段
占 4 字节。TCP 连接中传输的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段
占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移
占 4 bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移” 的单位不是字节而是 32 bit 字(4 字节为计算单位)。

保留字段
占 6 bit,保留为今后使用,但目前应置为 0。

紧急比特 URG
当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传输(相当于高优先级的数据)。

确认比特 ACK
只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

推送比特 PSH(PuSH)
接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位比特 RST(ReSeT)
当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。

同步比特 SYN
同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。

终止比特 FIN(FINal)
用来释放一个连接。当 FIN = 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放传输连接。

窗口字段
占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。

检验和
占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针字段
占 16 bit。紧急指针指出:在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

选项字段
长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节”。MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。

填充字段
这是为了使整个首部长度是 4 字节的整数倍。

TCP 的重传机制

重传机制是 TCP 中最重要和最复杂的问题之一。

TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。

快重传和快恢复

快重传算法规定,发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。

不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。

快重传举例

在这里插入图片描述

快恢复算法
  1. 当发送端收到连续三个重复的 ACK 时,就重新设置慢开始门限 ssthresh。
  2. 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为 ssthresh + 3 x MSS。
  3. 若收到的重复的 ACK 为 n 个(n>3),则将 cwnd 设置为 ssthresh + n x MSS。
  4. 若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。
  5. 若收到了确认新的报文段的 ACK,就将 cwnd 缩小到 ssthresh。

用户数据报协议 UDP

UDP 概述

UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。

  • 发送数据之前不需要建立连接。
  • UDP 的主机不需要维持复杂的连接状态表。
  • UDP 用户数据报只有 8 个字节的首部开销。
  • 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

UDP 基本工作过程

UDP 数据报的发送和接收通过 UDP 端口实现
端口是一个可读写的结构,具有内部的报文缓冲区;

数据报发送
UDP 软件将用户数据封装在 UDP 数据报中;
转交给 IP 软件,进行 IP 封装和转发;

数据报的接收
IP 层接收到 UDP 数据报, 提交给 UDP 软件的各端口;
端口判断该报文的目的端口号是否与当前端口匹配;
若匹配成功,将该数据报保存到相应端口的接收队列中;(若队列已满,则丢弃该数据报)
若未匹配,则丢弃该数据报,同时向源端发送 “端口不可达” 的 ICMP 包。

在这里插入图片描述

UDP 用户数据报的首部(Head)格式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

TCP 与 UDP 的比较

  • TCP 提供可靠的,面向连接的传输服务
  • UDP 提供不可靠的,无连接的传输服务
  • TCP 是面向流的协议;UDP 是基于数据报的协议
  • TCP 适用于一次传送大批量的数据
  • UDP 适用于多次少量数据的传输,实时性要求高的业务
  • 使用 TCP 传输的应用程序和协议包括:
    FTP
    Telnet
    ΗΤΤΡ
  • 使用 UDP 传输的应用程序和协议包括:
    RIP
    TFTP
    SNMP

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git是什么

简单介绍: Git是一个分布式版本控制系统,用于跟踪文件的更改,特别是在多人协作开发的环境中。 Key: 分布式 版本控制 系统 最常用于软件开发,但也可以用于管理任何类型的文件和文件夹。 Git帮助团队跟踪和管理文件的历史版本&a…

蓝星旋钮烧录底座组装说明

烧录底座pcb为群内清秋设计,感谢大佬开源 效果展示 指示灯明亮 可安装60mm硅胶防滑垫 话不多说,演示组装过程

Comsol 双层带穿孔多孔材料背衬的穿孔板的吸声:亥姆霍兹共振腔的能量耗散

提出了一种新型的低频吸声赫尔姆霍兹共振器,它由两个带孔的刚性面板和一个逐渐带孔的多孔材料背衬组成。通过使用双重孔隙理论将结构划分为多层系统,开发了一个理论模型,该模型通过有限元模拟和实验测量得到验证。研究了所提出的声学超材料的…

前OpenAI CTO Mira Murati创办AI新公司

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

23. AI-大语言模型-DeepSeek赋能开发-Spring AI集成

文章目录 前言一、Spring AI 集成 DeepSeek1. 开发AI程序2. DeepSeek 大模型3. 集成 DeepSeek 大模型1. 接入前准备2. 引入依赖3. 工程配置4. 调用示例5. 小结 4. 集成第三方平台(已集成 DeepSeek 大模型)1. 接入前准备2. POM依赖3. 工程配置4. 调用示例…

侯捷 C++ 课程学习笔记:STL 标准库与泛型编程的实战指南

在侯捷老师的 C 系列课程中,《STL 标准库与泛型编程》这门课程让我对 C 的强大工具——标准模板库(STL)有了全新的认识。STL 是现代 C 编程的核心,它提供了丰富的数据结构、算法和迭代器,极大地简化了开发工作。侯捷老…

【数据结构初阶第十二节】设计循环队列

云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 还有最后一道关于队列的习题,这题有点难,准备好迎接挑战吧! 目录 1.【题目】 2.实现循环队列推荐用数组,Why? 3.Q1:如…

Git使用[同一电脑多个账户ssh-key的管理]

同一电脑多个账户ssh-key的管理 现在遇到一个问题,我同一台电脑既要通过VPN访问内网的git也要访问对外释放的gitee,刚开始我直接把原来的SSH-key添加到内网的gitlab发现可以访问,但是后来再方位外网的gitee就出问题了,看来要换一种手段才行 本文引用:https://cloud…

Ubuntu:20.04更新cmake到更高版本

从输出信息可以看出,您当前的系统中已经安装了 cmake,但版本是 3.16.3,而您的项目需要 CMake 3.18 或更高版本。默认情况下,Ubuntu 20.04 的官方软件仓库中提供的 CMake 版本较低(如 3.16.3),因…

解锁 AIoT 无限可能,乐鑫邀您共赴 Embedded World 2025

2025 年 3 月 11-13 日,全球规模最大的嵌入式展览会——Embedded World 2025 将在德国纽伦堡盛大开幕。作为物联网和嵌入式技术领域的领先企业,乐鑫信息科技 (688018.SH) 将展示在 AI LLM、HMI、双频 Wi-Fi 6、低功耗 MCU 和 Matter 等领域的最新技术及解…

《[含文档+PPT+源码等]精品基于Python实现的Django中药材在线学习系统的设计与实现

基于Python实现的Django中药材在线学习系统的设计与实现背景,可以从以下几个方面进行阐述: 一、行业背景 随着中医药在全球范围内的不断推广和普及,中药材的知识普及和在线学习需求日益增长。传统的中药材学习方式往往受限于地域、时间和资…

EXCEL解决IF函数“您已为此函数输入太多个参数”的报错

IF函数的基本结构是IF(条件, 值为真时的结果, 值为假时的结果),所以标准的IF函数最多只能有三个参数。当用户输入的参数超过三个时,Excel就会报这个错误。比如多个IF语句叠加,但可能在嵌套的过程中没有正确关闭每个IF函数的括号,导…

总结单例模式的写法(在线程安全的情况下)

目录 1 饿汉模式 2 懒汉模式 3 分析 啥是设计模式? 设计模式好⽐象棋中的 "棋谱". 红⽅当头炮, ⿊⽅⻢来跳. 针对红⽅的⼀些⾛法, ⿊⽅应招的时候有⼀ 些固定的套路. 按照套路来⾛局势就不会吃亏. 软件开发中也有很多常⻅的 "问题场景". 针对这些问题…

神经网络|(十)概率论基础知识-正态分布及python仿真

【1】引言 前序学习进程中,已经掌握了二项分布、泊松分布相关知识及其python仿真技巧,相关文章链接为: 神经网络|(八)概率论基础知识-二项分布及python仿真-CSDN博客 神经网络|(九)概率论基础知识-泊松分布及python仿真-CSDN博客 在此基础…

centos8 使用yum安装程序出现报错

在执行yum指令出现源更新不了Could not resolve host: mirrorlist.centos.org; Unknown error问题 yum -y update结果 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlist.centos…

MSI微星电脑冲锋坦克Pro Vector GP76 12UGS(MS-17K4)原厂Win11系统恢复镜像,含还原功能,预装OEM系统下载

适用机型:【MS-17K4】 链接:https://pan.baidu.com/s/1P8ZgXc6S_J9DI8RToRd0dQ?pwdqrf1 提取码:qrf1 微星笔记本原装出厂WINDOWS11系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、MSI Center控制中心等预装…

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备,该软件除了能通过电脑远程关闭另一台电脑外,您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机: 步骤1.在手机应用商店搜索“远程看看”进行软件安装,…

html网络安全工具源码 网络安全前端

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 前端常见的网络安全包括:xss(跨站脚本攻击)、csrf(跨站请求伪造)、sql注入攻击等。 1)跨站…

VMware新建虚拟机

看看自己的电脑是什么内核,有几个处理器 再分配给虚拟机 镜像文件需要自己安装下载地方https://mirrors.aliyun.com/centos/?spma2c6h.13651104.d-2001.8.3fb1320cuI1jeS 然后就出现了 然后开启虚拟机,等待 等待之后如下,选择语言 等待一段时…

Comsol 二维Voronoi泰森多边形结构振动传输特性

Voronoi 泰森多边形结构在振动传输特性方面具有一些独特的特点: 1. 频率特性:Voronoi 泰森多边形结构的频率特性受到其几何形状和材料特性的影响。不规则的边界和内部区域的形状、尺寸和材料会影响结构的振动模态和频率响应。 2. 波的传播:…