目录
- [WWW with Uniform Resource Locators (URL)](#WWW with Uniform Resource Locators (URL))
- [HTTP and Web Service](#HTTP and Web Service)
- [HyperText Transfer Protocol (HTTP)](#HyperText Transfer Protocol (HTTP))
-
- 主要内容:
- 单一TCP连接:
- [HTTP TCP Connections](#HTTP TCP Connections)
- [HTTP Messages](#HTTP Messages)
-
- HTTP消息的结构:
- [HTTP Request Message](#HTTP Request Message)
- [HTTP Response Message](#HTTP Response Message)
- [HTTP Proxies & Caching](#HTTP Proxies & Caching)
- [HTTP Connections: Two Types](#HTTP Connections: Two Types)
-
- [非持久HTTP(Non-persistent HTTP):](#非持久HTTP(Non-persistent HTTP):)
- [持久HTTP(Persistent HTTP):](#持久HTTP(Persistent HTTP):)
- HTTPS (HTTP over SSL/TLS, RFC 2818)
- [HTTPS Connection Initiation](#HTTPS Connection Initiation)
- HTTP/2
- [HTTP/2 to HTTP/3](#HTTP/2 to HTTP/3)
- [An Evolving HTTP View of TLS](#An Evolving HTTP View of TLS)
-
- [QUIC: Connection Establishment](#QUIC: Connection Establishment)
- Cookies使用的四个组成部分
- Cookies的用途:
- [Common Gateway Interface (CGI)](#Common Gateway Interface (CGI))
- [Apache Web Server](#Apache Web Server)
- [Content Delivery Network (CDN)](#Content Delivery Network (CDN))
- [Dynamic Host Configuration Protocol (DHCP)](#Dynamic Host Configuration Protocol (DHCP))
- [Network Time Protocol (NTP)](#Network Time Protocol (NTP))
- [Network Address Translator (NAT)](#Network Address Translator (NAT))
- [Port Address Translation (PAT)](#Port Address Translation (PAT))
WWW with Uniform Resource Locators (URL)
主要内容:
万维网(WWW)简介:
首个WWW浏览器由Tim Berners-Lee在1990年开发。
WWW的流行推动了互联网的指数级增长。
WWW中的信息通常以HTML文件(网页)的形式提供。
URL(统一资源定位符)结构:
URL用来标识Web服务器上的任何文档。
URL组成:
协议名称(如HTTP、FTP、RTSP等)。
服务器域名或IP地址(如 www.example.com)。
资源路径(如 /example/index.html)。
HTTP and Web Service
主要内容:
HTTP协议:一种在Web服务中分发信息的应用层协议。
HTTP的工作模式:
- 客户端/服务器架构:浏览器作为客户端向服务器发送请求。
- 无状态:服务器不记录用户的历史请求。
分类:
非持久HTTP:每个请求都建立一个TCP连接,响应后立即关闭。
持久HTTP:多个请求共享一个TCP连接,效率更高。
相关技术:
- HTTPS:HTTP的安全版本,数据加密传输。
- HTTP/2和HTTP/3:优化传输速度的新版本。
- Web cookie:用于存储用户的会话信息。
- CDN(内容分发网络):加速内容分发的网络架构。
HyperText Transfer Protocol (HTTP)
主要内容:
HTTP协议:
HTTP是一种分发Web信息的应用层协议,工作在TCP/IP协议之上。
工作流程:
浏览器作为客户端向服务器发送请求。
服务器在TCP端口(默认80)监听连接请求。
服务器发送响应内容(如HTML文件)。
无状态:
每个请求独立,服务器不存储会话信息。
单一TCP连接:
HTTP协议使用单个TCP连接来传输请求和响应。
浏览器可以使用嵌套对象(如图片、CSS文件)实现网页加载。
HTTP TCP Connections
主要内容:
TCP连接的建立:
客户端发起TCP连接到服务器的默认端口(80)。
建立TCP连接后,客户端通过HTTP发送请求。
HTTP的请求和响应:
客户端发送HTTP请求(包含请求的资源和方法,如GET、POST)。
服务器根据请求提供HTTP响应。
响应结束后,可能关闭TCP连接。
HTTP持久连接:
为提升效率,HTTP/1.1默认开启持久连接(连接保持活跃以处理后续请求)。
HTTP Messages
HTTP消息的结构:
- 起始行(Start Line):
请求消息中为请求行(Request Line),如:GET /index.html HTTP/1.1
响应消息中为状态行(Status Line),如:HTTP/1.1 200 OK
头部字段(Optional Headers):每个头部由"头部名: 值"组成,用于传递元信息。 - 空行(Blank Line):用于分隔头部和消息体。
- 消息体(Data Body):包含请求或响应的实际数据(如HTML内容)。
HTTP Request Message
GET:从服务器获取资源。
HEAD:仅获取资源的元信息。
POST:向服务器提交数据(如表单内容)。
PUT:向服务器上传资源。
DELETE:删除服务器上的资源。
HTTP Response Message
1xx:信息性响应
2xx:成功(如200 OK)
3xx:重定向(如301 Moved Permanently)
4xx:客户端错误(如404 Not Found)
5xx:服务器错误(如500 Internal Server Error)
HTTP Proxies & Caching
- 代理服务器(Proxy Server):
充当客户端和服务器之间的中间层。- 用途:
屏蔽访问限制(如防火墙)。
提供内容过滤。
- 用途:
- 缓存机制(Caching):
存储常访问的网页以减少延迟。- 优点:
提升访问速度。
减少重复流量。
- 优点:
HTTP Connections: Two Types
非持久HTTP(Non-persistent HTTP):
- 每个请求创建一个独立的TCP连接。
- 传输完成后关闭连接。缺点:连接开销大,延迟较高
持久HTTP(Persistent HTTP):
- 在单个TCP连接上处理多个请求。
- 提升了传输效率,减少了连接开销。
- 默认方式为HTTP/1.1。
HTTPS (HTTP over SSL/TLS, RFC 2818)
HTTPS简介:
HTTPS 是 HTTP 和 SSL/TLS 的结合,用于加密通信。
使用443端口,而不是HTTP的80端口。
加密内容:
请求的URL、网页内容、浏览器内容、Cookies等。
优点:
提供数据加密、完整性验证、防止篡改。
HTTPS Connection Initiation
HTTPS连接建立过程:
客户端通过TLS协议与服务器建立安全会话。
包括握手、加密密钥协商等步骤。
三个层级的连接意识:
HTTP层:发送请求到TLS层。
TLS层:与服务器建立安全会话。
TCP层:传输加密数据。
HTTP/2
目标:
减少多对象HTTP请求的延迟。
HTTP/1.1问题:
使用FIFO(先进先出)模式,导致队头阻塞(HOL Blocking)。
多个请求按顺序处理,导致小对象传输被大对象阻塞。
HTTP/2解决方案:
数据被分为帧,每个帧独立传输。
帧传输交错进行,无需等待前一个完成。
多路复用(Multiplexing)和帧分片(Framing)。
特点:
在单一TCP连接中支持多流(Streams)。
二进制帧分片,代替HTTP/1.1的文本分片。
引入流量控制、优先级设置和头部压缩(HPACK)。
优点:
减少延迟,提高网络利用率。
HTTP/2 to HTTP/3
目标:
进一步减少HTTP请求的延迟。
使用QUIC协议解决HTTP/2的潜在问题。
QUIC特性:
可靠性:与TCP类似,支持丢包恢复、拥塞控制。
流并行:每个流独立,无队头阻塞。
安全性:集成TLS 1.3,通信更安全。
优化性能:减少了握手次数,通过一次握手完成连接建立
应用场景:
被Google、Facebook等广泛应用于提高HTTP性能
An Evolving HTTP View of TLS
HTTP/1.1:通过TCP层实现,TLS是独立层。
HTTP/2:通过TCP实现多路复用,并引入更优化的TLS整合。
HTTP/3:基于UDP的QUIC协议,进一步优化了安全性和性能。
QUIC: Connection Establishment
- 连接建立过程:
使用单次握手完成加密与可靠性协商。
将TCP与TLS的功能合并,减少了延迟。
- 特点:
提供拥塞控制、流量控制等功能
Cookies使用的四个组成部分
- Cookie Header:服务端通过HTTP响应头返回Cookie。
- Cookie值:唯一标识符,用于区分不同用户。
- 客户端存储:Cookie保存在浏览器中。
- 服务端数据库:服务器通过Cookie与其数据库中的用户数据关联。
Cookies的用途:
授权:用户登录验证。
购物车:保存用户购物车商品信息。
推荐:基于用户历史记录推荐内容。
会话管理:维持用户会话状态。
优势与限制
优势:实现无状态协议上的状态管理。
限制:存储容量有限,隐私和安全问题需要额外关注。
Common Gateway Interface (CGI)
CGI技术:
用于创建动态网页,通过客户端和服务器间的双向通信实现功能(如电子商务网站、在线投票)。
工作原理:
HTML表单收集用户输入。
用户提交表单后,服务器调用CGI脚本来处理数据。
结果通过标准输出返回到客户端。
文件组成:
HTML表单文件。
CGI脚本:通常使用PHP、Perl等语言编写。
CGI Operations
工作流程:
客户端下载HTML表单并填写数据。
数据提交到服务器,服务器调用CGI脚本处理。
服务器返回生成的动态内容。
优势:
动态生成内容,提升用户体验。
可支持多种语言和技术,灵活性强。
局限性:
性能受限于每次请求启动新进程的开销。
Apache Web Server
Apache简介:
世界上最受欢迎的Web服务器。
开源,支持多个操作系统(如Linux和Solaris)。
特点:
稳定性高:一个子进程崩溃不会影响其他进程。
可扩展性强:支持同时处理多个客户端请求。
应用场景:
静态内容和动态内容的托管。
支持模块化扩展(如安全模块、性能优化模块)。
Content Delivery Network (CDN)
优势:
减轻主服务器负载:缓存内容分布到多个节点,减少主服务器直接处理的请求数量。
缩短延迟:CDN节点靠近用户,降低数据传输延迟。
分布式网络:CDN通过多个节点分发内容,提高可靠性和速度
工作原理:
用户请求会被路由到最近的CDN节点。
如果CDN节点已有缓存内容,则直接返回;否则从源服务器获取内容并缓存。
典型应用:
视频流媒体。
软件更新。
高流量的电商网站。
用户请求的路径:
客户端通过DNS解析请求域名。
DNS服务器返回最优CDN节点地址。
客户端向CDN节点发起内容请求。
示例过程:
用户访问NetCinema内容。
本地DNS解析并重定向到CDN节点。
CDN节点处理请求并返回内容。
优势:
动态负载均衡。
优化网络流量分布。
Dynamic Host Configuration Protocol (DHCP)
用于动态配置TCP/IP主机,自动分配IP地址、网关、DNS等参数。
使用UDP端口67(服务器)和68(客户端)进行通信。
DHCP的目的:
动态分配IP地址。
提供网络配置(如网关、DNS等)。
工作原理:
客户端向DHCP服务器发送请求。
DHCP服务器分配地址并返回配置。
特点:
减少网络管理员的配置工作。
自动化设备接入网络的流程。
DHCP Client-Server Scenario
DHCP客户端与服务器的交互:
客户端发送广播请求(DHCPDISCOVER)来查找可用的DHCP服务器。
服务器根据可用的IP地址池,提供地址并发送DHCP报文响应。
多客户端场景:
DHCP服务器通常在局域网内运行,动态为每个客户端分配唯一的IP地址。
实际应用:
企业网络使用DHCP服务器管理大规模设备的网络配置。
家庭路由器内置DHCP功能,为连接设备自动分配地址。
DHCP Network Parameters Assignment 网络参数分配
DHCP服务器存储每个客户端的网络配置参数。
客户端可以根据MAC地址或子网地址获得固定的参数。
动态分配:
DHCP服务器根据地址池中的可用IP动态分配给客户端。
地址租约:每次租约到期后,客户端需要续约或请求新地址。
DHCP优点:
动态分配减少IP冲突的风险。
支持跨子网的IP管理。
DHCP Operations
发现阶段(Discovery):
客户端通过广播发送DHCPDISCOVER消息寻找DHCP服务器。
服务器收到请求后返回DHCPOFFER消息,提供一个可用IP地址。
服务器响应:
多个DHCP服务器可能响应请求,客户端选择合适的服务器。
消息类型:
DHCPDISCOVER:客户端广播寻找服务器。
DHCPOFFER:服务器提供IP地址及配置参数。
选择服务器:
如果客户端接收到多个DHCPOFFER消息,会根据配置选择一个服务器。
通过发送DHCPREQUEST消息向选定的服务器确认。
广播确认:
确认消息包含客户端选择的IP地址及相关配置。
其他未被选择的服务器释放分配的IP。
实际应用:
确保同一网络中,所有设备获得唯一IP地址。
地址确认(Acknowledgment):
选定的DHCP服务器发送DHCPACK消息,包含最终确认的网络参数。
客户端配置网络后可正常使用分配的IP地址。
租约管理:
DHCPACK中包含租约期限,客户端在租约到期前需续约。
租约期满未续约时,IP地址将回收到地址池。
故障恢复:
若服务器无法提供配置,客户端将进入重试状态。
租约更新:
客户端在租约过半时开始发送DHCPREQUEST请求更新租约。
服务器通过DHCPACK消息延长租约期限。
租约到期:
如果未能成功更新租约,客户端将释放IP地址。
客户端重新发送DHCPDISCOVER消息,获取新IP。
租约管理的重要性:
确保地址池的有效利用。
动态适应网络拓扑的变化。
DHCP Message Format DHCP报文的结构:
报文包括多个字段,用于客户端和服务器之间的配置和通信。
关键字段:客户端和服务器的IP地址、租约时长、硬件地址、选项字段等。
字段描述:
Opcode:指定消息类型(1表示请求,2表示回复)。用于区分请求(1)和回复(2)。
Hardware Type:硬件地址的类型(1表示以太网MAC地址)。
Hardware Address Length:硬件地址的长度(通常是6字节的MAC地址)。
Hop Count:中继跳数,用于中继代理记录跳数。
Transaction ID:用于唯一标识客户端请求,与响应关联。
Number of Seconds:从客户端启动DHCP进程起的时间(秒)。
Flags:指示消息的类型,如广播标志位。
Client IP Address:客户端当前使用的IP地址(如在租约更新期间)。
Your IP Address:服务器为客户端分配的新IP地址。
Server IP Address:提供IP地址的DHCP服务器地址。
Relay Agent IP Address:中继代理的IP地址。
Client Hardware Address:客户端的物理地址(MAC地址)。
Server Hostname:DHCP服务器的主机名,用于标识。
Boot Filename:用于无盘工作站的启动文件名。
作用:
报文结构的标准化确保不同厂商的设备兼容。
Network Time Protocol (NTP)
NTP是一种应用层协议,使用UDP或TCP的端口123。
提供网络中的时间同步服务。
用途:
网络设计和管理:确保设备间时间一致性。
安全性:日志时间戳的准确性。
诊断:网络事件发生的精确时间。
实现目标:
时间同步精度通常在10毫秒以内。
时间分层结构:
通过分层(Stratum)级别,构建分布式时间同步网络。
分层结构:
Stratum 0:高精度时钟设备(如原子钟)。
Stratum 1:直接连接到Stratum 0的时间服务器。
Stratum 2及以下:通过层层同步传递时间。
全球部署:
超过300个Stratum 1服务器,至少15万个NTP节点运行于互联网中。
工作原理:
各服务器与高一层服务器同步,形成时间同步树。
运行模式:
多播模式:NTP服务器定期广播时间信息,供客户端同步。
客户端轮询模式:客户端主动发送请求获取时间。
同步方式:
通过ntpdate命令手动同步时间。
或通过ntpd守护进程持续自动同步。
使用场景:
广泛用于需要精确时间的系统,如金融系统或科研实验。
Network Address Translator (NAT)
网络地址转换器(NAT)用于将一组IP地址(通常是私有地址)映射到另一组IP地址(通常是公共地址)。
私有地址范围由IANA(互联网号码分配局)分配,推荐使用:
Class A: 10.0.0.0/8
Class B: 172.16.0.0/12
Class C: 192.168.0.0/16
NAT的用途:
重用IP地址:允许大量主机通过少量公共IP访问互联网。
提高安全性:内部网络对外部隐身。
私有IP地址特性:
无法在全球范围内路由。
需要与NAT结合使用,以连接到互联网
How NAT Works
网络类型:
全球网络(外部网络):互联网。
私有网络(内部网络):组织内部网络。
NAT的工作原理:
在内部与外部网络之间翻译地址。
翻译包括地址映射与端口映射。
两种地址分配方式:
静态分配:预定义映射。
动态分配:根据需求动态选择。
NAT的三步操作:
- 绑定地址:将私有IP地址与外部地址绑定,并记录到NAT路由器表中。
- 地址查找与转换:
- 出站包:源地址转换为外部地址。
- 入站包:目标地址转换为内部地址。
- 解绑地址:会话结束后,释放绑定供其他连接使用。
Port Address Translation (PAT)
扩展了基本 NAT 的概念,将端口号和传输协议(如 TCP 和 UDP)映射到一个公共 IP 地址。
允许多个主机共享单个外部 IP 地址(常用于家庭或小型企业网络)。
PAT 的特点:
通过翻译源 IP 地址、源端口号以及传输层校验和,确保出站包唯一标识。
允许同时为多个会话分配不同的端口号,从而解决 IP 地址短缺问题。
工作流程:
- PAT 通过维护映射表记录每个内部私有 IP 地址与端口的对应关系。
- 出站包被转换为公共 IP 地址和动态分配的端口号。
- 入站包根据表中记录反向翻译到正确的内部地址和端口号。
优势:
支持高效地址使用。
增强内部网络的安全性(外部无法直接访问私有地址)。