网络协议驱动互联网

news2024/10/7 11:42:28

在分布式系统中,数据通过各种网络协议在网络中传输。作为应用程序开发者,这往往在问题出现之前似乎是一个黑盒子。

在本文中,我们将解释常见网络协议的工作原理,它们在分布式系统中的应用以及我们如何解决常见问题。后续还会介绍一些常见的面试问题,例如:

•在输入网址到浏览器时会发生什么?•什么是TCP三次握手?•TCP的time_wait状态是什么意思?•HTTP 1/2/3是什么?•为什么HTTP 3使用UDP?•HTTPS是如何工作的?•为什么UDP被认为是“不可靠”的?

让我们首先了解网络协议的使用情况。

互联网和OSI模型

互联网连接了世界各地的各种计算设备。我们可以从下面的图表中大致了解。假设我们从智能手机或笔记本电脑访问一个网站,它连接到一个移动网络基站。基站连接到路由器,然后通过互联网服务提供商(ISP)访问互联网。数据包被转发到本地ISP,然后到达托管网站的网络。一旦数据包到达公司网络,它们经过链路层交换机并到达适当的服务器。

89c64f1b693b560c321afab807ed49ce.png

路由器和链路层交换机都是数据包交换机,它们的工作是转发数据包。区别在于,路由器通常用于网络核心连接多个网络,而链路层交换机用于访问网络(物理连接终端系统和边缘路由器的网络),在单个网络中连接多个设备。

为什么我们需要网络协议?互联网连接的设备需要使用它们可以理解的语言进行通信。各种计算机系统使用OSI(开放系统互连)模型规定的标准相互通信。OSI模型有七个抽象层,每个层都有独特的职责和协议。

下图显示了OSI模型中各层的作用。每个中间层为上面的层提供一类功能,并由下面的层提供服务。

de70a06919cc4a1fa16eb1dbb85168ad.png

应用层

应用层最接近最终用户。大多数应用程序位于此层。我们向后端服务器请求数据,无需了解数据传输的具体细节。此层的协议包括HTTP、SMTP、FTP、DNS等,我们稍后会详细介绍它们。

表示层

该层处理数据编码、加密和压缩,为应用层准备数据。例如,HTTPS使用TLS(传输层安全)在客户端和服务器之间进行安全通信。

会话层

该层在两个设备之间建立和关闭通信。如果数据量较大,会话层设置检查点以避免从头重新发送。

传输层

该层处理两个设备之间的端到端通信。它在发送端将数据分割为段,并在接收端重新组装它们。此层具有流量控制以防止拥塞。在该层中的关键协议是TCP和UDP,我们稍后会讨论它们。

网络层

该层实现不同网络之间的数据传输。它将段或数据报进一步分割为较小的数据包,并使用IP地址找到到达目标的最佳路由。这个过程称为路由。

数据链路层

该层允许在同一网络上的设备之间进行数据传输。数据包被分割为帧,并限制在本地区域网络中。

物理层

该层通过电缆和交换机发送比特流,因此与设备之间的物理连接密切相关。

与OSI模型相比,TCP/IP模型只有4层。在讨论层次结构时,重要的是要指定上下文。

现在我们了解了每个层的职责,让我们通过以下图表总结数据传输过程。这被称为封装和解封装。封装是在数据朝向目的地的过程中添加头部信息。解封装则是去除这些头部以恢复原始数据。

98c98c4cd16ef5ccf5e2c648a61d1c02.png

步骤1:当设备A使用HTTP通过网络向设备B发送数据时,应用层会添加HTTP头部。

步骤2:在传输层,TCP或UDP头部会添加到数据中。数据会在传输层被封装成TCP段。头部包含源端口、目标端口和序列号。

步骤3:接下来,段会在网络层被封装成IP头部。IP头部包含源IP地址和目标IP地址。

步骤4:在数据链路层,MAC头部会添加到IP数据报中,其中包含源MAC地址和目标MAC地址。

步骤5:封装后的帧会发送到物理层,并以比特流的形式通过网络发送。

步骤6-10:当设备B从网络接收到比特流时,每一层都会解封装数据,并将其传递到相应的层。

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

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

相关文章

开源一键拥有你自己的ChatGPT+Midjourney网页服务,用不用是另一回事,先收藏!

功能支持 原ChatGPT-Next-Web所有功能 midjourney imgine 想象 midjourney upscale 放大 midjourney variation 变幻 midjourney describe 识图 midjourney blend 混图 midjourney 垫图 绘图进度百分比、实时图像显示 自身支持midjourney-api 参数说明 MIDJOURNEY_PROXY_URL …

组态王与多台PLC之间无线以太网通信

在实际系统中,同一个车间里分布多台PLC,通过上位机集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大耽误工期,这种情况下比较适合采用无线通信方式。 本方案以组态王和2…

java -D详解

官方文档对 -D 有明确的解释,具体看 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 简单解释一下 首先,java 命令是这么用的 其次,-D 是属于 [options] 这一块的。而 [options] 又分为如下几类 -D 就属于标准选…

企业级医疗项目:码猿慢病云管理系统来了!

大家好,我是不才陈某~ 不知不觉转行到医疗领域已经两年多了,前后服务过三百多家医疗机构,深耕于医疗领域,不知道在座的各位有从事医疗领域工作的吗? 上个月和朋友搞了一套的企业级的医疗实战项目:码猿慢病云…

Arthas线上故障案例分析——内存使用率上升,负载突然变高

