【计算机网络】HTTP,DHCP, NTP&NAT

目录

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 地址短缺问题。

工作流程:

  1. PAT 通过维护映射表记录每个内部私有 IP 地址与端口的对应关系。
  2. 出站包被转换为公共 IP 地址和动态分配的端口号。
  3. 入站包根据表中记录反向翻译到正确的内部地址和端口号。

优势:

支持高效地址使用。

增强内部网络的安全性(外部无法直接访问私有地址)。

相关推荐
向懒羊羊学习的大猫12 分钟前
【计算机网络】应用层
计算机网络
怒码ing13 分钟前
【考前预习】4.计算机网络—网络层
网络·计算机网络
gywl13 分钟前
计算机网络-传输层 TCP协议(下)
网络·tcp/ip·计算机网络
Hacker_xingchen16 分钟前
第一章、计算机网络概述
计算机网络
linux-hzh19 分钟前
计算机网络之王道考研读书笔记-1
计算机网络·考研·期末复习
Qfuuu33 分钟前
Linux Posix API与网络协议栈知识总结
linux·网络协议
我真不会起名字啊2 小时前
RPC远程服务调用详解和gRPC简介
网络·网络协议·rpc
码上一元2 小时前
RPC 服务与 gRPC 的入门案例
网络·网络协议·rpc·grpc
m0_748230442 小时前
HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
websocket·http·webrtc