一图看完8种常用网络协议

一图看完8种常用网络协议

alt

今天我们来聊聊网络协议。

1. OSI模型

网络协议是网络中两台计算机之间传输数据的标准语言。各种计算机系统使用 OSI(Open Systems Interconnection)模型规定的标准相互通信。OSI 模型有七个抽象层,每个层都有不同的职责和协议。

下图显示了 OSI 模型中每一层的功能。每一层都为其上层提供一类功能,并由其下层为其提供服务。

alt

应用层

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

表现层

这一层处理数据编码、加密和压缩,为应用层准备数据。例如,HTTPS 利用 TLS(Transport Layer Security)实现客户端与服务器之间的安全通信。

会话层

该层用于打开和关闭两个设备之间的通信。如果数据量较大,会话层就会设置检查点,避免从头开始重新发送。

传输层

该层处理两个设备之间的端到端的通信。它在发送方将数据分解成段,然后在接收方重新组装。这一层有流量控制,以防止拥塞。这一层的主要协议是 TCP 和 UDP。

网络层

这一层实现不同网络之间的数据传输。它进一步将网段或数据报分解成更小的数据包,并使用 IP 地址找到通往最终目的地的最佳路由。

数据链路层

这一层允许在同一网络的设备之间传输数据。数据包被分解成帧,这些帧被限制在局域网内。

物理层

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

与 OSI 模型相比,TCP/IP 模型只有 4 层。在讨论网络协议的层次时,必须明确上下文。

2. OSI 封装

既然我们已经了解了每一层的职责,那就让我们用下图来总结一下数据传输过程。这就是所谓的封装(encapsulation)和去封装(decapsulation)。封装是指在数据向目的地传输的过程中为数据添加报头。解封装会移除这些报头,以获取原始数据。

alt

步骤 1:

当设备 A 使用 HTTP 通过网络向设备 B 发送数据时,最初会在应用层添加一个 HTTP 报头。

步骤 2:

在数据中添加 TCP 或 UDP 报头。它在传输层被封装成 TCP 段。报头包含源端口、目的端口和序列号。

步骤 3:

然后在网络层用 IP 报头对这些段落进行封装。IP 报头包含源 IP 地址和目的 IP 地址。

步骤 4:

在数据链路层为 IP 数据报添加 MAC 报头,其中包含源 MAC 地址和目的 MAC 地址。

步骤 5:

封装帧被发送到物理层,并作为比特流在网络上发送。

步骤 6-10:

设备 B 从网络接收到比特流后,会启动去封装过程,这与封装过程相反。报头逐层去除,直到设备 B 可以访问原始数据。

请注意,每一层都使用报头来处理指令,而不需要解封上一层的数据。

3. 常用网络协议

下面的动图展示了常用的一些网络协议及其使用场景。

alt
  1. HTTP

HTTP 是一种用于获取 HTML 文档等资源的协议。它是网络数据交换的基础,也是一种客户端-服务器协议。

  1. HTTP/3

HTTP/3 是 HTTP 的下一个重要修订版本。它在 QUIC 上运行。QUIC 是一种新的传输协议,专为移动互联网而设计。它依赖于 UDP 而不是 TCP,这使得网页响应速度更快。VR 应用程序需要更多带宽来迅速呈现虚拟场景的复杂细节,因此迁移到由 QUIC 支持的 HTTP/3 会从中受益。

  1. HTTPS

HTTPS 扩展了 HTTP,并使用加密技术实现安全通信。

  1. WebSocket

WebSocket 是一种通过 TCP 提供全双工通信的协议。客户端通过建立 WebSocket 从后端服务接收实时更新。与总是 "拉取 "数据的 REST 不同,WebSocket 可以 "推送 "数据。在线游戏、股票交易和消息应用程序等都利用 WebSocket 进行实时通信。

  1. TCP

TCP 设计用于在互联网上发送数据包,确保数据和信息在网络上成功传递。许多应用层协议都建立在 TCP 协议之上。

  1. UDP

UDP 直接向目标计算机发送数据包,无需先建立连接。UDP 通常用于对时间敏感的通信,因为这种情况下偶尔丢弃数据包比等待更好。语音和视频应用通常使用此协议发送数据。

  1. SMTP

SMTP 是一种标准协议,用于将电子邮件从一个用户传输到另一个用户。

  1. FTP

FTP 用于在客户端和服务器之间传输计算机文件。它有独立的控制通道和数据通道连接。

我们来把这些网络协议放到分布式系统中看看它们的典型应用。

alt

