《网络协议》07. 其他协议

news2024/11/19 16:22:43

title: 《网络协议》07. 其他协议
date: 2022-10-07 18:24:02
updated: 2023-11-15 08:00:52
categories: 学习记录:网络协议
excerpt: IPv6、WebSocket、WebService(SOAP,WSDL)、HTTPDNS、FTP、邮件(SMTP,POP,IMAP)、即时通信(XMPP,MQTT)、流媒体。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png


网络协议

  • 1:IPv6
    • 1.1:地址格式
    • 1.2:首部格式
  • 2:WebSocket
    • 2.1:建立连接
  • 3:WebService
    • 3.1:SOAP
    • 3.2:WSDL
  • 4:HTTPDNS
  • 5:FTP
    • 5.1:主动模式
    • 5.2:被动模式
  • 6:邮件
    • 6.1:相关协议
    • 6.1:邮件收发过程
    • 6.2:POP vs IMAP
  • 7:即时通信
    • 7.1:XMPP
    • 7.2:MQTT
  • 8:流媒体
    • 8.1:常见协议


网络协议从入门到底层原理。

1:IPv6

IPv6(Internet Protocol version 6),网际协议第 6 版。

  • 用它来取代 IPv4 主要是为了解决 IPv4 地址枯竭问题,同时它也在其他方面对于 IPv4 有许多改进
  • IPv6 采用 128 位地址,而 IPv4 使用的是 32 位
  • 支持 2^128(约 3.4 ∗ 10^38)个地址。以地球人口 70 亿人计算,每人平均可分得约 4.86 ∗ 10^28 个 IPv6 地址
  • 然而长期以来 IPv4 在互联网流量中仍占据主要地位,IPv6 的使用增长缓慢
  • 因为 IPv6 需要设备、操作系统内核升级,以支持 IPv6。不像 HTTP 升级到 HTTP2 一样方便

在 2019 年 12 月,通过 IPv6 使用 Google 服务的用户百分率首次超过 30%

1.1:地址格式

  • IPv6 地址为 128 bit,每 16 bit 一组,共 8 组
  • 每组以冒号【:】隔开,每组以 4 位十六进制方式表示
    • 例如 2001:0db8:86a3:08d3:1319:8a2e:0370:7344
  • 类似于 IPv4 的点分十进制,IPv6 同样也存在点分十六进制的写法
    • 2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4
  • 每组前面连续的 0 可以省略。下列 IPv6 地址是等价的:
    • 2001:0db8:02de:0000:0000:0000:0000:0e13
    • 2001:db8:2de:0:0:0:0:e13
  • 可以用双冒号【::】表示一组 0 或多组连续的 0。但只能出现一次。下列 IPv6 地址等价:
    • 2001:db8:2de:0:0:0:0:e13
    • 2001:db8:2de::e13
  • 2001::25de::cade 是非法的,因为双冒号出现了两次,会造成歧义:
    • 2001:0000:0000:0000:0000:25de:0000:cade
    • 2001:0000:25de:0000:0000:0000:0000:cade
  • ::1 是本地环回地址:0:0:0:0:0:0:0:1
    • ping ::1 可以 ping 通本机

1.2:首部格式

IPv6 有 40 字节的固定首部。

在这里插入图片描述

在这里插入图片描述

  • Version(占 4 bit,0110):版本号
  • Traffic Class(占 8 bit):交通类别
    • 指示数据包的类别或优先级,可以帮助路由器根据数据包的优先级处理流量
    • 如果路由器发生拥塞,则优先级最低的数据包将被丢弃
  • Payload Length(占 16 bit):有效负载长度
    • 最大值 65535 字节
    • 包括了扩展头部、上层(传输层)数据的长度首部格式
  • Hop Limit(占 8 bit):跳数限制
    • 与 IPv4 数据包中的 TTL 相同
  • Source Address(占 128 bit):源 IPv6 地址
  • Destination Address(占 128 bit):目的 IPv6 地址
  • Flow Label(占 20 bit):流标签
    • 指示数据包属于哪个特定序列(流)
    • 用数据包的源地址、目的地址、流标签标识一个流
  • Next Header(占 8 bit):下一个头部
    • 指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如 TCP、UDP、ICMPv6)

扩展头部示意图如下。

在这里插入图片描述

在这里插入图片描述

2:WebSocket

Socket 是一套网络编程 API,利用它可以建立网络连接,一般都是操作系统底层实现的。
WebSocket 是一个网络协议。

HTTP 请求的特点:通信只能由客户端发起。所以,早期很多网站为了实现推送技术,所用的技术都是轮询。

轮询:由浏览器每隔一段时间(如每秒)向服务器发出 HTTP 请求,然后服务器返回最新的数据给客户端。

为了能更好的节省服务器资源和带宽,并且能够更实时地进行通讯,HTML5 规范中出现了 WebSocket 协议。

