THM-网络基础-数据包和帧
什么是数据包和帧
数据包和帧是小块数据,当它们组合在一起时,会形成更大的信息或消息。但是,它们在 OSI 模型中是两个不同的东西。帧位于第 2 层 - 数据链路层,这意味着没有 IP 地址等信息。把这想象成把一个信封放在一个信封里,然后把它寄出去。第一个信封将是您邮寄的数据包,但一旦打开,里面的信封仍然存在并且包含数据(这是一个帧)
这个过程称为封装,在这个阶段,可以安全地假设当我们谈论包含 IP 地址时,我们都是在谈论数据包。当封装信息(IP地址)被剥离时,我们谈论的是帧本身。
数据包是跨联网设备传输数据的有效方式,由于此数据以小块形式交换,因此与一次发送大消息相比,跨网络出现瓶颈的可能性更小。
例如,当从网站加载图像时,该图像不会作为一个整体发送到您的计算机,而是在您的计算机上重建的小块。以下图为例说明此过程。狗的照片被分成三个数据包,当它到达计算机以形成最终图像时会在其中重建。
数据包具有不同的结构,这取决于正在发送的数据包的类型。正如我们将要讨论的那样,网络充满了标准和协议,它们作为一组规则来决定如何在设备上处理数据包。到 2020 年底,互联网预计将连接大约 500 亿台设备,如果没有标准化,事情很快就会失控。
让我们继续我们的 Internet 协议示例。使用此协议的数据包将具有一组标头,其中包含通过网络发送的数据的附加信息。
一些值得注意的标题包括:
标头 | 描述 |
---|---|
Time to Live(生存时间) | 该字段为数据包设置一个到期计时器,如果它永远无法到达主机或逃逸,则不会阻塞您的网络! |
Checksum(校验和) | 该字段为 TCP/IP 等协议提供完整性检查。如果更改了任何数据,则此值将与预期的不同并因此损坏。 |
Source Address(源地址) | 发送 数据包的设备的 IP 地址,以便数据知道返回到哪里。 |
Destination Address(目的地址) | 数据包被发送到的设备的 IP 地址,以便数据知道下一步要传输到哪里。 |
TCP/IP(三次握手)
TCP (或 简称为传输控制协议)是网络中使用的一种传输协议。
该协议与我们之前讨论过的 OSI 模型非常相似。OSI介绍:基础知识-OSI七层模型
TCP/IP 协议由四层组成,可以说只是 OSI 模型的一个概括版本。这些层是:
- Application(应用)
- Transport(传输)
- Internet(互联网)
- Network Interface(网络接口)
与 OSI 模型的工作方式非常相似,当数据(或数据包)穿过它时,信息被添加到TCP模型的每一层。您可能还记得,这个过程被称为封装——这个过程的逆过程是解封装。
TCP的一个定义特征是它是 基于连接的,这意味着TCP必须在 发送数据之前在客户端和充当服务器的设备之间建立连接 。
因此,TCP保证发送的任何数据都会在另一端收到。这个过程被命名为三次握手,这是我们稍后将要讨论的内容。 下表比较了TCP的优缺点:
TCP的优点 | TCP的缺点 |
---|---|
保证数据的完整性 | 需要两个设备之间的可靠连接。如果没有收到一小块数据,则无法使用整个数据块,必须重新发送 |
能够同步两个设备以防止彼此被错误顺序的数据淹没 | 慢速连接可能会成为另一台设备的瓶颈,因为连接将一直保留在另一台设备上 |
为可靠性执行更多的过程 | TCP比 UDP 慢得多,因为使用此协议的设备必须完成更多工作(计算) |
TCP数据包包含从封装中添加的称为标头的各种信息部分。让我们解释下表中的一些关键标头:
标头 | 描述 |
---|---|
源端口(Source Port) | 此值是发送方打开的用于发送TCP数据包的端口。该值是随机选择的(从未使用的 0-65535 端口中选择) |
目的端口(Destination Port) | 该值是远程主机(接收数据的主机)上运行的应用程序或服务的端口号;例如,在端口 80 上运行的 Web 服务器。与源端口不同,此值不是随机选择的 |
源IP(Source IP) | 这是发送数据包的设备的 IP 地址 |
目的IP(Destination IP) | 这是数据包的目标设备的 IP 地址 |
序列号(Sequence Number) | 当连接发生时,传输的第一条数据被赋予一个随机数,我们将在后面更深入地解释这一点 |
确认编号(Acknowledgement Number) | 在一条数据被赋予序号后,下一条数据的序号将是序号+1,我们还将在后面更深入地解释这一点 |
校验和(Checksum) | 这个值赋予了TCP完整性。在记住输出的地方进行数学计算。当接收设备执行数学计算时,如果输出与发送的不同,则数据一定是损坏的 |
数据(Data) | 该标头是存储数据(即正在传输的文件的字节)的位置 |
旗帜(Flag) | 此标头确定在握手过程中任一设备应如何处理数据包。特定的标志将决定特定的行为,这就是我们将在下面解释的内容 |
接下来,我们将继续讨论 三次握手—— 用于在两个设备之间建立连接的过程的术语。 三向握手使用一些特殊消息进行通信 - 下表突出显示了主要消息:
Step | 信息 | 描述 |
---|---|---|
1 | SYN(同步号) | SYN 消息是客户端在握手期间发送的初始数据包。此数据包用于启动连接并将两个设备同步在一起(稍后我们将进一步解释) |
2 | SYN/ACK(同步/确认) | 此数据包由接收设备(服务器)发送,以确认来自客户端的同步尝试 |
3 | ACK(确认) | 客户端或服务器可以使用确认数据包来确认已成功接收到一系列消息/数据包 |
4 | DATA(数据) | 建立连接后,数据(例如文件的字节)将通过“DATA”消息发送 |
5 | FIN | 此数据包用于在连接完成后干净地(正确地)关闭连接 |
# | RST | 这个数据包突然结束了所有的通信。这是最后的手段,表明在此过程中出现了一些问题。例如,如果服务或应用程序没有正常运行,或者系统出现资源不足等故障 |
下图显示了 Alice 和 Bob 之间正常的三次握手过程。在现实生活中,这将发生在两个设备之间。
任何发送的数据都被赋予一个随机数序列,并使用该数字序列重建并递增 1。两台计算机必须就相同的数字序列达成一致,以便以正确的顺序发送数据。该命令在三个步骤中达成一致:
- SYN - 客户端:这是我的初始序列号 (ISN) 与 (0) SYN chronise
- SYN/ACK - 服务器:这是我的初始序列号 (ISN) 与 (5,000)同步同步,我 确认您的初始序列号 (0)
- ACK - 客户:我 确认您的初始序列号 (ISN) 为 (5,000),这是我的 ISN+1 (5,000 + 1) 的一些数据
TCP关闭连接:
让我们快速解释一下TCP关闭连接背后的过程。首先,一旦一个设备确定另一个设备已成功接收到所有数据,TCP 将关闭连接。
因为TCP在设备上保留系统资源,所以最好尽快关闭 TCP 连接。
要启动TCP连接的关闭,设备将向其他设备发送“FIN”数据包。当然,对于 TCP,其他设备也必须确认此数据包。
让我们像以前一样使用爱丽丝和鲍勃来展示这个过程。
在图中,我们可以看到 Alice 向 Bob 发送了一个“ FIN ”数据包。因为鲍勃收到了这个,他会让爱丽丝知道他收到了,他也想关闭连接(使用 FIN)。爱丽丝已经清楚地听到了鲍勃的声音,并且会让鲍勃知道她承认这一点。
看下面小例子理解三次握手
UDP/IP
用户数据报 协议 ( UDP )是 另一种用于在设备之间传送数据的协议。
与其兄弟TCP不同,UDP 是一种 无状态 协议,不需要两个设备之间的持续连接来发送数据。例如,没有发生三次握手,两个设备之间也没有任何同步。
回想一下,“OSI 模型”中对这两个协议所做的一些比较。即,UDP用于应用程序可以容忍数据丢失的情况(例如视频流或语音聊天)或不稳定连接不是最终结果的情况。UDP优缺点比较表如下:
UDP优点 | UDP缺点 |
---|---|
UDP比 TCP 快得多 | UDP不关心是否接收到数据 |
UDP让应用程序(用户软件)决定是否可以控制数据包的发送速度 | 从这个意义上说,它对软件开发人员来说是相当灵活的 |
UDP不像 TCP 那样在设备上保留连续连接 | 这意味着不稳定的连接会给用户带来糟糕的体验 |
如前所述,在两个设备之间建立连接时不会发生任何过程。这意味着不考虑是否收到数据,也没有TCP提供的保护措施,例如数据完整性。
UDP数据包比 TCP 数据包简单得多,并且具有更少的标头。但是,这两个协议共享一些标准标头,这些标头在下表中有注释:
标头 | 描述 |
---|---|
Time to Live (TTL)生存时间 | 此字段为数据包设置一个到期计时器,因此如果它永远无法到达主机或逃逸,它不会阻塞您的网络! |
Source Address源地址 | 发送数据包的设备的 IP 地址,以便数据知道返回到哪里 |
Destination Address目的地址 | 数据包被发送到的设备的 IP 地址,以便数据知道下一步要传输到哪里 |
Source Port源端口 | 此值是发送方打开的用于发送TCP数据包的端口。该值是随机选择的(从未使用的 0-65535 端口中选择) |
Destination Port目的端口 | 该值是远程主机(接收数据的主机)上运行的应用程序或服务的端口号;例如,在端口 80 上运行的 Web 服务器。与源端口不同,此值不是随机选择的 |
Data | 该标头是存储数据(即正在传输的文件的字节)的位置 |
接下来,我们将继续讨论通过UDP 的连接过程与 TCP 等连接过程有何不同。我们应该记得 UDP 是无状态的。连接期间不发送确认。
下图显示了Alice 和 Bob 之间的正常UDP连接。在现实生活中,这将发生在两个设备之间。
可以看出,Bob向Alice发出了请求,Alice通过数据包分片回复了数据,就结束了。
端口
也许用他们的名字恰当地命名,端口是可以交换数据的重要点。想想港口。希望停靠港口的船舶必须前往与船舶尺寸和设施相适应的港口。当船排队时,它将连接到 港口的一个港口。例如,邮轮不能停靠在为渔船建造的港口,反之亦然
这些端口强制规定可以停放什么以及放在哪里——如果不兼容,就不能停放在这里。网络设备在相互通信时也使用端口来执行严格的规则。建立连接后(从 OSI 模型回忆),设备发送或接收的任何数据都将通过这些端口发送。在计算中,端口是介于0 和 65535 (65,535)之间的数值
因为端口的范围可以在 0-65535 之间的任何位置,所以很快就会有失去对哪个应用程序正在使用哪个端口的跟踪的风险。繁忙的港口一片混乱!值得庆幸的是,我们将应用程序、软件和行为与一组标准规则相关联。例如,通过强制任何 Web 浏览器数据通过端口 80 发送,软件开发人员可以设计一种 Web 浏览器(如 Google Chrome 或 Firefox)以彼此相同的方式解释数据。
这意味着所有 Web 浏览器现在都共享一个通用规则:数据通过端口 80 发送。浏览器的外观、感觉和易用性取决于设计者或用户的决定
虽然 Web 数据的标准规则是 端口 80 ,但其他一些协议已分配了标准规则。0 和 1024 (1,024)之间的任何端口 都称为公共端口。让我们在下面探讨其中一些其他协议:
协议 | 端口号 | 描述 |
---|---|---|
File Transfer Protocol 文件传输协议(FTP) | 21 | 该协议由基于客户端-服务器模型构建的文件共享应用程序使用,这意味着您可以从中央位置下载文件 |
Secure Shell 安全外壳 (SSH) | 22 | 该协议用于通过基于文本的管理界面安全登录系统 |
HyperText Transfer Protocol 超文本传输协议 (HTTP) | 80 | 该协议为万维网 (WWW) 提供支持!您的浏览器使用它来下载网页的文本、图像和视频 |
HyperText Transfer Protocol Secure 超文本传输协议安全 (HTTPS) | 443 | 该协议与上面的完全相同;但是,安全地使用加密 |
Server Message Block Server Message Block (SMB) | 445 | 该协议类似于文件传输协议 ( FTP );但是,除了文件,SMB 还 允许您共享打印机等设备 |
Remote Desktop Protocol 远程桌面协议 (RDP) | 3389 | 该协议是一种使用可视化桌面界面登录系统的安全方式(与 SSH 协议的基于文本的限制相反) |
我们只简要介绍了网络安全中更常见的协议。您可以找到列出的 1024 个公共端口表以获取更多信息。
这里值得注意的是,这些协议只遵循标准。也就是说,您可以在标准端口以外的不同端口上管理与这些协议交互的应用程序(在 8080 而不是 80 标准端口上运行 Web 服务器)。但是请注意,应用程序将假定遵循标准,因此您必须提供冒号端口号
。例如:8080
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程