跳转至

业务层

网络架构模式

主机A的某个进程和主机B上的另一个进程进行通信

  • P2P(Peer-to-Peer)不区分客户端和服务端,两台主机是对等关系
  • C/S(Client/Server)区分为客户端和服务端,客户端是主机上的程序
  • B/S(Browser/Server)区分为客户端端和服务端,客户端是浏览器

URI

Uniform Resource Identifier 统一资源标识符,是一种抽象的定义,只要能唯一标识资源的都可以叫URI

  • URL(Uniform Resource Locator) 统一资源定位符,通过地址定位标识资源,最常用的就是网址
  • URN(Uniform Resource Name) 统一资源名称,通过名称定位标识资源,比如书籍的isbn号

Resources 资源,就是网络上的一个实体,可以有不同的表现形式,称之为表现层

它可以是 TXT、XML、JSON、HTML 等文本、PNG、JPG 等图片、音频、视频、服务等等

可以在请求头中使用 AcceptContent-Type 字段指定表现形式以及版本号等

URL组成:scheme:[subscheme]://[username:password@]host:port/path?query#fragment

  • scheme 协议,比如:http, https
  • subscheme 子协议,用于区分数据库,比如:
  • host 域名 或 IP

DNS

Domain Name System 域名系统,是域名与IP地址相互映射的一个分布式数据库,因为IP地址不方便记忆,使用域名来映射它

域名地址有不同的记录类型,比如:A、CNAME、MX等,每种类型可以包含多条记录。

浏览器通过URL解析出域名后

  • 首先会查询本地DNS缓存(/etc/hosts)是否有该域名的地址记录

    本地DNS缓存超过生命周期后才会主动更新

  • 如果没有就会去查询本地域名服务器(或者叫DNS服务器)

    本地域名服务器的IP地址通常由DHCP自动分配,或者在拨号时从PPP服务器中自动获取,也可以用户手动指定

    本地域名服务器部署在ISP的某个数据中心,到达这里也会先查询本地缓存

  • 本地域名服务器如果也没有,则会进行递归查询:根域名服务器、顶级域名服务器、权威域名服务器

    权威域名服务器根据访问者所处的不同地区(如华北、华南、东北等)、不同服务商(如电信、移动、联通等)等因素智能选择出某种记录类型对应的最合适的记录,返回给客户端

如果域名服务器挂了,或域名服务器的 IP 填错了,或请求被 GFW 拦截了,最终都会没有响应然后报错

基于 UDP 的 DNS 分级查询意味着每一级都有可能受到中间人攻击的威胁,比如域名劫持、域名污染/欺骗

可以使用安全的DNS协议来解决,比如 DoH(DNS over HTTPS

CDN

Content Distribution Network 内容分发网络

内容分发,指的就是获取源站资源的过程,主要有两种方式:

  • 主动分发

将内容从源站或者其他资源库推送到用户边缘的各个CDN缓存节点上,特别常用的资源甚至会直接缓存到手机APP的存储空间或者浏览器的localStorage中。

  • 被动回源

由用户访问所触发全自动、双向透明的资源缓存过程,如果不是自建CDN,而是购买阿里云、腾讯云的CDN服务的站点,多数采用的就是这种方式。

CDN最初是为了快速分发静态资源而设计的,而如今CDN所能做的事情已经远远不止于此,比如:安全防御、协议升级、状态缓存、修改资源、访问控制等等

仅从网络传输的角度看,一个互联网系统的传输速度取决于以下四点因素:

  1. 用户客户端接入网络运营商的链路所能提供的入口带宽
  2. 网站服务器接入网络运营商的链路所能提供的出口带宽
  3. 从网站到用户之间经过的不同运营商之间互联节点的带宽(一般来说两个运营商之间只有固定的若干个点是互通的,所有跨运营商之间的交互都要经过这些点)
  4. 从网站到用户之间的物理链路传输时延(爱打游戏的同学应该都清楚,延迟(Ping 值)比带宽更重要)

以上四个网络问题,除了第一个只能通过换一个更好的宽带才能解决之外,其余三个都能通过内容分发网络来显著改善。

常见应用

  • 文件传输 FTP
  • 电子邮件 E-mail
  • 远程登录 Telnet
  • 万维网 WWW