网络通信的两大支柱:TCP与UDP协议详解(非常详细)零基础入门到精通,收藏这一篇就够了

在构建现代互联网通信的基石中,TCP(传输控制协议)和UDP(用户数据报协议)起着至关重要的作用。本文将深入探讨两者的区别及应用场景。  

1

TCP和UDP的共同点

传输层协议:

TCP和UDP都是传输层协议,位于OSI模型的第四层,负责在网络中的不同主机上的应用程序之间提供数据传输服务。

支持的数据类型:

两者均支持传输文件、视频、图片等二进制数据。

端到端通信:

两者都支持端到端的数据传输,即数据从源主机的一个应用程序传输到目的主机的另一个应用程序。

**多路复用:**TCP和UDP允许多个应用程序在同一网络连接上并发通信,通过端口号区分不同的通信流。

**面向字节流:**它们都是面向字节流的协议,可以传输任意类型的数据。

**无边界的传输:**TCP和UDP不保证数据传输的边界,即它们不保证数据按照特定的消息边界进行传输。

**拥塞控制和流量控制:**虽然TCP和UDP在实现上有所不同,但它们都可以支持拥塞控制和流量控制机制,以适应网络条件和接收方的处理能力。

**错误检测:**两者都提供了一定程度的错误检测功能,TCP使用更复杂的校验和,而UDP使用较为简单的校验和。

**支持广播和多播:**TCP和UDP都可以支持广播和多播传输,允许同时向多个目的地发送数据。

**动态端口分配:**它们允许使用动态端口号,这在客户端应用程序生成大量短连接时非常有用。

**不关心网络层的细节:**TCP和UDP抽象了网络层的细节,使得应用程序可以不必关心底层网络的具体实现。

2

TCP和UDP的区别?

想象一下,网络通信中的TCP和UDP协议,可以类比为传统的写信和现代的打电话两种通信方式。

使用TCP协议,就像是打电话

- 当你拨打电话,对方接听,这一过程类似于TCP的三次握手,确保了双方建立了一个双向的、可靠的通信连接。

- 通话过程中,双方可以实时交流,任何问题都能立即得到确认,这就像TCP提供了数据传输的确认机制,确保数据准确无误地送达对方。

- 通话结束时,双方都会挂断电话,这一动作类似于TCP的四次挥手,明确地结束了通信过程,保证了连接的优雅关闭。

而使用UDP协议,更像是写信

- 信件一旦寄出,你无法知道对方是否收到信件,信中的内容是否完整,或者在多封信的情况下,它们是否按照正确的顺序到达。

- UDP协议不保证数据包的顺序、完整性或可靠性,它提供了一种简单且快速的通信方式,但不提供TCP那样的确认和控制机制。

接下来,我将深入对比TCP和UDP之间的主要差异。

连接方式:

TCP是面向连接的协议,需建立连接;

UDP是无连接的,无需建立连接即可传输数据。

可靠性:

TCP提供可靠的数据传输,确保数据包正确、完整、按顺序到达;

UDP则不保证数据包的可靠传输,可能会导致丢包、乱序或重复。

数据传输:

TCP:提供可靠的数据传输,保证数据包正确、有序、无误差地传输。

UDP:不保证数据传输的可靠性,可能发生丢包、乱序或损坏。

速度:

由于TCP需要建立连接和保证数据的可靠传输,其速度相对较慢;

UDP由于简单直接,没有建立连接的步骤,因此速度更快。

使用场景:

TCP适用于准确性关键的应用,如文件传输、邮件发送;

UDP适合实时性高的应用,如在线游戏、语音和视频通信。

流量控制和拥塞控制:

TCP:内置流量控制和拥塞控制机制,防止网络过载。

UDP:不提供流量控制和拥塞控制,这些功能需要应用层实现。

错误恢复:

TCP:具有错误检测和恢复机制,如丢包重传、错误校正。

UDP:不提供错误恢复机制,需要应用层处理。

报文结构:

TCP:有复杂的头部结构,包含序列号、确认号、窗口大小等控制信息。

UDP:头部结构简单,主要包含源端口、目的端口和长度校验等。

