TCP/UDP原理

文章目录

  • 一、端口
    • 1. 端口的定义和作用
    • 2.服务端和客户端的区别
    • 3.常见的知名端口号有
  • 二、TCP的原理
    • 1.TCP头部封装格式
    • 2.TCP可靠性机制
      • 三次握手
      • 确认机制
      • 四次挥手
      • RST结束连接
      • 窗口机制
    • 3.完整性校验
    • 4.TCP特征
    • 5.TCP的适用场景
  • 三、UDP的原理
    • 1.UDP头部封装格式
    • 2.UDP特征
    • 3.UDP的适用场景
  • 四、TCP与UDP的对比

首先可以看下思维导图,以便更好的理解接下来的内容。
在这里插入图片描述

一、端口

在计算机网络中,端口是一种虚拟数据结构,用于网络应用程序与底层网络协议(如TCP或UDP)进行通信的途径。端口可以被看作是网络地址的一部分,有助于路由器和交换机将数据传送到正确的应用程序。

1. 端口的定义和作用

端口是计算机网络中的关键概念,它为应用程序提供了一种标识和区分不同通信会话的方式。在网络通信中,数据需要通过网络传输到达目标应用程序,而端口就是这个过程中的关键。

2.服务端和客户端的区别

服务端:服务端使用知名端口号,通常是固定的,用于特定的服务或协议。知名端口号范围通常是0-1023,这些端口被IANA(Internet Assigned Numbers Authority)指定给了特定的服务。常见的知名端口号包括HTTP的80端口、FTP的20和21端口等。

客户端:客户端使用大于等于1024随机端口号,用于临时的数据传输。

3.常见的知名端口号有

TCP 80                        HTTP                超文本传输协议。
TCP 20 & 21                   FTP                 文件传输协议。
TCP 23                        Telnet              远程登录。
TCP 25                        SMTP                简单邮件传输协议。
UDP 53                        DNS                 域名解析协议。
TCP 443                       HTTPS               HTTP over SSL/TLS。

在这里插入图片描述

二、TCP的原理

1.TCP头部封装格式

TCP头部包含了多种信息,这些信息帮助在发送和接收数据时维持连接的可靠性和顺序。

在这里插入图片描述

其中包括:

Source Port (源端口)                                 #表示数据包的发送方的端口号。帮助接收端知道哪个进程发送了这个数据包。
Destination Port (目的端口)                           #表示数据包的接收方的端口号。确保数据包被正确地路由到接收机上的适当进程。
Sequence Number (序列号)                             #用于标识发送的数据在整个数据流中的位置。允许接收端按正确的顺序重新组织接收的数据包。
Acknowledgement Number (确认号)                      #用于确认接收到的数据。告诉发送方哪些数据已被成功接收。
Data Offset (数据偏移)                                #显示TCP头部的长度。告诉接收端数据部分从哪里开始。
Reserved (保留位)                                    #为将来的使用而预留的位。保证向前兼容,为未来的扩展预留空间。
Control Bits (控制位)                                #包含URG, ACK, PSH, RST, SYN, FIN等标志位,用于流控制。URG (紧急位)设置为1时,表示“紧急指针”字段是有效的。ACK (确认位)当设置为1时,表示“确认号”字段是有效的。PSH (推送位)告诉接收端应该立即将数据推送到应用程序,而不是等待缓冲区填满。RST (复位位)用于复位连接,通常在错误发生时使用。SYN (同步位)用于建立连接时的同步。在三次握手过程中使用。FIN (结束位)用于关闭连接,表示发送方已完成数据发送。Window (窗口)                                       #定义了发送方愿意接收的数据量。实现流量控制,防止接收端被发送端的数据淹没。
Checksum (校验和)                                    #用于数据完整性校验。确保数据在传输过程中没有被篡改或损坏。
Urgent Pointer (紧急指针)                             #当URG标志被设置时使用。指出紧急数据的结束位置。
Options (选项)                                      #可选字段。为TCP提供附加的功能,如最大段大小、时间戳等。
Padding (填充)                                      #确保TCP头部的长度是32位的倍数。为了对齐头部字段。
Data (数据)                                         #实际要传输的数据。传输应用程序的数据。

2.TCP可靠性机制

TCP的设计目的是提供一个可靠的、面向连接的通信服务。为了实现这一目标,TCP使用了以下几种主要机制。

三次握手

三次握手:在建立连接之前,发送方和接收方之间进行三次握手以确保双方都准备好交换数据。