在这里插入图片描述

WebSocket,是基于 TCP 的支持全双工通信的应用层协议。客户端、服务器,任何一方都可以主动发消息给对方。

在 2011 年由 IETF 标准化为 RFC 6455,后由 RFC 7936 补充规范。

WebSocket 的应用场景很多:社交订阅、股票基金报价、体育实况更新、多媒体聊天、多玩家游戏等。

其实 TCP 本身就是支持全双工通信的(客户端、服务器均可主动发消息给对方),只是 HTTP 的 “ 请求-应答模式 ” 限制了 TCP 的能力。

  • WebSocket 和 HTTP 属于平级关系,都是应用层的协议。
  • WebSocket 使用 80(ws://)、443(wss://)端口,可以绕过大多数防火墙的限制。
    • ws://example.com/wsapi
    • wss://secure.example.com/wsapi
  • 与 HTTP 不同的是,WebSocket 需要先建立连接。
    • 这就使得 WebSocket 成为一种有状态的协议,之后通信时可以省略部分状态信息
    • 而 HTTP 请求可能需要在每个请求都额外携带状态信息(如身份认证等)

2.1:建立连接

WebSocket 需要借助 HTTP 协议来建立连接(也叫作 Handshake,握手)。

由客户端(浏览器)主动发出握手请求。

在这里插入图片描述

在这里插入图片描述

GUID:https://tools.ietf.org/html/rfc4122
SHA-1 摘要计算:http://encode.chahuo.com
Hex To Base64编码:https://base64.guru/converter/encode/hex

3:WebService

WebService(Web 服务),是一种跨编程语言和跨操作系统的远程调用技术标准。

WebService 使用场景举例:

  • 天气预报、手机归属地查询、航班信息查询、物流信息查询等
  • 比如天气预报,是气象局把自己的服务以 WebService 形式暴露出来,让第三方程序可以调用这些服务功能
  • http://www.webxml.com.cn/zh_cn/index.aspx

事实上,WebService 完全可以用普通的 Web API 取代(比如 HTTP + JSON )

现在很多企业的开放平台都是直接采用 Web API。

3.1:SOAP

SOAP(Simple Object Access Protocol,简单对象访问协议)。

  • 很多时候,SOAP = HTTP + XML
  • WebService 使用 SOAP 协议封装传递数据

在这里插入图片描述

3.2:WSDL

WSDL(Web Services Description Language,Web 服务描述语言)。

  • 一个 XML 文档,用以描述 WebService 接口的细节(比如参数、返回值等)
  • 一般在 WebService 的 URL 后面跟上 ?wsdl 获取 WSDL 信息。

http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

4:HTTPDNS

HTTPDNS:基于 HTTP 协议向 DNS 服务器发送域名解析请求。

  • 替代了基于 DNS 协议向运营商 Local DNS 发起解析请求的传统方式
  • 可以避免 Local DNS 造成的域名劫持和跨网访问问题
  • 常用在移动互联网中(比如在 Android、iOS 开发中)

在这里插入图片描述

HTTPDNS 的使用

  • 市面上已经有现成的解决方案
    腾讯云:https://cloud.tencent.com/product/httpdns

  • 移动端集成相关的 SDK 即可使用 HTTPDNS 服务

5:FTP

FTP(File Transport Protocol),文件传输协议。RFC 959 定义了此规范,是基于 TCP 的应用层协议

RFC 1738 中有定义,FTP 的 URL 格式为:ftp://user:password@host:port/url-path

在这里插入图片描述

连接模式

FTP 有 2 种连接模式:主动(Active)和被动(Passive)。

不管是哪种模式,都需要客户端和服务器建立 2 个连接:

  • 控制连接:用于传输状态信息(命令,command)
  • 数据连接:用于传输文件和目录信息(data)

在这里插入图片描述

5.1:主动模式

在这里插入图片描述

5.2:被动模式

在这里插入图片描述

6:邮件

6.1:相关协议

  • SMTP(Simple Mail Transfer Protocol),简单邮件传输协议

    • 发邮件使用的协议
    • 基于 TCP,标准参考 RFC 5321
    • 服务器默认使用 25 端口,SSL/TLS 使用 465 端口
  • POP(Post Office Protocol),邮局协议

    • 收邮件使用的协议
    • 基于 TCP,最新版是 POP3,标准参考 RFC 1939
    • 服务器默认使用 110 端口,SSL/TLS 使用 995 端口
  • IMAP(Internet Message Access Protocol),因特网信息访问协议

    • 基于 TCP,最新版是 IMAP4,标准参考 RFC 3501
    • 服务器默认使用 143 端口,SSL/TLS 使用 993 端口

6.1:邮件收发过程

在这里插入图片描述

6.2:POP vs IMAP

在这里插入图片描述

POP 的特点

  • 客户端连接服务器时,将会从服务器下载所有邮件
  • 可以设置下载完后,立即或一段时间后删除服务器邮件
  • 客户端的操作(比如删除邮件、移动到文件夹)不会跟服务器同步
  • 每个客户端都是独立的,都可以获得其自己的电子邮件副本

IMAP 的特点

  • 客户端连接服务器时,获取的是服务器上邮件的基本信息(如列表),并不会下载邮件
  • 等打开邮件时,才开始下载邮件
  • 客户端的操作(比如删除邮件、移动到文件夹)会跟服务器同步
  • 所有客户端始终会看到相同的邮件和相同的文件夹

7:即时通信

即时通信(Instant Messaging,IM),平时用的 QQ、微信,都属于典型的 IM 应用。

国内的 IM 开发者社区:http://www.52im.net/

IM 云服务:网易云信、腾讯云、环信等

常用协议:XMPP、MQTT、自定义协议。

7.1:XMPP

XMPP(Extensible Messaging and Presence Protocol),可扩展消息与存在协议。

  • 前身是 Jabber
  • 基于 TCP,默认端口 5222、5269

特点

  • 使用 XML 格式进行传输,体积较大
  • 专为 IM 而开发的、比较成熟的 IM 协议,开发者接入方便

7.2:MQTT

MQTT(Message Queuing Telemetry Transport),消息队列遥测传输。

  • 基于 TCP,默认端口 1883、8883(带 SSL/TLS)

特点

  • 开销很小,以降低网络流量,信息冗余远小于 XMPP
  • 不是专门为 IM 设计的协议,很多功能需要自己实现
  • 很多人认为 MQTT 是最适合物联网(Internet of Things,IoT)的网络协议

在这里插入图片描述

8:流媒体

流媒体(Streaming Media),又叫流式媒体,指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术。

此技术使得资料数据包得以像流水一样发送,不使用此技术,就必须在使用前下载整个媒体文件。

8.1:常见协议

RTP(Real-Time Transport Protocol),实时传输协议

  • 基于 UDP
  • 参考:RFC 3550、RFC 3551

RTCP(Real-Time Transport Control Protocol),实时传输控制协议

  • 基于 UDP,使用 RTP 的下一个端口
  • 参考:RFC 3550

RTSP(Real-Time Streaming Protocol),实时流协议

  • 基于 TCP、UDP 的 554 端口
  • 参考:RFC 7820

RTMP(Real-Time Messaging Protocol),实时消息传输协议

  • 默认基于 TCP 的 1935 端口
  • 由 Adobe 公司出品

HLS(HTTP Live Streaming)

  • 基于 HTTP 的流媒体网络传输协议
  • 苹果公司出品,参考:RFC 821

人生自是有情痴,此恨不关风与月。

——《玉楼春》(宋)欧阳修

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

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

相关文章

上机实验三 图的最小生成树算法设计 西安石油大学数据结构

二叉树设计 实验名称:二叉树设计 (1)实验目的: 1) 掌握二叉树的逻辑结构。 2) 掌握二叉树的二叉链表存储结构; 3) 掌握基于二叉链表存储的二叉树的遍历等操作的实现。 &#x…