资源消耗:

TCP:由于需要维护连接状态和进行错误恢复,消耗更多的资源。

UDP:由于协议简单,消耗的资源较少。

**编程复杂性:
**

TCP:编程模型较为复杂,需要处理连接的建立、维护和释放。

UDP:编程模型简单,只需发送和接收数据报文。

3

TCP三次握手

TCP协议通过三次握手过程来确立一个稳定可靠的连接,这一机制确保了连接的双方准备就绪,避免过期连接请求干扰。

SYN(同步序列编号):

第一次握手是客户端向服务器发起的连接请求。客户端发送一个特殊的TCP报文段,其中SYN标志位设为1,表示这是一个连接请求的开始。同时,客户端生成一个初始序列号(seq=x),这个序列号是客户端随机选择的,用于后续通信中识别和排序数据包。

SYN-ACK(同步-确认):

服务器在收到客户端的SYN报文后,如果同意建立连接,则会进入第二次握手。服务器向客户端发送一个TCP报文段作为响应,该报文段中SYN标志位同样设为1,表示服务器也请求建立连接,而ACK标志位设为1,表示对客户端SYN报文的确认。服务器的确认号(ack)设为客户端的序列号加1(ack=x+1),表明服务器期待从该序列号开始接收数据。同时,服务器也会提供一个自己的初始序列号(seq=y),作为对客户端的SYN-ACK响应。

ACK(确认):

第三次握手是客户端对服务器SYN-ACK报文的响应。客户端发送一个TCP报文段,其中ACK标志位设为1,表明这是一个确认报文。客户端的序列号(seq)增加1(seq=x+1),表示客户端确认了服务器的初始序列号,并且准备好从这个序列号开始发送数据。确认号(ack)设为服务器的初始序列号加1(ack=y+1),完成对服务器SYN报文的确认。

通过这三次交互,客户端和服务器成功地交换了初始序列号,并且双方都确认了对方的接收能力和发送能力,从而建立起一个稳定的通信连接。这个过程中,序列号和确认号的交换确保了连接的双方都有对方最新的信息,这个过程是TCP协议保证连接可靠性的关键机制之一。

4

TCP如何处理丢包问题?

TCP协议通过序列号和确认应答机制解决丢包问题,确保数据传输的可靠性。

**1、序列号标记:**TCP为每个数据字节分配一个递增的序列号,从0开始,确保每个TCP段都能标识数据的顺序和量。

**2、连续数据传输:**发送方可以利用序列号连续发送多个数据段,而接收方对这些连续发送只需回复单个ACK,提升了传输效率。

**3、数据重组:**接收方根据每个数据段的序列号重新组装原始数据流,保障数据的完整性与顺序。

**4、丢包重传:**若数据段丢失,接收方通过ACK报文指示期望的序列号,通知发送方重传。例如,若丢失序列号100至199的数据段,接收方发送ACK=100,促使发送方重传。

**5、全双工通信:**TCP支持全双工模式,允许客户端和服务器独立进行发送和接收操作,确保了双方数据传输的可靠性和效率。

5

TCP四次挥手

以下以客户端发起关闭连接为例:

第一次挥手:

客户端完成数据传输后,向服务器发送一个FIN(结束)标志位的TCP段,请求关闭已建立的连接。客户端进入FIN-WAIT-1状态,等待服务器的确认。

第二次挥手:

服务器收到客户端的FIN后,发送一个ACK(确认)标志位的TCP段作为回应,告知客户端已收到关闭连接的请求。服务器进入CLOSE-WAIT状态,客户端接收到ACK后进入FIN-WAIT-2状态。此时,连接处于半关闭状态,服务器可以继续发送未传输完成的数据,而客户端可以接收数据。

第三次挥手:

服务器在完成其数据的发送和接收后,向客户端发送一个FIN标志位的TCP段,请求关闭其至客户端的数据传输方向。

第四次挥手:

客户端收到服务器的FIN后,向服务器发送一个ACK标志位的TCP段作为确认。客户端进入TIME-WAIT状态,等待一段时间(称为2MSL,即最大报文段生存时间的两倍)以确保服务器接收到了最终的ACK包。这段时间过后,客户端确保服务器没有未收到的ACK需要重传,从而避免建立新的连接。