第一次  SYN置位      A-B
第二次  SYN,ACK置位   B-A
第三次  ACK置位      A-B

在这里插入图片描述

确认机制

确认机制:每当数据被接收,接收方都会发送一个确认回发送方。
Seq=上一次ack
Ack=上一次的seq+length

在这里插入图片描述超时重传
如果没有接收到,或接收到的是不完整数据,会再次发送Ack请求对方重发
在这里插入图片描述

四次挥手

四次挥手:当一方想要终止连接时,双方会进行四次挥手来安全地关闭连接。

第一次  FIN置位    A-B
第二次  ACK置位   B-A
第三次  FIN置位    B-A
第四次  ACK置位   A-B

在这里插入图片描述

RST结束连接

RST结束连接:一种异常结束连接的方式,当接收到带RST标志的数据包时,连接立即被终止。
收到RST置位的包后,立即结束TCP连接
收到RST置位的包后,不必等待对方的确认,直接结束TCP连接

窗口机制

滑动窗口机制:一种流量控制机制,它允许发送方调整发送数据的速度,以匹配接收方的接收能力。
滑动窗口
通过通告对方本机接收能力,来实现流量控制

在这里插入图片描述

3.完整性校验

完整性校验:通过Checksum字段来确保数据的完整性。
通过Checksum来检查数据完整性

4.TCP特征

优点
可靠性高:TCP通过确认机制和滑动窗口机制确保数据的可靠传输。
顺序传输:TCP确保数据包的顺序与发送顺序一致。

缺点
占用带宽高:由于确认机制和滑动窗口机制,TCP可能会产生额外的网络开销。
传输延迟高:三次握手和四次挥手增加了建立和终止连接的时间。

5.TCP的适用场景

对数据完整性要求高,但是对传输延迟要求低
TCP是一个重量级的协议,适用于对数据完整性和顺序有严格要求的应用场景,例如文件传输、邮件发送和Web浏览。

三、UDP的原理

UDP是一个简单的、无连接的协议,与TCP相比,它牺牲了可靠性以换取更低的延迟和开销。

1.UDP头部封装格式

与TCP相比,UDP的头部简洁得多,它只包含了最基本的信息。
在这里插入图片描述

2.UDP特征

优点:
占用带宽低:UDP没有确认机制,因此网络开销更小。
传输延迟低:UDP发送数据时不需要建立连接。

缺点:
没有任何可靠性机制:UDP不保证数据的顺序、完整性或可靠性。

3.UDP的适用场景

对传输延迟要求高,但数据完整性要求低
UDP适用于那些对传输速度有要求,但不需要完全可靠的数据传输的场景,例如在线视频流、语音通话和某些实时游戏。

四、TCP与UDP的对比

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

如有不详或错误,敬请指出。

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

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

相关文章

微信小程序云开发-云存储文件ID转http

一、前言 云开发的云储存文件默认是以cloudID的形式读取的,但是这种读取方式只能在微信小程序或内嵌H5中使用。 所以如果需要在其他地方使用,例如浏览器或网站等其他端读取文件的时候,需要转换成普通的http链接。 目前官方提供有转换的接口…

Android View动画整理

View 动画相关内容可参考官网 动画资源 此前也有写 View 动画相关的内容,但都只是记录代码,没有特别分析。以此篇作为汇总、整理、分析。 Android View 动画有4中,分别是 平移动画 TranslateAnimation缩放动画 ScaleAnimation旋转动画 Rot…

python-数据可视化-使用API

使用Web应用程序编程接口 (API)自动请求网站的特定信息而不是整个网页,再对这些信息进行可视化 使用Web API Web API是网站的一部分,用于与使用具体URL请求特定信息的程序交互。这种请求称为API调用 。请求的数据将以易于处理的…

SpringBoot—日志

