TCP 与 UDP报文

news2025/5/9 17:55:53

** TCP 与 UDP报文**

1. 引言

在网络通信中,TCP(传输控制协议) 和 UDP(用户数据报协议) 是两种最核心的传输层协议。它们各自适用于不同的场景,理解其工作原理对开发高性能网络应用至关重要。本文将详细解析:


2. TCP 协议详解

2.1 TCP 报文结构

TCP 报文由 头部(Header) 和 数据(Data) 两部分组成,其头部固定为 20 字节(可扩展至 60 字节)。以下是关键字段解析:

字段长度(比特)说明
源端口(Source Port)16发送方的端口号(如 HTTP 默认 80)。
目标端口(Destination Port)16接收方的端口号(如 SSH 默认 22)。
序列号(Sequence Number)32当前报文段第一个字节的序号,用于数据排序和重组。
确认号(Acknowledgment Number)32期望接收的下一个字节序号,用于可靠传输(ACK 标志为 1 时有效)。
数据偏移(Data Offset)4TCP 头部长度(以 4 字节为单位),最小 5(20 字节),最大 15(60 字节)。
控制位(Flags)6包括 SYNACKFINRST 等标志位(见下文)。
窗口大小(Window Size)16接收方的可用缓冲区大小,用于流量控制(滑动窗口机制)。
校验和(Checksum)16校验头部和数据的完整性,防止传输错误。
紧急指针(Urgent Pointer)16指示紧急数据的末尾位置(需 URG=1)。

关键字段解析
• 源/目标端口:标识通信的进程(与 IP 地址结合称为 套接字)。

• 序列号与确认号:

• 序列号(Seq)表示当前报文数据的起始编号。

• 确认号(Ack)表示期望收到的下一个字节编号(如 Ack=X+1 表示已收到 X)。

• 通过比对实现可靠传输(丢包重传)。

• 控制标志位:

SYN:发起连接(三次握手)。

ACK:确认数据。

FIN:关闭连接(四次挥手)。

RST:强制重置连接。

URG:紧急数据(如 Ctrl+C 中断命令)。

PSH:催促接收方立即处理数据。


2.2 TCP 三次握手

三次握手用于建立 TCP 连接,确保双方收发能力正常:

  1. 第一次握手(SYN)
    • 客户端发送 SYN=1, Seq=X

    • 进入 SYN_SENT 状态。

  2. 第二次握手(SYN+ACK)
    • 服务器回复 SYN=1, ACK=1, Seq=Y, Ack=X+1

    • 进入 SYN_RCVD 状态。

  3. 第三次握手(ACK)
    • 客户端发送 ACK=1, Seq=X+1, Ack=Y+1

    • 双方进入 ESTABLISHED 状态。

为什么需要三次?
防止历史重复连接请求突然到达服务器,导致资源浪费。


2.3 TCP 四次挥手

四次挥手用于安全关闭连接:

  1. 第一次挥手(FIN)
    • 客户端发送 FIN=1, Seq=X,进入 FIN_WAIT_1

  2. 第二次挥手(ACK)
    • 服务器回复 ACK=1, Ack=X+1,进入 CLOSE_WAIT

    • 客户端收到后进入 FIN_WAIT_2

  3. 第三次挥手(FIN)
    • 服务器发送 FIN=1, Seq=Y,进入 LAST_ACK

  4. 第四次挥手(ACK)
    • 客户端回复 ACK=1, Ack=Y+1,进入 TIME_WAIT(等待 2MSL)。

    • 服务器收到后关闭连接。

为什么需要四次?
因为 TCP 是全双工的,必须分别关闭两个方向的连接。


3. UDP 协议详解

3.1 UDP 报文结构

UDP 头部仅 8 字节,极为轻量:

字段长度(比特)说明
源端口(Source Port)16可选,不使用时设为 0。
目标端口(Destination Port)16必须指定。
长度(Length)16整个 UDP 报文的长度(含头部)。
校验和(Checksum)16可选,但推荐启用。

UDP 特点:
• 无连接:无需握手,直接发送数据。

• 不可靠:不保证顺序、不重传丢失包。

• 低延迟:适合视频流、DNS 查询等场景。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中安装mysql8,转载及注意事项

一、先前往官网下载mysql8 下载地址: https://dev.mysql.com/downloads/选择Linux 二、删除Linux中的mysql(如果有的话),上传安装包 1、先查看mysql是否存在,命令如下: rpm -qa|grep -i mysql如果使用这…

SpringBoot的汽车商城后台管理系统源码开发实现

概述 汽车商城后台管理系统专为汽车4S店和经销商设计,提供全面的汽车管理系统解决方案。 主要内容 1. 核心功能模块 系统提供以下主要功能: ​​销售管理​​:记录销售信息,跟踪交易进度​​客户管理​​:维护客户…

DeepSeek实战--手搓实现Agent

1.背景 要学习AI agent,只会用agent 框架,还不够,一旦框架出现问题,没法快速的排查出问题。 学习就应该“知其然,更应该知其所以然” ,今天我们就用编码的方式实现一个简单的agent 。我们模拟一套AI学生评…

线性代数——行列式⭐

目录 一、行列式的定义⭐ 1-1、三阶行列式练习 1-2、下面介绍下三角行列式、上三角行列式、对角行列式 ​编辑 二、行列式的性质 2-1、性质1,2,3,4,5,6 ​编辑 2-2、性质7 2- 3、拉普拉斯定理、克莱姆法则 三…

iPhone手机连接WiFi异常解决方法