连接关闭:

服务器在发送完FIN后会等待客户端的ACK确认。一旦收到ACK,服务器立即关闭连接。客户端在TIME-WAIT状态经过2MSL时间后,确保没有未收到的ACK需要重传,也关闭连接。

通过四次挥手,TCP连接被完全关闭。与三次握手建立连接的过程相对应,四次挥手确保了TCP连接的双方都可以独立地关闭自己的发送方向,然后协同关闭整个连接,避免了潜在的资源泄露和数据丢失。

6

UDP协议的特点

简单性:

UDP(用户数据报协议)摒弃了建立连接的复杂性,不提供数据包确认、顺序、控制流量或拥塞管理等机制。这种轻量级的设计使得UDP在头部开销上远小于TCP,从而在网络通信中能够快速地发送数据。由于UDP不维护连接状态,每个数据包独立处理,这使得它非常适合那些对实时性要求高但对数据传输稳定性要求不高的应用场景。

低延迟:

由于UDP协议不进行握手连接、不保证数据包顺序、不重传,所以能够减少数据传输的等待时间,实现快速传输。

适用性:

UDP协议适用于对实时性要求高,但对数据准确性要求相对宽松的场景。例如,在域名查询(DNS)中,快速响应比确保每个查询都准确无误更重要。语音通话和视频直播中,允许一定程度的丢包和误差,以换取更快的传输速度和更小的延迟可以让体验感更好。

效率与限制:

尽管UDP提供了高效的数据传输,但它不保证数据包的可靠传输,意味着接收方可能遇到丢包、乱序或重复的数据包。因此,使用UDP的应用通常需要在应用层实现额外的错误检测和纠正机制,以确保数据的完整性和准确性。

结语

随着对TCP和UDP协议深入探索的结束,我们得以窥见这两种协议如何以其独特的特性,共同构成了现代网络通信的坚实基础。TCP以其可靠性保证了数据传输的精确无误,而UDP则以其高效性满足了对实时性有特殊要求的应用场景。它们各自在网络世界的舞台上扮演着关键角色,不可或缺。

感谢您的阅读,我们下一篇文章再见!

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

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

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

相关文章

联想电脑电池只能充到80%,就不在充电了,猛一看以为坏了,只是设置了养护模式。

现在电池管理模式有三种: 1)常规 2)养护 3)快充 好久没有用联想的电脑了,猛一看,咱充到了80%不充了,难道电池是坏的?我们要如何设置才可以让其充电到100%呢? 右下角…

智慧监狱技术解决方案

1. **建设背景**:介绍了智慧监狱建设的战略部署,包括司法部提出的“数字法治、智慧司法”信息化体系建设,以及智慧监狱建设的总体目标、重点任务和实施步骤。 2. **建设需求**:分析了当前监狱系统存在的问题,如子系统…

后端中缓存的作用以及基于Spring框架演示实现缓存

缓存的作用及演示 现在我们使用的程序都是通过去数据库里拿数据然后展示的 长期对数据库进行数据访问 这样数据库的压力会越来越大 数据库扛不住了 创建了一个新的区域 程序访问去缓存 缓存区数据库 缓存里放数据 有效降低数据访问的压力 我们首先进行一个演示 为了演示…

大模型系列:Prompt提示工程常用技巧和实践

前言 Prompt提示语是使用大模型解决实际问题的最直接的方式,本篇介绍Prompt提示工程常用的技巧,包括Zero-Shot、Few-Shot、CoT思维链、Least-to-Most任务分解。 内容摘要 Prompt提示工程简述Prompt的一般结构介绍零样本提示Zero-Shot少样本提示Few-Sho…

企业化运维(3)_PHP、nginx结合php-fpm、memcache、openresty、goaccess日志可视化

###1.PHP源码编译### 解压PHP压缩包,切入PHP目录,进行configure-->make-->make installd三部曲 [rootserver1 ~]# yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel ##依赖性 [rootserver1 ~]# yum…

python如何对list求和