使用经验分享 线上故障排查思路: 1、紧急处理,优先保障服务可用(如切换vip,主备容灾) 2、保留第一现场,通过jstack -l {pid} > jvmtmp.txt ,打印栈信息 (后续可以在gceasy官网上…

Maven插件开发及Demo演示

引言 maven不仅仅只是项目的依赖管理工具,其强大的核心来源自丰富的插件,可以说插件才是maven工具的灵魂。本篇文章将对如何自定义maven插件进行讲解,希望对大家有所帮助。 背景 讲如何开发maven插件之前,不妨先来聊一下什么是…

STM32速成笔记—定时器

文章目录 一、什么是定时器二、定时器有什么用三、通用定时器详细介绍3.1 时钟来源3.2 预分频器,计数器,自动重装载寄存器3.2.1 预分频器3.2.2 计数器3.2.3 自动重装载寄存器 3.3 触发控制器 四、PWM4.1 什么是PWM4.2 什么是占空比4.3 STM32F1 PWM介绍4.…

【Python 随练】打印菱形图案

题目: 打印出如下图案(菱形) ********* ****************简介: 在本篇博客中,我们将使用Python代码打印一个菱形图案。我们将提供问题的解析,并给出一个完整的代码示例来生成这个菱形图案。 问题分析&am…

阿里云开源离线同步工具DataX3.0,用于数据仓库、数据集市、数据备份

DataX是阿里云开源的一款离线数据同步工具,支持多种数据源和目的地的数据同步,包括但不限于MySQL、Oracle、HDFS、Hive、ODPS等。它可以通过配置文件来定义数据源和目的地的连接信息、数据同步方式、数据过滤等,从而实现数据的高效、稳定、可…

C++初阶—完善适配器(反向迭代器)

目录 0. 前言 1、反向迭代器定义 2、反向迭代器需要实现的相关函数 3、反向迭代器分析 4、针对vector物理空间结构分析 5、针对list物理空间结构分析 6、反向迭代器适配器的实现及测试 0. 前言 本篇文章主要根据前面所实现的STL中支持迭代器的容器进行完善,使…

Mysql数据库日志和数据的备份恢复(去看一看海吧)

文章目录 一、数据库备份的重要性二、数据库备份的分类1.物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。2.逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份,导出sql文件。3.完全…

被卖到 2w 的 ChatGPT 提示词 Prompt 你确定不想要吗?

有朋友说,用 ChatGPT 生成的文案刻板化,格式化,而且往往也不是我想要的。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 想要用好 ChatGPT 人工智能工具太难了,想一个好的提示词,也太不容易了,ChatGPT 就像一个宝藏…

3ds MAX绘制休闲椅

首先绘制一个长方形,并用上边两端点和底边中点绘制一个样条曲线 将上述曲线旋转复制,形成一个交叉的样条曲线,并移动两端点的位置,形成一上一下的结构 这就是休闲椅的大致形状 通过创建线将四个端点连接起来,形成空间…

UI组件——滑块简介

滑块控件是调整音量和亮度等设置的首选解决方案。它们立即生效,并允许用户通过移动手柄来微调值。滑块可以很好地达到目的,尤其是在精度不是很重要的情况下。 但是,这些控件可能会令人困惑,难以抓取并设置为精确值。另外&#xf…

人类智能的未来在于东西方智能的融合

有人认为:“只有时空的对齐,没有价值的对齐,智能或许就是智障”,即智能技术必须要与人类的价值观念和道德标准相一致,否则它所产生的结果可能会对人类社会造成负面影响。在现代社会中,智能技术已经越来越广…

【Elacticsearch】 分片副本机制,集群发现机制 ,负载机制,容错机制,扩容机制, 分片路由原理

集群发现机制 Elasticsearch采用了master-slave模式, ES会在集群中选取一个节点成为主节点,只有Master节点有资格维护全局的集群状态,在有节点加入或者退出集群的时候,它会重新分配分片,并将集群最新状态发送给集群中其…

Netty中的零拷贝机制

零拷贝机制(Zero-Copy)是在操作数据时不需要将数据从一块内存区域复制到另一块内存区域的技术,这样就避免了内存的拷贝,使得可以提高CPU的。零拷贝机制是一种操作数据的优化方案,通过避免数据在内存中拷贝达到的提高CPU性能的方案。 1.操作系统的零拷贝机制 操作系统的存储空间…

C++基础(5)——类和对象(3)

前言 本文主要介绍了C中类和对象的基本知识 4.3.1:成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 C语言中结构体为空时使用sizeof()打印的结果是0 C中类和结构体为空,用sizeof关键字可以算出是空类占1字节、…

OpenCV项目开发实战--图像识别和目标检测之(手写数字分类)

文末附基于Python和C++两种方式实现的测试代码下载链接 在本教程中,我们将使用 OpenCV 构建一个简单的手写数字分类器。一如既往,我们将分享用 C++ 和 Python 编写的代码。 最后两个帖子旨在提供了解基础知识所需的教育。这篇文章旨在提供成功实施图像分类器所需的培训。那么…

SpringBoot集成阿里云OSS实现图片存储服务

SpringBoot集成阿里云OSS实现图片存储服务 1、OSS概述2、账号申请2.1 购买服务2.2 创建Bucket 3、抽取模板工具OssProperties配置类OssTemplate模板对象AutoConfiguration配置类yml配置内容 4、测试 阿里云OSS(Object Storage Service)是一种强大的云存储…