【关注公众号ByteByteGo获取高清图】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫。 Spider是一个功能很强的自动提取网页的程序 ,它为搜索引擎从万维网上下载网页 ,是搜索引擎的重要组成 .它通过请求站点上的 HTML文档访问某一站点。它遍历 Web空间 ,不断从一个站点移动到另一个站点 ,自动建立索引 ,并加入到网页数据库中。网络爬虫进入某个超级文本时 ,它利用 HTML语言的标记结构来搜索信息及获取指向其他超级文本的 URL地址 ,可以全不依赖用户干预实现网络上的自动爬行和搜索。 Spider的队列 (1)等待队列 :新发现的 URL被加入到这个队列 ,等待被 Spider程序处理 ; (2)处理队列 :要被处理的 URL被传送到这个队列。为了避免同一个 URL被多次处理 ,当一个 URL被处理过后 ,它将被转移到成队列或者错误队列 (如果发生错误 )。 (3)错误队列 :如果在下载网页是发生错误 ,该 URL将被加入 到错误队列。 (4)成队列 :如果在处理网页没有发生错误 ,该 URL将被加入到成队列。 网络爬虫搜索策略 在抓取网页的时候 ,目前网络爬虫一般有两策略 :无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 :广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 ,然后再选择其中的一个链接网页 ,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络爬 虫并行处理 ,提高其抓取速度。深度优先是指网络爬虫会从起始页开始 ,一个链接一个链接跟踪下去 ,处理这条线路之后再转入下一个起始页 ,继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行 器采用宽度优先搜索策略或者是对这策略的某些改进。 在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "子集 "(如用户查询、子链接或子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 "搜索前沿 "(Spider Frontier)的队列中 ,网络爬虫根据搜索前沿中链接的 "重要程度 "决定下一个要访问的链接。如何评价和预测链接的 "重要程度 "(或称价值 )是决定网络爬虫搜索策略的关键。 众多的网络爬虫设计各不相同 ,但归根结底是采用不同的链接价值评价标准。 常用开源网络爬虫介绍及其比较 Nutch 开发语言:Java 简介: Apache的子项目之一,属于Lucene项目下的子项目。 Nutch是一个基于Lucene,类似Google的整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中。 Larbin 开发语言:C++ 简介   larbin是一开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎 提供广泛的数据来源。   Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由 用户自己成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。   latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看 到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。 Heritrix 开发语言:Java 简介 与Nutch比较 Heritrix 和 Nutch。二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛( Web Crawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地, 使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成 本地文件及相应的日志信息等。 Heritrix 是个 "archival crawler" -- 用来获取整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。 抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相 同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的 定义要获取的URL。 二者的差异: Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页
冰淇淋拌饭这张图片后,我感到十分震撼和惊讶。这张照片展示了一非常特别的食品组合,即将冰淇淋和米饭混合在一起。这是一个非常不同寻常的组合,让我感到十分好奇,同时也让人产生了许多不同的想法和感受。 首先,当我看到这张照片时,我感到非常震撼。这是因为我从未想过将冰淇淋和米饭混合在一起。这是一非常不同寻常的食品组合,让我感到十分惊讶。我开始思考这组合可能是如何产生的,以及它的历史和文化背景。我开始想象人们如何发现这组合,以及他们如何开始尝试它。这让我感到非常好奇,因为我认为这是一非常独特的食品组合。 其次,当我看到这张照片时,我开始思考这食品组合可能带来的味道和口感。我想象米饭的软糯和冰淇淋的甜美如何相互作用,以及这组合会带来什么样的感觉。我认为这组合可能会非常奇特,因为米饭和冰淇淋具有非常不同的口感和味道。我开始想象米饭的软糯和冰淇淋的甜美如何相互作用,以及这组合会带来什么样的感觉。我认为这组合可能会非常奇特,因为米饭和冰淇淋具有非常不同的口感和味道。 最后,当我看到这张照片时,我开始思考这食品组合可能对人体健康的影响。我认为这组合可能会对人体健康造成一些影响,因为冰淇淋通常含有大量的糖分和脂肪,而米饭则是一高碳水化合物的食品。这可能会导致血糖水平的剧烈波动,或者增加人体的胰岛素抵抗力。我认为这是一个值得考虑的问题,因为我们应该对我们的饮食和健康保持警惕。 总之,看冰淇淋拌饭这张图片后,我感到非常震撼和惊讶。这非常不同寻常的食品组合让我产生了许多不同的想法和感受。我开始思考这组合可能的历史和文化背景,以及它会带来什么样的味道和口感。我也开始思考这组合可能对人体健康的影响。这是一个非常有趣的话题,让我感到十分好奇和兴奋。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ByteByteGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值