《网络协议》07. 其他协议
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
人生自是有情痴,此恨不关风与月。
——《玉楼春》(宋)欧阳修
相关文章:

《网络协议》07. 其他协议
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,…...

高压放大器设计要求有哪些内容
设计高压放大器时,需要考虑一系列要求以确保其性能和可靠性。以下是设计高压放大器时的一些重要要求。 输入输出电压范围:高压放大器应具备足够的输入和输出电压范围,以适应特定应用的需求。这包括设计合适的电源供应和电路配置,以…...
1700亿烧光,利润暴跌78%!外媒:中芯国际不是麒麟9000S的代工厂
作为芯片代工领域的领导者,台积电在全球半导体市场上占据着重要的地位。然而,由于美国对华为的制裁,台积电关闭了对华为麒麟芯片的代工,这也引发了外界对于芯片代工模式的讨论。与此同时,中芯国际作为大陆规模最大、技…...

简单理解路由重分发(用两路由器来理解)
相关命令: default-information originate //*重分发默认路由 redistribute rip subnets //*重分发rip redistribute ospf 1 metric 3 //*重分发ospf(其中:1是ospf进程id 3是跳数) redistribute sta…...

什么是等保测评?
随着近几年随着网络技术的发展,互联网应用的普及和丰富,互联网安全问题也日益严重,利用信息技术进行的高科技犯罪事件呈现增长态势。从2004年度CNCERT的信息网络安全工作报告中我们看到,信息网络安全事故在逐年上升,20…...
21、Flink 的table API与DataStream API 集成(1)- 介绍及入门示例、集成说明
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

(免费领源码)Java#SpringBoot#mysql高校实验室资产管理系统85189-计算机毕业设计项目选题推荐
摘 要 随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使人们的生活与工作方式发生了很大的改观。本课题研究的高校实验室资产管理系统,主要功能模块包括后台首页,轮播图,公告管理,资源管理…...

高效能人士的七个习惯
今天小编给大家推荐最近读的一本书,史蒂芬柯维的《高效能人士的七个习惯》,分别是积极主动、以始为终、要事第一、双赢思维、知己解彼、综合高效及不断更新。 一、个人领域:从依赖到独立 习惯一:积极主动——个人愿景的原则付诸行…...

【前端】使用json-server报错
当我们使用json-server模仿后端接口时需要运行json-server --watch index.json这个命令生成增删改查接口但是可能会报这个错误,如图 这时我们运行 npm i json-server -g命令即可,然后再重新运行json-server --watch index.json就行了...

【Git企业开发】第七节.多人协作开发
文章目录 前言 一、多人协作开发 1.1 多人协作一 1.2 多人协作二 1.3 远程分支删除后,本地 git branch -a 依然能看到的解决办法 总结 前言 一、多人协作开发 1.1 多人协作一 目前,我们所完成的工作如下: 基本完成Git的所有本地库的相关操作࿰…...

行情分析——加密货币市场大盘走势(11.16)
大饼昨日突然回调诱多上涨到38000附近,现在又重新跌回到37500,现在仓位小的可以加仓入场,而已经有仓位的不要动即可。 空单策略:入场37500附近 止盈34000-32000 止损39000 以太今日可以入场空单2060附近即可 策略:入…...

ICCV 23丨3D-VisTA:用于 3D 视觉和文本对齐的预训练Transformer
来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2308.04352 开源代码:http://3d-vista.github.io 摘要: 3D视觉语言标定(3D-VL)是一个新兴领域,旨在将…...

SFP-10G-SR光模块指南
SFP-10G-SR通常是思科(Cisco)使用的型号名。是一种用于非常短距离应用的最低成本、最低功耗的10G SFP模块。本文汇总了初学者在第一阶段关于10G SFP SR模块的常见问题。 SFP-10G-SR模块是否支持GE? 10GBASE-SR模块本身是可以支持GE速度的&am…...

使用Java实现一个简单的贪吃蛇小游戏
一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。 然后,创建贪吃蛇游戏的Java项目命名为snake_game,并在这个项目里创建一个文件夹命名为images,将图片素材导入文件夹。 再在src文件下创建两个包࿰…...

智能运维监控告警6大优势
随着云计算和互联网的高速发展,大量应用需要横跨不同网络终端,并广泛接入第三方服务(如支付、登录、导航等),IT系统架构越来越复杂。 快速迭代的产品需求和良好的用户体验,需要IT运维管理者时刻保障核心业务稳定可用,…...
保姆级使用Vue-count-to
安装 npm install vue-count-to 直接使用 <template><div class"vue-count-to"><div class"count-to"><div><CountTo :startValstartVal :endValendVal :durationduration /></div><div><CountTo :startV…...
install YAPI MongoDB 备份mongo 安装yapi插件cross-request 笔记
登录容器 docker exec -it mongodb bash 登录mongo mongo -u root -p 123456 查看db show dbs 查看collection show collections 进入db use yapi 查看数据 db.<collection_name>.find() 带条件查看 db.<collection_name>.find({ <field>: <value>…...
无线WiFi安全渗透与攻防(N.4)WPA-hashcat渗透
WPA-hashcat渗透 WPA-hashcat渗透1.hashcat介绍2.渗透姿势1.查看网卡2.开启监听模式3.扫描wifi4.抓包保存5.进行冲突模式攻击6.重新连接wifi7.生成hccap文件8.破解WPA-hashcat渗透 严重声明:cpu加速都是幌子,aricrack-ng也用cpu,不然用爱跑的? 1.hashcat介绍 Hashcat系列…...

使用VSCode进行Python模块调试
使用VSCode进行Python模块调试 创建测试文件 创建文件test/a/b.py,且当前工作路径为test/ b.py文件内容: def cal(numa, numb):print(int(numa) int(numb))if __name__ "__main__":import sys# 判断系统参数长度是否为4且判断第2个参数是…...

【数据结构高阶】二叉搜索树
接下来我们来开始使用C来详细讲解数据结构的一些高阶的知识点 本期讲解的是二叉搜索树,对于初阶二叉树有所遗忘的同学可以看到这里: 【精选】【数据结构初阶】链式二叉树的解析及一些基本操作 讲解二叉搜索树主要是为了后面的map和set做铺垫ÿ…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动
飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...