传输层协议——TCP、UDP

计算机网络原理系列学习笔记(三)——传输层 前言 网课学习的视频来源:b站《自考04741 计算机网络原理》 本章知识结构 传输层的基本服务 传输层的复用与分解 停—等协议与滑动窗口协议 用户数据报协议(UDP) 传输控制协议(TCP) 传输层的基本服务 一、传输层功能 核心任务:为应用进程提供端到端的逻辑通信服务 主要功能: 传输层寻址 应用层报文的分段与重组 报文的差错检测 进程间的端到端可靠数据传输控制 面向应用层实现复用与分解 端到端的流量控制 拥塞控制 需要注意的是:传输层协议提供的是逻辑通信服务,只需在端系统中实现。通信的真正端点 阅读详情

目录

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 22SSH 远程登录与会话
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 路由协议

TCP/UDP以及端口协议功能 文章目录前言:本章主要介绍TCP/UDP协议以及端口协议功能,TCP链接的三次握手和TCP链接的四次挥手TCP(Transmission Control Protocol)TCP的报文字段UDP协议常用端口号及其说明TCP连接的三次握手4.TCP断开连接的四次挥手 前言:本章主要介绍TCP/UDP协议以及端口协议功能,TCP链接的三次握手和TCP链接的四次挥手 TCP(Transmission Control Protocol) TCP:Transmission Control Protocol 传输控制 阅读详情

相关推荐

USC EE450 CSCI455 CSCI571 Midterm 总结

EE450 Compter Network                1.历年Midterm考题。(更新至2017年spring,如果大家有新的资源欢迎编辑)                 google drive:https://drive.google.com/drive/folders/0B_LCDxpiiXZ1cUNReFpZZHo4NG8?usp=sharing

Small_hour 7112

TCP/UDP端口号

大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是TCP/UDP端口号。 在IP网络中,一个IP地址可以唯一地标识一个主机。但一个主机上却可能同时有多个程序访问网络,要标识这些程序,只用IP地址就不够了.因此TCP/UDP采用端口号(port number>来标识这些上层的应用程序,从而使这些程序可以复用网络通道。而为了区分TCP和 UDP协议,IP用协议号6标识TCP,用协议号17标识UDP。 在实际的端到端通信中,通信的...

ababab_vain的博客 1万+

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

网络基础(二)——传输层

描述的是,发送方不用等待ACK一次所能发送的数据最大量。这里滑动窗口的大小是与TCP的窗口大小(对方的接收能力)是相关的。1、窗口大小指的是无需等待确认应答而可以继续发送数据的最大值。上图的窗口大小就是4000个字节四个段)。2、发送前四个段的时候不需要等待任何ACK,直接发送;3、收到第一个ACK后滑动窗口向后移动继续发送第五个段的数据;依次类推;4、操作系统内核为了维护这个滑动窗口需要开辟发送缓冲区来记录当前还有哪些数据没有应答;只有确认应答过的数据,

qq_64662686的博客 1856

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 280

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 829

笔记:常见TCP端口号

常见tcp端口号 端口号:名称–注释 21:ftp–文件传输协议(FTP)端口 22:ssh–安全 Shell(SSH)服务 23:telnet–Telnet 服务 25:smtp–简单邮件传输协议(SMTP) 37:time–时间协议 69:tftp–小文件传输协议 80:http–超文本传输协议 109:pop2–邮局协议版本2 110:pop3–邮局协议版本3 161:snmp–简单网络管...

Skiray的博客 3万+

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2157

传输层协议 UDP 与 TCP

详细讲解了传输层协议 UDP 和 TCP 以及底层实现、应用场景

You build it, you run it 6871

YOLO26-seg分割优化:轻量化卷积魔改 | 新的partial convolution(PConv)结合C3k2 | CVPR2023

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 152

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1067

传输层协议:TCP 与 UDP

在计算机网络中,传输层位于网络层之上,应用层之下,主要负责提供端到端的可靠数据传输服务。传输层协议可以分为两大类:无连接的传输层协议和面向连接的传输层协议。

JAZJD的博客 1493

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

TCP和UDP传输层协议

TCP 是一种可靠的、面向连接的协议,适用于对数据传输可靠性要求高的场景,具有较高的延迟和开销,但能保证数据准确无误地传输。UDP 是一种无连接的、轻量级的协议,适用于实时性要求高、可以容忍丢包的场景,具有较低的延迟和开销,但不保证数据的可靠性、顺序和完整性。根据不同的应用需求,选择合适的协议可以有效提高网络通信的效率和用户体验。

qq_50847694的博客 1900

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

网络基础二——传输层协议UDP与TCP

传输层协议 UDP和TCP的认识

qq_33093885的博客 2427

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

传输层TCP协议和UDP协议

