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

附加知识点

  • 网络协议的三要素:语法、语义、同步(有迹可循)