Bo2SS

Bo2SS

9 应用层协议

课程内容#

概述#

网络应用程序的体系结构主要分为CS 结构P2P 结构

  • 前者是客户端(Client)/ 服务端(Server)结构,如微信、QQ、游戏。
  • 后者是端(Peer)到端结构,又叫对等体系结构,如迅雷、百度网盘。
    • 进程通信时,没有明确的 C/S,发起者即为客户端,提供服务者即为服务端。

应用程序服务要求包括可靠数据传输吞吐量定时(时效)和安全性。不同的应用对网络服务有不同的要求,如数据可否丢失、带宽需求、时间敏感性等,所以产生了不同的应用层协议和运输层协议:

image-20211004202318540

  • 应用层协议定义了交换报文类型、报文语法、字段语义以及发送、响应规则,类似网络协议的三要素(语法、语义、同步)。
  • 运输层协议
    • TCP:面向连接的服务,提供可靠的数据传输。
    • UDP:不提供必要服务的轻量级运输服务,不提供可靠的数据传输。
  • PS
    • socket 是应用程序与网络之间的接口,对于运输层的控制仅限于选择运输层协议、设定参数。
    • UDP 可以自己实现可靠的数据传输。

WEB 与 HTTP 协议#

WEB 术语:对象、超文本标记语言 HTML、统一资源定位符 URL、WEB 页面、WEB 浏览器、WEB 服务器(httpd、apache、tomcat)
HTTP:超文本传输协议

  • HTTP 行为:请求报文、响应报文
  • HTTP 特点
    • 不用担心数据丢失
    • 无状态协议,服务器不存储客户相关状态信息
    • HTTP 服务器总是处于打开状态,有一个固定的 IP
    • 使用 CS 结构
  • 非持续连接和持续连接,又名,短连接和长连接
    • HTTP 属于短连接,服务器响应了请求后会通知 TCP 断开连接,所以对于多个对象会重复地连接和断开。
    • HTTP 请求过程包含 TCP 三次握手,一般在第 3 次握手包含请求,直到接受对应文件。
  • 请求报文
    • image-20211004202326530
    • 请求方法:
      • GET-- 获取
      • POST-- 提交表单
      • HEAD-- 测试,看通不通,不需要获取所有数据
      • PUT-- 传数据到远端(PUT 是幂等的,但 POST 不是)
      • DELETE-- 删除远端数据
    • 首部字段名包含浏览器类型等等。
  • 响应报文
    • image-20211004202332272
    • 短语一般是状态码的描述。
    • 常见状态码及短语:
      • 200 OK
      • 301 Moved Permanently
      • 400 Bad Request
      • 404 Not Found
      • 505 HTTP Version Not Supported
  • 用户与服务器的交互 ——COOKIE
    • 请求和相应报文中都添加了 COOKIE 首部行
    • 在用户端由浏览器管理相应 COOKIE 文件
    • 在服务端维护一个数据库
    • image-20211004202337597
    • 一个从来没有请求过 jd 服务器的客户主机,在发起请求后,服务器会创建其 COOKIE,并返回给客户;
    • 等下次下下次再请求 jd 服务器的时候,服务器会根据 COOKIE 返回特定数据。
    • PS:
      • 服务器根据客户行为会生成一个人物画像,可以和 COOKIE 绑定。
      • 公司之间可能共享数据库。
  • WEB 缓存器🌟
    • 又名代理服务器,如 CDN。
    • 情景:海量用户访问某一个服务器的数据,流量过大肯定会导致服务器奔溃。
    • 优化过程:浏览器先访问 WEB 缓存器,如果里面没有想要的数据,则再往上游找数据,最后返回数据,并将数据存放在 WEB 缓存器里。
    • 优点:减少对客户请求的响应时间,减少了数据中心的通信量,改善应用性能。
    • PS:WEB 缓存器会定时向上游服务器请求更新数据。

HTTPS 协议#

HTTPS:具有安全性的 SSL 加密传输协议

HTTPS 在 HHTP 通信的中间过程添加 SSL/TLS(加密 / 解密)过程。

HTTPS 特点:

  • 它需要到 CA 申请证书,需要交费;
  • 它是具有安全性的 SSL 加密传输协议,而 HTTP 超文本传输协议,信息是明文传输;
  • 它与 HTTP 使用的是完全不同的连接方式,端口也不一样,前者是 443,后者是 80。

HTTP/2 协议#

新特性:连接复用。没有同步的限制,一次可以传输多条消息,而不用一来一回。

FTP 协议#

FTP:文件传输协议

用户连接远程服务器,给用户展示一个远程桌面文件夹,用户可以对其进行操作。

双连接——FTP 的 TCP 连接:

image-20211004202344951

  • 控制连接:21 端口,长连接;
  • 数据连接:20 端口,短连接。
  • 特点:适用于并发量不高的场景,可以简化业务实现。

PS:个人用户用的少,一般服务于局域网。

SMTP、POP3、IMAP 协议#

邮件相关,最早期的互联网业务

image-20211004202349411

先从用户 A 的代理,通过 SMTP 连接自己的邮箱服务器,再连线用户 B 的邮件服务器,最后到达用户 B 的代理。

  • 邮箱服务器会检查邮件内容是否合规;
  • SMTP 协议只负责推,最后一步是用户 B 基于其它协议主动请求拉取

PS:

  • 不是直接与用户主机通信
  • 底层是基于 TCP

DNS 协议#

将主机名 / 域名转换为 IP 地址;提供负载均衡服务

  1. 解析域名
  2. 负载均衡:同一个域名根据流量转换到不同的合适的 IP 地址,主要是用来分流。

集中式 DNS 存在的问题:

  • 单点故障:一个小问题会影响到全局(现在流行微服务,减少各种服务之间的耦合度)
  • 通信容量大
  • 距离远会导致时延高
  • 维护不易(目前银行也有这个问题,系统版本低,想迁移却难以迁移)

DNS 域名系统

  • 根 DNS 服务器,因特网上有 13 个,都不在中国
  • 顶级域 DNS 服务器,简称 TLD,如 com、cn
  • 权威 DNS 服务器,如腾讯等 DNS 服务提供商
  • 本地 DNS 服务器,可能有多个,如局域网、学校

DNS 解析过程:

image-20211004202355211

主机到本地 DNS 属于递归式,主机只发一次请求,只有本地 DNS 得到结果,才会返回。

本地 DNS 发起请求属于迭代式,返回失败就再次请求,可看图感受。

DNS 记录

  • Name:名称 / 主机 / 别名
  • Value:IP 地址 / 应答地址 / 目标地址
  • Type:记录的类型
  • TTL:域名 - IP 关系的有效时间,即本地缓存的时间

常见的类型有:

image-20211004202359867

可以尝试去自己的 DNS 服务平台里添加 DNS 记录~

PS:规范主机名的可读性稍弱,可参考DNS records——CloudFlare

附加知识点#

  • 网络协议的三要素:语法、语义、同步(有迹可循)
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。