Kibana:使用 “链接” 面板简化 Kibana 仪表板导航 - Links panel

作者:Teresa Alvarez Soler 我们很高兴地宣布 Kibana 仪表板的最新功能版本:链接面板(Links panel),这是在仪表板之间组织和导航的简单方法。 此功能在 Kibana 8.11 的技术预览版中提供。 有时你可能希望创建多个主题…

μC/OS-II---计时器管理1(os_tmr.c)

目录 创建一个计时器重新启动一个计时器停止一个计时器删除一个计时器 计时器是倒计时器,当计数器达到零时执行某个动作。用户通过回调函数提供这个动作。回调函数是用户声明的函数,在计时器到期时被调用。在回调函数中绝对不能进行阻塞调用(…

SUMO道路封闭车辆绕行仿真实验【TraCI】

本文将介绍如何在 SUMO 交通模拟中动态选择车辆绕行指定道路。 绕道是城市驾驶中的常见现象,造成原因有很多,包括建筑和交通事故等。 无论出于何种原因,并非所有车辆都会选择避开这些道路; 有些人可能会毫不犹豫地直接开车过去&a…

Payshield 10K是什么意思?有什么作用?

PayShield 10K是一种支付安全产品,由数字货币和法币混合而成的数字货币产品。它的意思是保护商家在交易过程中可能遭受的损失。这种产品的主要作用是保护数字货币支付系统的安全,并确保商家在交易过程中获得他们应得的收益。 PayShield 10K具有以下特点和…

基于鸟群算法优化概率神经网络PNN的分类预测 - 附代码

基于鸟群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鸟群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鸟群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

Domino为外出Internet邮件设置DKIM签名

大家好,才是真的好。 如果你看了上篇《Domino中和邮件安全有关的SPF、DKIM介绍》内容,想必就对DKIM概念不陌生,当然,上篇我们讲的是邮件入站的SFP、DKIM签名检查,这篇讲述的是外出邮件的DKIM签名。 是的,…

算不上最全,但都是必备——Spring MVC这些不会不行啊

Spring MVC篇 Spring MVC执行流程 四大组件 前端控制器DispatcherServlet处理器映射器HandlerMapping处理器适配器HandlerAdaptor视图解析器ViewResolver 视图阶段(JSP) 请求先到前端控制器DispatcherServlet DispatcherServlet将根据该请求的路径去…

理解 R-CNN:目标检测的一场革命

一、介绍 对象检测是一项基本的计算机视觉任务,涉及定位和识别图像或视频中的对象。多年来,人们开发了多种方法来应对这一挑战,但基于区域的卷积神经网络(R-CNN)的发展标志着目标检测领域的重大突破。R-CNN 及其后续变…

深入探讨Linux中的文本文件查看命令

目录 前言1 cat命令2 less命令3 more命令4 head命令5 tail命令6 总结 前言 在Linux系统中,文本文件是日常工作中不可或缺的一部分,无论是配置文件、日志文件还是代码文件,都需要用到文本文件查看命令。在本文中,我们将深入研究一…

【深度学习】吴恩达课程笔记(四)——优化算法

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【吴恩达课程笔记专栏】 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络 【深度学习】吴恩达课程笔记(三)——参数VS超参数、深度…

如何从 iCloud 恢复永久删除的照片?答案在这里!

在数字时代,丢失珍贵的照片可能会令人痛苦。然而,了解如何从 iCloud 恢复永久删除的照片可以带来一线希望。无论是意外删除还是技术故障,本指南都提供了 2023 年的最新方法来找回您的珍贵记忆。发现分步解决方案并轻松重新访问您的照片库。不…

智能供应链中的预测算法:理论与实践

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 智能供应链已经成…

制作属于你的视觉小说,ComfyUI工作流#N3期AIGC训练营

什么是视觉小说? Visual Novel 最初这种形式被称为“有声小说” 视觉小说是一种源自日本的电子游戏类型,它以图像和文本为主要表现形式,通常包含大量的对话和故事情节。 (大量对话) 在视觉小说中,玩家可以通…

AJAX入门Day01笔记

Day01_Ajax入门 知识点自测 如下对象取值的方式哪个正确? let obj {name: 黑马 }A: obj.a B: obj()a 答案 A选项正确 哪个赋值会让浏览器解析成标签显示? let ul document.querySelector(#ul) let str <span>我是span标签</span>A: ul.innerText str B: ul…

HTML+CSS+JavaScript实战(一个简易的视频播放器)

效果如下&#xff1a; 思路很常规&#xff0c;无需注释即可看懂&#xff08;其实是懒得敲 bushi&#xff09; 没有注释也能跑&#xff0c;so直接上源码~ 感谢 夏柔站长 提供的免费API index.html <!DOCTYPE html> <html lang"en"> <head><meta …

UE4动作游戏实例RPG Action解析三:实现效果,三连击Combo,射线检测,显示血条,火球术

一、三连Combo 实现武器三连击,要求: 1.下一段Combo可以随机选择, 2.在一定的时机才能再次检测输入 3. 等当前片段播放完才播放下一片段 1.1、蒙太奇设置 通过右键-新建蒙太奇片段,在蒙太奇里创建三个片段,并且移除相关连接,这样默认只会播放第一个片段 不同片段播…

一分钟搞懂什么是this指针(未涉及静态成员和函数)

前言 我们在学习类的过程中&#xff0c;一定听说过this指针&#xff0c;但是并不知道它跟谁相似&#xff0c;又有什么用途&#xff0c;所以接下来&#xff0c;让我们一起去学习this指针吧&#xff01; 一、this指针的引入 我们先来看下面两段代码&#xff0c;它们输出的是什么&…

Rust实战教程:构建您的第一个应用

大家好&#xff01;我是lincyang。 今天&#xff0c;我们将一起动手实践&#xff0c;通过构建一个简单的Rust应用来深入理解这门语言。 我们的项目是一个命令行文本文件分析器&#xff0c;它不仅能读取和显示文件内容&#xff0c;还会提供一些基础的文本分析&#xff0c;如计算…

C# Onnx 轻量实时的M-LSD直线检测

目录 介绍 效果 效果1 效果2 效果3 效果4 模型信息 项目 代码 下载 其他 介绍 github地址&#xff1a;https://github.com/navervision/mlsd M-LSD: Towards Light-weight and Real-time Line Segment Detection Official Tensorflow implementation of "M-…