如何在Python中对多个list的对应元素求和,前提是每个list的长度一样。比如:a[1,2,3],b[2,3,4],c[3,4,5],对a,b,c的对应元素…

Maven常用命令介绍(Ⅰ)

基本命令 Maven生命周期 Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,…

父亲节马上到了-和我一起用Python写父亲节的祝福吧

前言 让我们一起用Python写一段父亲节的祝福吧 📝个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 - 爬虫逆向教学 ☄️python系列专栏 - 从零开始学python 话不多说先上代码 import tkinter as tk from doctest imp…

MEMS:Lecture 16 Gyros

陀螺仪原理 A classic spinning gyroscope measures the rotation rate by utilizing the conservation of angular momentum. 经典旋转陀螺仪通过利用角动量守恒来测量旋转速率。 Coriolis Effect and Coriolis Force 科里奥利效应是一种出现在旋转参考系中的现象。它描述了…

显示类控件——Label

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、Label介绍属性代码示例: 显示不同格式的文本代码示例: 显示图片代码示例: 文本对齐, 自动换行…

PFA 反应罐内衬特氟龙 润滑绝缘行业加工 匠心工艺

PFA反应罐别名也叫反应瓶,储样罐,清洗罐等。可作为样品前处理实验中消解样品和中低压溶样的反应容器,广泛应用于半导体分析、新材料、新能源、同位素分析等。 PFA反应罐规格参考:250ml、300ml、350ml、500ml、1L等。 产品特点&…

大众点评js逆向过程(未完)

1、这里mtgsig已经被拼到url中 2、进入后mtgsig已经计算完, ir he(this[b(4326)], !1), 就是加密函数 32 次 796 1143 ->508 -> 754 -> 1151 160 注意IC这个数组 控制流平坦化进行AST 解析 AST网址

Swift开发——循环执行方式

本文将介绍 Swift 语言的循环执行方式 01、循环执行方式 在Swift语言中,主要有两种循环执行控制方式: for-in结构和while结构。while结构又细分为当型while结构和直到型while结构,后者称为repeat-while结构。下面首先介绍for-in结构。 循环控制方式for-in结构可用于区间中的…

2024全新仿麻豆视频苹果cms源码v10影视模板

下载地址:2024全新仿麻豆视频苹果cms源码v10影视模板 高端大气的设计,适合做电影、连续剧、综艺、动漫、微电影、纪录片、海外剧等视频网站

【秋招突围】2024届秋招笔试-小红书笔试题-第一套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边…

Nginx实战:故障处理_后端服务正常,nginx偶发502(Bad Gateway)

一、故障场景 用户访问服务偶发报错【502 Bad Gateway】,但是服务后端正常运行。架构如下: #mermaid-svg-4dDszusKEuPgIPlt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4dDszusKEuPgIPlt…

axios打通fastapi和vue,实现前后端分类项目开发

axios axios是一个前后端交互的工具,负责在前端代码,调用后端接口,将后端的数据请求到本地以后进行解析,然后传递给前端进行处理。 比如,我们用fastapi写了一个接口,这个接口返回了一条信息: …

攻防世界-fakebook题目__详解

1.打开题目先用dirsearch工具扫描一波,扫出来了robots.php目录,然后访问robots.txt 目录,发现了有一个备份文件 ,访问备份文件,下载内容 文件的大致内容如下 里面有一个curl_exec这个函数容易造成ssrf攻击的漏洞 我…

监控神器vnStat初探

文章目录 一、概述二、官方docker部署1. vnStat守护进程和HTTP服务器在同一容器中运行2. 双容器运行,vnstat容器收集数据,vnstati容器提供web服务 三、修改后的编排文件四、运行结果五、停止监控不感兴趣的网卡 一、概述 vnStat是一款网络流量监测工具&…

微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门

Elasticsearch ES简介 分布式全文搜索引擎 我们天天在用ES 搜索的时候 要与多个信息进行匹配查找 然后返回给用户 首先 ES会将数据库中的信息 先进行一个拆分 这个叫做分词 是按照词语关键词拆的 然后就能进行搜索的时候匹配对应的id 每一个关键字对应若干id 每一个…