考研复习Day 11 | 应用层(下)
一:动态主机配置协议DHCP
1.1 为什么需要DHCP?
问题:IP地址中包含网络号,但计算机第一次使用前不知道它会连到哪个网络,无法在出厂前设置好IP地址。
解决方案:DHCP(Dynamic Host Configuration Protocol)
当计算机IP地址发生变化(如进入新网络)时,使用DHCP配置IP地址
实现即插即用联网,不需要人工配置
1.2 DHCP的工作原理
模式:客户-服务器(C/S)
工作流程:
| 步骤 | 报文类型 | 方向 | 说明 |
|---|---|---|---|
| 1 | 发现报文(广播) | 客户→服务器 | 主机启动时广播,寻找DHCP服务器 |
| 2 | 提供报文 | 服务器→客户 | 服务器提供可分配的IP地址 |
| 3 | 请求报文 | 客户→服务器 | 客户从多个服务器中选择一个 |
| 4 | 确认报文 | 服务器→客户 | 服务器确认分配 |
租用期:DHCP分配的地址有租用期限制。接近租用期时,客户会请求更新。
重要端口:
| 角色 | 熟知端口 |
|---|---|
| DHCP客户 | 68 |
| DHCP服务器 | 67 |
DHCP中继代理:每个网络至少有一个(一般是路由器),做主机与DHCP服务器之间的中转。
日常应用:手机连接新WiFi时,通过DHCP获取新的IP地址。
二:简单网络管理协议SNMP
2.1 网络管理的基本概念
网络管理:对硬件、软件和人力的使用、综合和协调。
网络管理系统的组成:
![]()
| 角色 | 说明 |
|---|---|
| 管理者 | 运行SNMP客户程序 |
| 被管设备 | 主机、路由器、集线器等(运行代理程序) |
| 代理程序 | 在管理程序的命令和控制下,在被管设备上采取本地行动 |
| SNMP | 网络管理采用的协议 |
基本原理:要管理某个对象,必然要添加软件或硬件,但这种影响应尽量小。SNMP最重要的思想是尽量简单。
2.2 SNMP的三个组成部分
| 组成部分 | 全称 | 功能 |
|---|---|---|
| SNMP本身 | 简单网络管理协议 | 定义管理站和代理间交换的分组格式,包含变量名和状态值 |
| SMI | 管理信息结构 | 定义通用规则:如何命名、定义类型、编码 |
| MIB | 管理信息库 | 在被管实体中创建命名对象 |
2.3 管理信息结构SMI
SMI的三个功能:
被管对象怎样命名
被管对象的数据类型有哪些
网络上传送的管理数据如何编码
被管对象的命名:所有被管对象的名字都在一棵对象命名树上(类似URL的命名方式)。
数据类型:
| 大类 | 具体类型 | 说明 |
|---|---|---|
| 简单类型 | Integer32等 | 基本数据类型 |
| 结构化类型 | sequence | 类似结构体 |
| sequence of | 类似数组 |
抽象语法记法:只描述数据的结构形式,不考虑具体编码格式和内存存放方式。
编码方法(BER):
使用基本编码规则(BER),将所有数据元素组织为T-L-V三字段序列:
| 字段 | 含义 |
|---|---|
| T(Type) | 定义数据类型 |
| L(Length) | 定义V字段的长度 |
| V(Value) | 定义数据的值 |
2.4 管理信息库MIB
MIB:被管对象的集合。被管对象必须维持供管理程序读写的控制和状态信息,这些对象构成虚拟的信息存储器。
注:只有MIB中的对象才是SNMP可以管理的。
2.5 SNMP的协议数据单元和报文
SNMP的两种基本管理功能:
| 操作 | 报文类型 | 用途 |
|---|---|---|
| 读操作 | Get | 检测被管对象的状况 |
| 写操作 | Set | 改变被管对象的状况 |
运输协议:SNMP使用无连接的UDP。
SNMP实现管理功能的两种方式:
| 方式 | 说明 |
|---|---|
| 探询操作 | 定期向被管设备发送探询信息,了解其状况 |
| 陷阱(Trap) | 被管对象代理检测到严重异常事件时,主动向管理者发送报告 |
三:应用进程跨越网络的通信
3.1 系统调用和应用编程接口
系统调用接口:应用进程控制权和操作系统控制权进行转换的接口,又称API(Application Programming Interface)。
API的作用:
TCP/IP协议软件驻留在操作系统中
套接字接口(Socket):供应用程序使用TCP/IP服务的API
套接字是应用进程和运输层协议之间的接口
理解:套接字是一套API接口,应用进程通过它来使用位于操作系统内核的TCP/IP服务。
3.2 套接字描述符
创建套接字的过程:
应用进程请求创建套接字
↓
操作系统分配资源(存储器、CPU时间、网络带宽等)
↓
操作系统返回套接字描述符(代表这些资源的总和)
↓
应用进程的所有网络操作都使用这个描述符
↓
通信完毕后,系统回收所有资源
套接字描述符:套接字接口中的第一个参数,代表分配给该套接字的所有系统资源。
套接字的数据结构:
套接字数据构包含:
- 协议族(PF_INET = TCP/IP协议族)
- 服务类型(SOCK_STREAM = TCP服务)
- 本地IP地址、本地端口
- 远地IP地址、远地端口
3.3 几种常用的系统调用(以TCP服务为例)
并发方式工作模式:一个服务器同时处理多个连接。
各阶段系统调用:
| 阶段 | 系统调用 | 说明 |
|---|---|---|
| 连接建立 | bind | 服务器端指明套接字的本地端口号和IP地址(客户端可选) |
listen | 服务器将套接字设为被动模式(UDP不用) | |
accept | 服务器为远地客户分配从属服务器进程和新套接字 | |
connect | 客户端向服务器发出连接请求(需指明远地IP和端口) | |
| 数据传送 | send | 传送数据(需指明:套接字描述符、数据地址、数据长度) |
recv | 接收数据(需指明:套接字描述符、缓存地址、缓存空间长度) | |
| 连接释放 | close | 释放连接、撤销套接字 |
四:P2P应用
P2P体系结构特点:没有固定的服务器,绝大多数交互都使用对等方式。
现状:P2P文件共享占据了互联网流量中最大的份额,比万维网所占比例大得多。
4.1 具有集中目录服务器的P2P工作方式(第一代)
工作流程:
用户向集中目录服务器询问资源地址
从存储资源的计算机直接下载
4.2 具有全分布式结构的P2P文件共享程序(BT)
BT(BitTorrent)的关键技术:
| 技术 | 说明 |
|---|---|
| “最稀有的优先” | 尽快把最稀有的文件块收集到 |
| “洪流” | 参与某个文件分发的所有对等方构成的集合 |
| “追踪器” | 每个洪流都有一个追踪器,对等方加入时需登记 |
激励机制:优先向以最高数据率传送文件块的相邻对等方传送所请求的文件块,使对等方彼此都能以较高的速率交换文件块。
4.3 P2P文件分发分析
结论:当对等方的数量很大时,采用P2P下载文件比传统的客户-服务器模型快很多。
4.4 在P2P对等方中搜索对象
分布式散列表(DHT):
一种分布式数据库,仅包含两部分信息:
关键字:资源名
值:存放对象的节点的IP地址
问题:资源名保存在哪台主机中?
解决方案:基于DHT的算法(如Chord算法)
Chord算法工作原理:
| 步骤 | 说明 |
|---|---|
| 1 | 散列函数将资源名映射为均匀分布的数字(标识符),放到Chord环上 |
| 2 | 保存资源名的主机也通过散列函数映射为标识符,放到Chord环上(结点) |
| 3 | 每个资源名保存到Chord环上离它最近的结点所对应的主机中 |
理解:结点数目远少于资源名数目。
五:思考
1. DHCP ≈ 酒店前台
入住(连接网络)时,前台(DHCP服务器)给你分配一个房间号(IP地址),退房(断开连接)时回收。续住(租用期更新)需要到前台确认。
2. SNMP ≈ 服务器监控系统
管理者定期“体检”(探询),被管设备出问题时主动“报警”(Trap)。就像你用top命令看服务器状态,配置告警规则。
3. 套接字 ≈ 文件描述符
Linux中“一切皆文件”,网络连接也被抽象成文件描述符。
socket()返回的描述符和open()返回的文件描述符本质上是同一套机制。
六:今日小结
今天学习了应用层的补充知识和P2P应用:
| 主题 | 核心内容 |
|---|---|
| DHCP | 自动分配IP、租用期、中继代理、端口68/67 |
| SNMP | 网络管理三部分(SNMP+SMI+MIB)、Get/Set、UDP |
| 套接字 | API接口、描述符、系统调用(bind/listen/accept/connect/send/recv/close) |
| P2P | 无服务器(某种意义上)、BT算法、DHT、Chord环 |
注:以上内容参考计算机网络(第8版),谢希仁 编著。其中有一些个人理解,仅供参考。如有错误,希望各位大佬指正,感谢!
七:明日计划
网络安全(注:因自己报考的学校考试大纲有要求,若各位不做相关要求,可跳过)