目录 日志使用日志日志级别设置日志级别设置分组指定日志文件路径日志切割归档使用第三方日志框架log4j2配置文件【分级存储】logback配置文件【分级存储】 实例代码 日志 使用日志 给controller添加日志信息 要给controller类上添加Slf4j注解,然后使用log.info(…

2023年信息安全管理与评估赛项参考答案-模块1任务一

根据网络拓扑图所示,按照IP 地址规划表,对防火墙的名称、各接口IP 地址进行配置。共8 分,每错1 处(行)扣1 分,扣完为止。地址、安全域、接口(状态为UP)、名称都正确。 2.根据网络拓扑…

JDK的组成、作用

JDK:java development kit java的标准开发工具包 jre:java runtime environment 运行基于java语言编写的程序必不可少的运行环境用于解释和执行java的字节码文件(.class文件)普通用户(无开发需求)下载jre…

IDEA集成Git相关操作知识(pull、push、clone)

一:集成git 1:初始化git(新版本默认初始化) 老版本若没有,点击VCS,选中import into Version Controller中的Create git Repository(创建git仓库),同理即可出现git符号。 也可查看源文件夹有没有…

01_lwip_raw_udp_test

1.打开UDP的调试功能 (1)设置宏定义 (2)打开UDP的调试功能 (3)修改内容,串口助手打印的日志信息自动换行 2.电脑端连接 UDP发送一帧数据 3.电路板上发送一帧数据

Qt自定义标题栏

一、创建项目 最终项目文件结构如下 “iconfont.tff”的使用方式见如下博客,用于更改图标颜色Qt更改图标颜色_怎么追摩羯座的博客-CSDN博客 二、MyTitleBar.pro #------------------------------------------------- # # Project created by QtCreator 2023-08-2…

如何为你的公司选择正确的AIGC解决方案?

如何为你的公司选择正确的AIGC解决方案? 摘要引言词汇解释(详细版本)详细介绍1. 确定需求2. 考虑技术能力3. 评估可行性4. 比较不同供应商 代码快及其注释注意事项知识总结 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&…

Linux centos7 bash编程(break和continue)

在学习shell知识时,简单编程要从格式入手。 首先学习好单行注释和多行注释。 先学习简单整数的打印输出,主要学习echo命令,学习选项-e -n的使用。 下面的练习是常用的两个分支跳转程序:break和continue。 #!/bin/bash # 这是单…

贪心算法总结篇

文章转自代码随想录 贪心算法总结篇 我刚刚开始讲解贪心系列的时候就说了,贪心系列并不打算严格的从简单到困难这么个顺序来讲解。 因为贪心的简单题可能往往过于简单甚至感觉不到贪心,如果我连续几天讲解简单的贪心,估计录友们一定会不耐…

matlab使用教程(29)—微分方程实例

此示例说明如何使用 MATLAB 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程: 1.初始值问题 vanderpoldemo 是用于定义 van der Pol 方程的函数 type vanderpoldemo function dydt vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defin…

如何在不重新安装的情况下将操作系统迁移到新硬盘?

通常情况下,当你的硬盘损坏或文件过多时,电脑会变得缓慢且卡顿。这时,你可能会被建议更换为一块更好的新硬盘。 ​ 在比较HDD和SSD之后,许多用户更愿意选择SSD作为他们的新硬盘,因为SSD比HDD更稳定且运行更安…

环境安装:rpm安装jdk上线项目

Tomcat安装 解析域名 购买域名并配置 安装Docker yum 卸载以前装过的docker

Seaborn数据可视化(四)

目录 1.绘制箱线图 2.绘制小提琴图 3.绘制多面板图 4.绘制等高线图 5.绘制热力图 1.绘制箱线图 import seaborn as sns import matplotlib.pyplot as plt # 加载示例数据(例如,使用seaborn自带的数据集) tips sns.load_dataset("t…

上海市青少年算法2023年7月月赛(丙组)

T1先行后列 题目描述 从 1 开始的 nm 个整数按照先行后列的规律排列如下: 给定 n 与 m,再给定一个数字 c,请输出 c 所在的行数与列数。 输入格式 第一行:两个整数表示 n 与 m 第二行:一个整数表示 c 输出格式 两个整数:表示 c 所在的行数与列数。 数据范围 1≤n,m≤10000…

[SpringBoot3]远程访问@HttpExchange

六、远程访问HttpExchange[SpringBoot3] 远程访问是开发的常用技术,一个应用能够访问其他应用的功能。SpringBoot提供了多种远程访问的技术。基于HTTP协议的远程访问是最广泛的。SpringBoot中定义接口提供HTTP服务。生成的代理对象实现此接口,代理对象实…

MIMIC-IV数据提取教程

一、获取MIMIC-IV数据库 MIMIC-IV数据库需要申请权限,具体怎么申请我之前的博客发的有:MIMIC数据库申请流程 以最新的MIMIC-IV 2.2版本为例,首先打开页面拖动到最底端:https://physionet.org/content/mimiciv/2.2/ 直接下载解压下来&#x…

linux下安装Mycat

1 官网下载mycat 官方网站: 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址: MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…