iPhone手机连接WiFi异常解决方法 一、问题现象二、iPhone连不上可能的原因三、基础排查与快速修复第一步:重启大法第二步:忽略网络,重新认证第三步:关闭“私有无线局域网地址”第四步:修改DNS服务器第五步:还原网络设置四、路由器端排查及设置关闭MAC地址过滤或添加到白名…

学习设计模式《八》——原型模式

一、基础概念 原型模式的本质是【克隆生成对象】; 原型模式的定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 。 原型模式的功能: 1、通过克隆来创建新的对象实例; 2、为克隆出来的新对象实例复制…

疗愈服务预约小程序源码介绍

基于ThinkPHP、FastAdmin和UniApp开发的疗愈服务预约小程序源码,这款小程序在功能设计和用户体验上都表现出色,为疗愈行业提供了一种全新的服务模式。 该小程序源码采用了ThinkPHP作为后端框架,保证了系统的稳定性和高效性。同时&#xff0c…

【随笔】Google学术:but your computer or network may be sending automated queries.

文章目录 一、问题复述二、问题原因三、解决 前提:你的xxx是自己做的,你自己可以管理,而不是用的那些劣质✈场。 一、问题复述 🟢如下图所示:可以打开谷歌学术,但是一搜索就是这个界面。 二、问题原因 …

长事务:数据库中的“隐形炸弹“——金仓数据库运维避坑指南

引言:凌晨三点的告警 "张工!生产库又告警了!"凌晨三点的电话铃声总是格外刺耳。运维团队发现数据库频繁进入单用户模式,排查发现某核心表的年龄值(Age)已突破20亿大关。经过一夜奋战&#xff0c…

ubuntu nobel + qt5.15.2 设置qss语法识别正确

问题展示 解决步骤 首选项里面的高亮怎么编辑选择都没用。如果已经有generic-highlighter和css.xml,直接修改css.xml文件最直接! 在generic-highlighter目录下找到css.xml文件,位置是:/opt/Qt/Tools/QtCreator/share/qtcreator/…

Unity-Socket通信实例详解

今天我们来讲解socket通信。 首先我们需要知道什么是socket通信: Socket本质上就是一个个进程之间网络通信的基础,每一个Socket由IP端口组成,熟悉计网的同学应该知道IP主要是应用于IP协议而端口主要应用于TCP协议,这也证明了Sock…

MATLAB仿真定点数转浮点数(对比VIVADO定点转浮点)

MATLAB仿真定点数转浮点数 定点数可设置位宽,小数位宽;浮点数是单精度浮点数 对比VIVADO定点转浮点 目录 前言 一、定点数 二、浮点数 三、定点数转浮点数 四、函数代码 总结 前言 在FPGA上实现算法时,相比MATLAB实现往往需要更长的开发…

【计算机网络】Cookie、Session、Token之间有什么区别?

大家在日常使用浏览器时可能会遇到:是否清理Cookie?这个问题。 那么什么是Cookie呢?与此相关的还有Session、Token这些。这两个又是什么呢? 本文将对这三个进行讲解区分,如果对小伙伴有帮助的话,也请点赞、…

SpringCloud服务拆分:Nacos服务注册中心 + LoadBalancer服务负载均衡使用

SpringCloud中Nacos服务注册中心 LoadBalancer服务负载均衡使用 前言Nacos工作流程nacos安装docker安装window安装 运行nacos微服务集成nacos高级特性1.服务集群配置方法效果图模拟服务实例宕机 2.权重配置3.环境隔离 如何启动集群节点本地启动多个节点方法 LoadBalancer集成L…

Apache Doris 使用指南:从入门到生产实践

目录 一、Doris 核心概念 1.1 架构组成 1.2 数据模型 二、Doris 部署方式 2.1 单机部署(测试环境) 2.2 集群部署(生产环境) 三、数据操作指南 3.1 数据库与表管理 3.2 数据导入方式 3.2.1 批量导入 3.2.2 实时导入 3.…

26届秋招收割offer指南

26届暑期实习已经陆续启动,这也意味着对于26届的同学们来说,“找工作”已经提上了日程。为了帮助大家更好地准备暑期实习和秋招,本期主要从时间线、学习路线、核心知识点及投递几方面给大家介绍,希望能为大家提供一些实用的建议和…

拷贝多个Excel单元格区域为图片并粘贴到Word

Excel工作表Sheet1中有两个报表,相应单元格区域分别定义名称为Report1和Report2,如下图所示。 现在需要将图片拷贝图片粘贴到新建的Word文档中。 示例代码如下。 Sub Demo()Dim oWordApp As ObjectDim ws As Worksheet: Set ws ThisWorkbook.Sheets(&…

【Bluedroid】蓝牙 SDP(服务发现协议)模块代码解析与流程梳理

本文深入剖析Bluedroid蓝牙协议栈中 SDP(服务发现协议)服务记录的全生命周期管理流程,涵盖初始化、记录创建、服务搜索、记录删除等核心环节。通过解析代码逻辑与数据结构,揭示各模块间的协作机制,包括线程安全设计、回…

中国自动驾驶研发解决方案,第一!

4月28日,IDC《中国汽车云市场(2024下半年)跟踪》报告发布,2024下半年中国汽车云市场整体规模达到65.1亿元人民币,同比增长27.4%。IDC认为,自动驾驶技术深化与生成式AI的发展将为汽车云打开新的成长天花板,推动云计算在…

Kubernetes(k8s)学习笔记(四)--入门基本操作

本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作 前提条件 1.各个节点处于Ready状态; 2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题); 3.网络配置正常(否则即使应用发布没问题,浏…