传输层协议

qq_44700820的博客 3902

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【TCP/IP协议栈】4. 传输层协议(TCP、UDP)

协议森林07 傀儡 (UDP协议) - Vamei - 博客园TCP和UDP详解(非常详细)_tcp udp-优快云博客我们已经讲解了物理层、连接层和网络层。最开始的连接层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层,我们只剩下一个IP协议(IPv4和IPv6是替代关系)。进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP、UDP、SCTP等)。

m0_74209072的博客 2591

传输层协议——UDP/TCP协议

上一篇说过了HTTP,这一篇就来看一下UDP和TCP,UDP简单,TCP可靠,一篇文章让你直到原因。

m0_64607843的博客 1678

TCP与UDP:传输层协议对比

本文将详细介绍传输层中的TCP与UDP协议,探讨它们的优缺点及适用场景。TCP和UDP协议各有优缺点,适用于不同的场景。了解它们的特性,有助于我们在实际应用中选择合适的传输层协议。TCP协议可靠传输:TCP协议采用三次握手建立连接,确保数据传输的可靠性。在传输过程中,TCP会对每个数据包进行编号和确认,确保数据按序到达且无丢失。流量控制:TCP协议通过滑动窗口机制实现流量控制,避免发送方发送过快导致接收方来不及处理。

你若盛开,清风自来 2051

传输层的TCP和UDP协议

TCP和UDP都是传输层协议。TCP/IP是一个协议簇,里面包含了很多协议,UDP和TCP只是其中两个协议,之所以命为TCP/IP,是因为这两个协议非常重要。 1.TCP协议 TCP 的英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、,相对比较慢、点对点、基于字节流的传输层通信协议。TCP协议适用于对可靠性要求比较高的场合。比...

Healer_LU的博客 2062

传输层协议UDP,TCP

所以1001-1050为紧急数据;以上就是TCP结构的基本内容,下面我们来看看TCP到底做了哪些工作来对通信进行控制保证通信效率与可靠性;

m0_75260318的博客 1437

传输层协议之TCP/UDP

详解TCP和UDP两个传输层协议,从协议的报文结构、特性入手展开描述,重点对TCP协议深入的剖析。

weixin_43164548的博客 1475

<网络> 传输层的TCP/UDP协议

TCP的面向字节流是指它将数据视为连续的字节流,而不是将数据划分为离散的消息或数据包。这意味着在TCP连接中,数据被视为一系列无结构的字节,发送方和接收方之间没有明确的消息边界。这与UDP不同,因为UDP是面向数据报的,每个数据包都是独立的单元,有明确的边界。TCP:数据在TCP连接中被视为一个无间断的字节流。发送的数据可以被拆分成多个小块,然后在接收端重新组装,但这一切都在传输层进行,上层应用程序不需要关心数据的分段和重组。UDP:UDP以数据报的形式传输数据,每个数据报都是独立的消息。

weixin_61522065的博客 1335

传输层协议TCP、UDP

源端口随机分配,目标端口使用知名端口。应用客户端使用的源端口一般为系统中未使用的且大于1024。目的端口号为服务器端应用服务器的进程,如telnet为23。Web访问中,下面哪一种情况不可能出现()。A.源端口80,目的端口1028B.源端口1028,目的端口80C.源端口65532,目的端口8080D.源端口4000,目的端口4000Web访问中源端口是大于1024的随机端口,目的端口常规是80/8080/443,也可以自定义为大于1024的非知名端口。

m0_57385165的博客 1069

传输层协议——TCP与UDP简述

传输层协议——TCP与UDP简述 传输层描述 基本概念 TCP与UDP都是TCP/IP中的传输层协议,首先我们要先对传输层做一下了解:传输层负责在两个应用程序之间建立临时通讯会话以及在它们之间传递数据 传输层有如下职责: 跟踪会话 数据分段与数据段重组 标识应用程序(通过分配端口号) 另外,传输层通过会话的多路复用来更好地进行错误恢复和重新传输工作。 多路复用将数据分割成更小的块(分段),在同一网络上交替实现不同用户的不同通讯。由于这一特性,应用程序可以同时使用网络,传输层利用向几个字段添加包含二进制数

CairBin的博客 2067

详解传输层协议:TCP和UDP

传输层是OSI七层模型和TCP/IP四层模型中的核心层之一,主要负责端到端的可靠数据传输。其核心协议包括**TCP(传输控制协议)**和**UDP(用户数据报协议)**,两者分别面向不同的应用场景设计。

cmhnt的博客 2051
上一篇: 网络层常见协议——IPV4、IPV6、ARP、ICMP、QoS
下一篇: 应用层协议——DNS、DHCP、HTTP、FTP
bodyHealthy
博客等级 码龄5年 397粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bodyHealthy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值