# 协议

# TCP/IP

TCP/IP 协议实际上是一系列网络通信协议的统称,其中 TCP、IP 是最核心的两个协议,其他的协议还有 UDP、ICMP、ARP 等,共同构成了一个复杂但是分工明确的协议栈。
这个协议有四层,应用层(HTTP)、传输层(TCP/UDP)、网络层(IP)、链路层(MAC)。

# 协议相关

  1. IP(Internet Protocol)协议,主要是用来解决寻址和路由的问题,以及如何在两点之间如何传输数据包。

IP 协议使用IP 地址来定位互联网中的每一台设备。

TIP

现在使用的 IP 协议版本大多数是 IPv4,例如"192.168.0.1",总共有 2^32 个,大约 42 亿个地址,现在又出现了 IPv6,总共有 2^128 个地址。

  1. TCP(Transmission Control Protocol),传输控制协议。位于 IP 协议之上,基于 IP 协议提供可靠、字节流形式的通信,是 HTTP 协议得以实现的基础。TCP 协议两端可以如同操作文件一样访问传输的数据,就像在读取密闭管道里的流动字节。
  • 可靠是保证数据不丢失。
  • 字节流是保证数据的完整性。
  1. HTTP 协议是传输协议,不关心寻址、路由、数据完整性等传输细节,这些工作都是交给网络中的 TCP/IP 来处理。

# DNS

应用层
在 TCP/IP 协议中,使用 IP 地址来标识设备,数字形式的地址对于计算机来说非常方便,但是对于人而言就不是那么方便。
DNS(Domain Name System)系统就是为了解决这个问题。用有意义的名字来代替 IP 地址。在 DNS 中,域名(Domain Name)又称为主机名(Host)。
域名使用"."分割成多个单词,级别从左到右逐渐升高,最右边称为顶级域名,比如comcndeugov等。

想要通过域名访问网站,必须要将域名转换到对应的 IP 地址,这就是域名解析。

# URI/URL

通过域名和 IP 地址,只是能够确保我们能够找到服务器,但是服务器上还有很多资源,服务器不知道接收到的请求具体想访问那一个资源。

URI(Uniform Resource Identity),统一资源标识符,就是用来标记互联网上的资源。

URL(Uniform Resource Location),统一资源定位符,是 URI 的常用表现形式。URL 通常由三部分组成,协议名称、主机名、路径。

  • 协议名,访问当前资源使用的协议,比如HTTPHTTPS
  • 主机名,可以是域名或者 IP 地址。
  • 路径,资源在主机上的位置。

# HTTPS

运行在 SSL/TLS 上的 HTTP。SSL/TLS,负责加密通信的安全协议

SSL(Secure Socket Layer),网景公司发明,发展到 3.0 时被标准化,改名为 TLS(Transport Layer Security)。

# 代理

代理是 HTTP 协议中,请求/应答中的一个环节,作为中转站。可以转发客户端的请求,也可以转发服务端的响应(既是 web 服务器,又是 web 客户端)。代理服务器需要用 Via 标明代理的身份。

"Via: proxy1,proxy2",表示请求/响应,先经过了 proxy1 的代理,然后经过 proxy2 的代理,到了接收方。

via: http/1.1 xxx.com, http/1.1 yyy.com
# 协议/版本号 节点名 节点注释(可选)
# HTTP协议的时候可以省略,其他(HTTPS、FTP等)不能省略

通过 TRACE 请求,可以跟踪代理链传输的请求报文。 Max-Forward,设置最多的转发次数,为 0 时,接收者会直接返回 TRACE 报文。

# 1、常见代理

  • 匿名代理,完全隐匿被代理的服务器,外界看到的只是代理服务器。
  • 透明代理,传输过程中透明开放,外界知道代理,也知道客户端。
  • 正向代理,靠近客户端,代表客户端向服务器发起请求(VPN)
  • 反向代理,靠近服务器,代表服务器想客户端发起请求(NGINX 配置跨域)

# 2、代理作用

  • 负载均衡,把访问均匀的分散到多台机器,实现访问集群化。
  • 内容缓存,CDN 相关
  • 安全防护,隐藏 IP,使用 WAF(?)等地域网络攻击,以及过载
  • 数据处理,拦截数据,进行压缩、加密,或是按照一定策略修改请求和响应。
  • 健康检查,某个后端服务器出现问题的时候,及时踢出集群。
  • 过滤网站,限制内网请求等。
  • 转码器,修改响应数据柱体等。GIF --> JPG,文本压缩。

# 3、如何设置代理

  • 修改客户端,浏览器设置代理。
  • 修改网络,路由器或其他中间设备进行代理。
  • 修改 DNS,手动配置 host。
  • 修改服务器,重定向。

# 网关(?)

代理连接的是两个或多个使用相同协议的应用程序。网关连接的则是两个或多个使用不同协议的端点网关扮演了协议转换的角色。又称协议转换器。

# ARP - Address Resolution Protocol

属于数据链路层,通过解析网络层地址来找寻数据链路层地址的网络传输协议。

TIP

DNS 是将域名解析为 IP 地址,ARP 是通过 IP 等信息,解析用户的 MAC 地址。
IP 是为了解决网络与网络之间的通信,MAC 地址则是为了找到相同子网下的目标设备。

# 1、工作流程

  • 检查 ARP 缓存
  • 发送 ARP 请求
  • 添加 ARP 表项,收到方添加
  • 发送 ARP 应答
  • 添加 ARP 表项,发送方添加