当前位置: 首页 > news >正文

《网络协议》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的所有本地库的相关操作&#xff0…...

行情分析——加密货币市场大盘走势(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文件下创建两个包&#xff0…...

智能运维监控告警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&#xff0c;且当前工作路径为test/ b.py文件内容&#xff1a; def cal(numa, numb):print(int(numa) int(numb))if __name__ "__main__":import sys# 判断系统参数长度是否为4且判断第2个参数是…...

【数据结构高阶】二叉搜索树

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

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...