• 《网络协议》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

    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 的使用

    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),实时传输协议

    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

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

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

  • 相关阅读:
    【机器学习】逻辑回归logit与softmax
    SpringBoot+SpringCloud面试总结都在这里
    Distribution (mathematics)
    uniapp 中 vuex 的使用
    WAF绕过-漏洞发现之代理池指纹探针 47
    【技巧】PDF文件如何编辑?
    计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    53页现代智慧社区数据物联解决方案
    使用数据增强从头开始训练卷积神经网络(CNN)
    服务间的负载均衡-Robbin
  • 原文地址:https://blog.csdn.net/KeepPromise/article/details/134314879