应用层协议

HTTP

HTTP:超文本传输协议,并且HTTP是无状态的(不需要维护客户端状态 ),使用TCP建立连接,客户发起一个与服务器的TCP连接(建立套接字) ,端口号为80;HTTP/1.1 默认使用持久连接以及流水线请求方式。

客户/服务器模式:

  • 客户:请求、接收和显示Web对象的浏览器
  • 服务器:对请求进行响应,发送对象的Web服务器

请求报文:

image-20230406105418268

请求方式:

  • GET:发送一个请求来取得服务器上的某一资源。
  • POST:向 url 指定的资源提交数据或附加新的数据。
  • HEAD:只请求页面的首部。
  • PUT:数据发送到服务器以创建或更新资源,侧重于创建数据,对应insert操作。
  • DELETE:删除服务器上的某资源。

响应报文:

image-20230406105525998

响应状态码:

  • 1XX:表示【临时响应】并需要请求者继续执行操作的状态代码
  • 2XX:代表请求已成功被服务器接收、理解、并接受。
    • 200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
    • 201(已创建)请求成功并且服务器创建了新的资源。
    • 202(已接受)服务器已接受请求,但尚未处理。
    • 203(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。
    • 204(无内容)服务器成功处理了请求,但没有返回任何内容。
    • 205(重置内容)服务器成功处理了请求,但没有返回任何内容。
    • 206(部分内容)服务器成功处理了部分 GET 请求。
  • 3XX:表示要完成请求,需要进一步操作如:重定向
    • 300(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
    • 301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    • 302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    • 303(查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    • 304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
    • 305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
    • 307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
  • 4XX:请求出错
    • 400(错误请求)表示客户端请求的语法错误,服务器无法理解,例如 url 含有非法字符、json 格式有问题。
    • 401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
    • 402表示保留,将来使用。
    • 403(禁止)表示服务器理解请求客户端的请求,但是拒绝请求。
    • 404(未找到)服务器无法根据客户端的请求找到资源(网页)。
    • 405(方法禁用)禁用请求中指定的方法。
    • 406(不接受)无法使用请求的内容特性响应请求的网页。
    • 407(需要代理授权)此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
    • 408(请求超时)服务器等候请求时发生超时。
    • 409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
    • 410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。
  • 5XX:服务器本身的错误
    • 500(服务器内部错误)服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
    • 501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
    • 502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
    • 503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
    • 504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    • 505(HTTP 版本不受支持)服务器不支持请求中所用的 HTTP 版本。

Cookies

大多数主要的门户网站使用cookies,HTTP cookies就是服务器端发送给浏览器端的一小部分数据,浏览器接收到这个数据之后,可以存起来自己用,也可以在后续发送到server端进行一些数据的校验。

  • 交互流程:

image-20230407094449748

web缓存

浏览器将所有的HTTP请求发给缓存,通常缓存是由ISP安装(大学、公司、居民区ISP)

  • 在缓存中的对象:缓存直接返回对象
  • 如对象不在缓存,缓存请求原始服务器,然后再将对象返回给客户端

目的:

  • 降低客户端的请求响应时间
  • 可以大大减少一个机构内部网络与Internent接入链路上的流量
  • 互联网大量采用了缓存:可以使较弱的ICP也能够有效提供内容

FTP

FTP:文件传输协议,向远程主机上传输文件或从远程主机接收文件。

image-20230331095433251

  • ftp服务器:端口号为21
  • ftp客户端:发起传输的一方

相关状态码:

  • 331 Username OK, password required
  • 125 data connection already open;transfer starting
  • 425 Can’t open data connection
  • 452 Error writingfile

客户端与服务器建立了两条连接,一个是控制连接,另一个是数据连接。

SMTP

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

image-20230331103143857

3个主要组成部分:

  • 用户代理:又名“邮件阅读器”,用于撰写、编辑和阅读邮件例如Outlook等
  • 邮件服务器:邮箱中管理和维护发送给用户的邮件
  • 简单邮件传输协议:SMTP使用持久连接,使用TCP在客户端和服务器之间传送报文,端口号为25。

DNS

域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。

需要解决的问题:

  1. 如何命名设备

    用有意义的字符串:好记,便于人类用使用,解决一个平面命名的重名问题:层次化命名

  2. 如何完成名字到IP地址的转换

    分布式的数据库维护和响应名字查询,维护域名-IP地址(其它)的映射关系。

  3. 如何维护

    • 在上级域的名字服务器中增加两条记录,指向这个新增
      的子域的域名和域名服务器的地址
    • 在新增子域的名字服务器上运行名字服务器,负责本域
      的名字解析: 名字->IP地址

解析过程:

www.baidu.com 这个域名为例

  • 一开始,域名解析请求先会检查本机的 hosts 文件,查看是否有该域名对应的 IP;

  • 如果没有的话,就请求 Local DNS 是否有域名解析结果的缓存,如果有就返回标识是从非权威 DNS 返回的结果;

  • 如果没有就开始 DNS 的迭代查询。先请求根 DNS,根 DNS 返回顶级 DNS(.com)的地址;再请求.com 顶级 DNS 得到 baidu.com 的域名服务器地址;再从 baidu.com 的域名服务器中查询到 www.baidu.com 对应的 IP 地址,返回这个 IP 地址的同时标记这个结果是来自于权威 DNS 的结果,同时写入 Local DNS 的解析结果缓存,这样下一次的解析同一个域名就不需要做 DNS 的迭代查询了。

CDN

前言

随着互联网的发展,视频流量占据着互联网大部分的带宽。

挑战:服务器如何通过网络向上百万用户同时流化视频内容(上百万视频内容)?

单个超级服务器无法提供服务:

  • 服务器到客户端路径上跳数较多,瓶颈链路的带宽小导致停顿
  • “二八规律”决定了网络同时充斥着同一个视频的多个拷贝,效率低(付费高、带宽浪费、效果差)
  • 单点故障点,性能瓶颈
  • 周边网络的拥塞

解决方案:通过CDN,全网部署缓存节点,存储服务内容,就近为用户提供服务,提高用户体验

概述

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

image-20230409100855048