[toc]
FTP 数据 | FTP 控制 | TFTP | TELNET | DNS | HTTP | SNMP | SMTP | POP3 |
---|---|---|---|---|---|---|---|---|
TCP | TCP | UDP | TCP | UDP | TCP | UDP | TCP | TCP |
20 | 21 | 69 | 23 | 53 | 80 | 161 | 25 | 110 |
服务器 |
网络应用模型
客户/服务器模型(C/S)
使用最多的方式
客户(client)和服务器(server)都是指应用进程。
CS是进程之间服务和被服务的关系。
客户机必须知道服务器的地址,服务器不需要知道客户机地址
客户是服务的请求方主动,服务器是服务的提供方被动。
请求方和提供方都要使用网络核心部分的服务。
应用:Web、FTP、远程登录、电子邮件
对等连接模型(P2P)
- 由对等结点组成的逻辑网络$\star$
- 不区分请求方和提供方。
- 只要两个主机都运行P2P 软件,就可平等的、对等连接通信。
优点:
- 减轻了服务器计算压力,消除了对服务器的完全依赖,大大提高了系统效率和资源利用率
- 多个用户机可以直接共享文档
- 可扩展性好。传统服务器有响应和宽带的限制,因此只能接受一定数量的请求
- 网络健壮性强。单个结点失效不会影响其它结点
缺点:
- 获取服务同时还要给其他结点提供服务,会占用较多内存,影响整机速度
- 使网络变得拥塞
域名系统DNS
主机名$\rightarrow$IP地址
端口:53
传输层:UDP
计算机用户只是间接而非直接使用域名系统
层次域名空间
命名方法:层次树状结构
域名:任何一个主机,都有一个唯一的层次结构的名字
域名结构
$$
三级域名.二级域名.顶级域名
$$
- 每个标号不超过63个字符,完整域名不超过255个字符
- 不区分大小写
- 除了
-
不使用其他标点 - 标号级别从右往左级别逐次降低
- 各级域名由其上一级的域名管理机构管理,最高级由ICANN管理
- 只是逻辑概念,不表明计算机物理地点
顶级域名 TLD
国家顶级域名nTLD
中国 | 美国 | 英国 |
---|---|---|
cn |
us |
uk |
通用顶级域名gTLD
| 公司企业 | 网络服务机构 | 非赢利组织 | 教育机构 | 政府部门 | 军事部门 | 国际组织 |
| ——— | ———— | ———- | ——— | ——— | ——— | ——— | —- |
| com
| net
| org
| edu
| gov
| mil
| int
|
基础结构域名:arpa
,用于反向域名解析
域名服务器
应用模式:C/S
区(zone):服务器管辖的范围$\le$域
- 区中的所有节点必须是能够连通的
- 每区设置相应的权限域名服务器,保存该区中的所有域名到IP地址的映射。
域名服务器类型
根域名服务器
- 最高层次的域名服务器,也是最重要的域名服务器。
- 根域名服务器知道所有的顶级域名服务器的域名和IP地址。
- 本地域名服务器,只要自己无法解析,就首先求助于根域名服务器。
- IP地址仅13个,但机器遍布世界,采用任播技术
顶级域名服务器(TLD 服务器)
- 管理在该顶级域名服务器注册的所有二级域名。
- 收到 DNS查询请求时给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)。
权限域名服务器(授权域名服务器)
- 负责一个区
- 每台主机都必须在授权域名服务器登记,能将其管辖的主机名转换为IP地址
- 若权限域名服务器能给出最后的查询回答时,就会告诉请求客户,下一步应当找哪一个权限域名服务器。
本地域名服务器(默认域名服务器)
- 不属于域名服务器层次结构
- 当一个主机发出 DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
- 主机发出DNS查询请求即发送给该主机的本地域名服务器(电脑设置“本地连接”填写DNS地址的地址)
提高域名服务器可靠性
- 数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
当主域名服务器出故障时,辅助域名服务器可以保证 DNS的查询工作不会中断。 - 主域名服务器定期复制数据到辅助域名服务器中,而更改数据只能在主域名服务器中,保证了数据的一致性。
- DNS分组丢失:DNS 是幂等的,操作可以重复而不会有损害。当一个进程做 DNS 请求时,它启动一个定时器,如果定 时期满,它就再请求一次。
域名的解析过程
**主机向本地域名服务器的查询一般都是采用递归查询**。
若本地域名服务器无法解析,那么本地域名服务器向根域名服务器发出查询请求报文。
**本地域名服务器向根域名服务器的查询通常是采用迭代查询**。
当根域名服务器收到本地域名服务器的迭代查询请求报文时,给出所要查询的IP地址,或告诉本地域名服务器下一步查询域名服务器。然后让本地域名服务器进行后续的查询。
解析过程$\star$
客户机向本地域名服务器发出DNS请求报文(递归查询)
本地域名服务器收到请求后,查询本地缓存
若无记录,则以DNS客户身份向根域名服务器发出解析请求报文(迭代查询)
根域名服务器收到请求后,将对应顶级域名服务器的IP地址返回给本地域名服务器
本地域名服务器向顶级域名服务器发出解析请求报文(迭代查询)
顶级域名服务器收到请求后,将对应授权域名服务器的IP地址返回给本地域名服务器
本地域名服务器向授权域名服务器发出解析请求报文(迭代查询)
授权域名服务器收到请求后,返回查询结果
本地域名服务器将查询结果保存到本地混村,并返回给客户机
高速缓存$\star$:大大减轻根域名服务器的负荷,使因特网上的 DNS查询请求和回答报文的数量大为减少
文件传送协议FTP
- 互联网上使用得最广泛的文件传送协议。
- 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
- 屏蔽了各计算机系统的细节,适合于在异构网络中任意计算机之间传送文件。
工作方式:C/S
传输层:TCP
端口:控制连接:21、数据连接:20
文件共享协议
复制整个文件
若要存取一个文件,必须先获得一个本地文件副本
若要修改文件,只能对文件副本进行修改,然后将修改后的副本传回原节点
联机访问
允许多个程序对同一文件进行修改(NFS)
FTP协议的工作原理
传输文件复杂性
- 计算机存储数据的格式不同
- 文件的目录结构和文件命名的规定不同
- 对于相同的文件存取功能,操作系统使用的命令不同。
- 访问控制方法不同。
FTP功能
- 提供不同种类主机系统之间的文件传输能力(ASCII 文本文件 & Binary 其他文件)$\star$
- 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
- 以匿名FTP的方式提供公用文件共享的能力(用户名:anonymous)
FTP服务器
- 主进程$\star$:接受新请求
- 从属进程$\star$:负责处理单个请求
FTP服务器工作步骤
打开端口21(控制端口),使客户进程连接
等待客户进程发送连接请求
启动从属进程处理客户进程发来的请求。
主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
回到等待状态,继续接收其他用户进程请求
控制连接与数据连接
控制连接
端口:21
生命周期:控制连接整个会话期间保持打开
作用:(连接请求、传输请求等[7位ASCII])
数据连接
带外传送
生命周期:传送进程实际完成文件的传送后关闭
作用:用于传输文件
传输模式
选择权为客户端
主动模式PORT
- 客户机连接服务器的21端口
- 登录成功后要读取数据时,客户机随机开放一个端口,并告诉服务器
- 服务器收到PORT命令以及端口号后,通过20端口与客户端发送数据
被动模式PASV
- 客户端读取数据时,发送PASV命令到服务器
- 服务器随机开放一个端口,并告知客户端
- 客户端连接服务器开放端口
不同连接优点$\star$
使协议更加简单和更容易实现。
在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)
数据连接与控制连接不会发生混乱。
下载文件步骤$\star$
- 建立一个TCP连接到服务器下载路径的21号端口,然后发送登录账号密码
- 服务器返回登录成功信息后,主机打开一个随机端口,并将该端口号发送给服务器
- 主机发送读取信息命令
get file
,服务器使用20端口建立一个TCP连接到主机随机打开的端口 - 服务器把文件内容通过第二个连接发送给主机,传输完毕后关闭
简单文件传送协议 TFTP
工作方式:C/S
传输层:UDP
端口:69
很小且易于实现的文件传送协议。
需要有自己的差错改正措施。
只支持文件传输而不支持交互。
无庞大的命令集,无列目录功能,无用户身份鉴别。
TFTP的主要特点
- 每次传送的数据PDU中有512字节的数据,但最后一次可不足512字节。
- 数据PDU也称为文件块,每个块按序编号,从1开始。
- 支持ASCII码或二进制传送。
- 可对文件进行读写。
- 使用很简单的首部。
TFTP优点
- 可用于UDP环境(程序或文件同时向许多机器下载时)
- 代码所占内存小(不需要硬盘,只需要只读存储器),增加了灵活性,减少了开销
TFTP工作步骤
客户发送一个读写请求报文给TFTP服务器进程(端口:69)
TFTP进程选择新的端口号和TFTP通信
传输中,发送完一个文件块就等待对方确认
确认时需指明块编号,规定时间内收不到确认即重发数据
若文件长度恰时512字节整数倍,则发送完后,还需发送一个仅有首部的数据报文
若不满512,则正好作为文件结束标志
FTP & TFTP$\star$
FTP | TFTP | |
---|---|---|
传输层 | TCP | UDP |
主要功能 | 减少或消除在不同操作系统下处理文件的不兼容性 | 很小且易于实现的文件传送协议 |
工作方式 | C/S | C/S |
可靠性 | 可靠传输 | 需要差错改正;不能对用户进行身份鉴别 |
特点 | 提供文件传送的一些基本的服务 服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求 |
支持文件传输而不支持交互 没有一个庞大的命令集,没有列目录的功能 |
网络文件系统NFS
- 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
- 用户可只复制文件中的片段,而非整个文件。
- 在网络上传送的只是少量的修改数据。
NFS步骤
- 客户端把要添加的数据和文件后写入数据的请求发往NFS服务器
- NFS服务器更新文件后返回应答信息
远程终端协议TELNET
作用:用户用 TELNET就可在其所在地通过 TCP连接注册(即登录)到远地的另一个主机上
传输层:TCP
工作方式:C/S,在本地运行TELNET客户进程,在远地主机运行TELNET服务器进程
进程:服务器进程等待新请求;从属进程处理每个连接
透明传输:TELNET将用户的击键传到远地主机,同时将远地主机的输出返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
适应异构:能够适应多种计算机及操作系统差异
网络虚拟终端NVT
TELNET定义了数据和命令应该怎样通过因特网,这些定义就是所谓的网络虚拟终端NVT
- 客户软件把用户操作转换为NVT格式,送交服务器
- 服务器软件把命令从NVT转换为远地系统所需格式
- 返回数据时,服务器把远地格式转换为NVT,本地客户再把NVT格式转换为本地系统格式
电子邮件
电子邮件系统的组成结构
- 用户代理UA
- 邮件服务器
- 电子邮件使用协议
用户代理UA (User Agent)
用户与电子邮件系统的接口
功能:撰写、显示、处理、通信
常见用例:电子邮件客户端软件
邮件服务器(Mail Server)
功能:发送和接收邮件,向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)
工作方式:C/S,但同时充当客户机和服务器
电子邮件的重要协议
- 简单邮件发送协议:SMTP——在用户代理向邮件服务器或邮件服务器之间发送邮件
- 邮件读取协议:POP3和 IMAP——用户代理从邮件服务器读取邮件
- 互联网文本报文格式
- 通用互联网邮件扩充MIME
发收电子邮件步骤
- 发件人调用用户代理撰写和编辑要发送的邮件,用户代理把邮件用SMTP协议发给发送端邮件服务器。
- 发送端邮件服务器把邮件放入在邮件缓存队列中,等待发送。
- 发送端邮件服务器的SMTP客户进程发现邮件缓存有待发送的邮件,向运行在接收端邮件服务器的SMTP服务器进程建立TCP连接
- TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有邮件发送完毕,SMTP关闭TCP连接。
- 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
- 收件人在打算收信时,调用用户代理,使用POP3(或IMAP)协议读将自己邮件从接收端邮件服务器的用户邮箱取回。
电子邮件格式与MIME
电子邮件的组成
$\text{电子邮件}\left{ \begin{array}{l}
\text{信封}\
\text{内容}\left{ \begin{array}{l}
\text{首部}\
\text{主体}\
\end{array} \right.\
\end{array} \right. $
信封由系统从首部提取至信封
首部:
From:发件人
To:收件人
Subject:主题
Cc:给某某人发送一个邮件副本(选填)
Bcc:暗送副本(选填)
Date:发信日期(系统)
Reply-To:对方回信所用的地址(设置)
电子邮件地址格式:$收件人邮箱名@邮箱所在主机域名$
多用途网际邮件扩充MIME
多功能 Internet 邮件扩充服务,它是一种 多用途网际邮件扩充协议
非ASCII$\rightarrow$ASCII
MIME构成
- 5个新的邮件首部字段,它们可包含在原有首部中。这些字段提供了有关邮件主体的信息。
- MIME版本:MIME的版本。若无此行,则为英文文本。
- 内容描述:这是可读字符串,此邮件的说明。
- 内容标识:邮件的唯一标识符。
- 传送编码:传送时邮件主体使用的编码方法。
- 内容类型:邮件内容类型/子类型。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
- Quoted-printable编码:适用于传送数据中只有少量非ASCII码的情况,对于所有可打印的ASCII,都不改变
- base64编码:适用于非二进制文件;每6bit按一定方法转换成ASCII
SMTP & MIME 关系
由于SMTP存在一些缺点和不足,通过MIME并非改变或取代SMTP。继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME可以在已有的电子邮件和协议下传送。
SMTP协议与POP3协议
简单邮件传送协议SMTP
控制两个相互通信的SMTP进程交换信息
工作方式:C/S
交互方式:命令-响应
传输层:TCP
端口号:25
SMTP通信的三个阶段$\star$
- 连接建立:(连接是主机之间直接建立,不使用中间的邮件服务器)
- SMTP客户每隔一段时间对邮件缓存扫描一次
- 如发现有邮件,则使用SMTP端口号25与接收方邮件服务器的SMTP服务器建立TCP连接
- 连接建立后,接收方SMTP服务器发出
220 Service
- SMTP客户机向SMTP服务器发送
HELLO
命令,附上发送方主机名
邮件传送
发送端发送
MAIL FROM:发送人
命令若SMTP准备好则回复
250 OK
SMTP发送
RCPT TO:收件人
每发送一次,SMTP回复
250 OK
或550 No such user here
以防发送很长时间才知道地址错误,避免浪费通信资源
获得
OK
回答后,客户端使用DATA
命令表示开始准备发送服务器回复
354 Start mail input; end with <CRLF>.<CRLF>
SMTP客户端开始发送邮件,并以
<CRLF>.<CRLF>
结尾
连接释放
邮件发送完毕后,SMTP客户发送
QUIT
命令,释放TCP连接服务器回复``221```,同意释放TCP连接
SMTP缺点
- 发送邮件不经过鉴别,方便了垃圾邮件
- 不能传送可执行文件或其他的二进制对象。
- 限于传送7位的ASCII码
- 会拒绝超过一定长度的邮件。
- 传送明文,不利于保密
邮件读取协议POP3和IMAP
邮局POP3
工作方式:C/S
传输层:TCP
端口:110
支持用户鉴别,不对密码加密,基于ASCII形式
工作过程$\star$
- 当收取邮件时,电子邮件软件首先会根据用户名和密码调用DNS协议对POP服务器进行IP地址解析
- 然后邮件程序便开始使用TCP协议连接邮件服务器的110端口
- 当邮件程序成功连上POP服务器后,其首先使用USER命令将邮箱账号传给POP服务器,再用PASS命令将邮箱密码传给服务器
- 当完成这一认证过程后,邮件程序使用STAT命令请求服务器返回邮箱统计资料比如邮件总数和邮件大小等
- 然后邮件程序就会使用RETR命令接收邮件,接收一封后便使用DELETE命令将邮件服务器中的邮件置为删除状态。
- 当使用QUIT时,邮件服务器便会将置为删除标志的邮件删除。
网际报文存取协议IMAP
工作方式:C/S
传输层:TCP
特点
连接后只下载邮件首部(部分下载)。
允许收信人只读取邮件中首部或MIME报文部分
适用于低宽带
提供了:创建管理文件夹、搜索邮件内容等联机命令。
优点:可以在不同地方处理电子邮件
缺点:要想查阅邮件,必须先联网
IMAP 与 POP3 比较
操作位置 | 操作内容 | IMAP | POP3 |
---|---|---|---|
收件箱 | 阅读、标记、移动、删除邮件等 | 客户端与邮箱更新同步 | 仅在客户端内 |
发件箱 | 保存到已发送 | 客户端与邮箱更新同步 | 仅在客户端内 |
创建文件夹 | 新建自定义的文件夹 | 客户端与邮箱更新同步 | 仅在客户端内 |
草稿 | 保存草稿 | 客户端与邮箱更新同步 | 仅在客户端内 |
垃圾文件夹 | 接收并移入垃圾文件夹的邮件 | 支持 | 不支持 |
广告邮件 | 接收并移入垃圾文件夹的邮件 | 支持 | 不支持 |
基于万维网的电子邮件
- 发送、接收电子邮件时使用HTTP协议
- 仅在不同邮件服务器之间使用SMTP.
万维网的电子邮件优点
- 不需要在计算机中再安装用户代理软件。
- 计算机能联网,就能非常方便地收发电子邮件。
- 电子邮件界面非常友好。
万维网WWW
常见名词$\star $
www:万维网,是一个大规模的、联机式的信息储藏所
URL:统一资源定位符URL,标志万维网上的各种文档,并使每一个文档在整 个因特网的范围内具有唯一的标识符
HTTP:超文本传送协议,主要为了实现万维网上各种链接,使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议
HTML:超文本标记语言,制作万维网页面的标记语言,消除了不同计算机之间的信息交流障碍
CGI:通用网关接口,定义了动态文档应当如何被创建,输入数据如何提供给应用程序,以及输出结果意如何使用
浏览器:一种允许用户查看万维网,其他网络或用户计算机上的HTML文档,跟随上面的超级链接以及传递文件的客户适配器
超文本:由多种信息源链接成的一种文本信息
超媒体:超级媒体的简称,是超文本和多媒体在信息浏览环境下的结合
超链:超文本中的一种链接,点击超链接,这个超链接会被激活
页面:一个客户程序主窗口上显示出来的万维网文档
活动文档:是一种提供屏幕连续更新的级数,即将所有工作都转移给浏览器端。每当浏览器请求一个活动文档时,服务器酒返回一段程序副本,使该程序副本在浏览器端运行。这时,活动文档可与用户直接交互,并可连续地改变屏幕显示
搜索引擎:万维网中用来进行搜索的程序
访问网页协议$\star $
OSI层 | 协议 |
---|---|
应用层 | HTTP:WWW访问协议 DNS:域名解析服务 |
传输层 | TCP:HTTP提供可靠数据传输 UDP:DNS使用UDP传输 |
网络层 | IP:IP包传输和路径选择 ARP:将本机默认网关IP地址映射成物理MAC地址 ICMP:提供网络传输中差错检测 |
数据链路层 | PPP:接入网络 |
万维网的概念与组成结构
WWW,万维网服务,并非特殊的计算机网络,是一个大规模的、联机式的信息存储空间$\star $
工作方式:C/S
客户程序:浏览器
服务器程序:万维网服务器(万维网文档所驻留的计算机)
万维网内核部分构成
- 统一资源定位符(URL)
- 超文本传输协议(HTTP)
- 超文本标记语言(HTML)
万维网工作流程
- Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求
- Web服务器把URL转换成文件路径,并返回信息(客户所要的万维网文档)给Web浏览器
- 通信完成,关闭连接
统一资源定位符URL
URL是从互联网获得资源位置的方法
URL格式
<协议>://<主机>:<端口>/<路径>
协议——获取万维网文档的协议(http、ftp)
### 使用HTTP的URL
```web-idl
http://<主机>:<端口>/<路径>
若忽略端口号80
,在忽略路径,则URL指到互联网某主页
搜索引擎$\star$
全文检索搜索引擎
- 一种纯技术型的检索工具。它的工作原理是通过搜索软件到因特网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站。然后按照一定的规则建立一个很大的在线数据库供用户查询。用户在查询时只要输入关键词,就从已经建立的索引数据库上进行查询(并不是实时地在因特网上检索到的信息)。
分类目录搜索引擎
- 并不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。
超文本传送协议HTTP
定义了浏览器怎样向万维网请求万维网文档,以及服务器怎样把文档传送给浏览器
端口:80
传输层:TCP
HTTP的操作过程
- 浏览器分析连接指向页面的URL
- 浏览器向DNS请求解析URL的IP地址
- 域名系统向DNS解析出URL对应服务器的IP地址
- 浏览器与服务器建立TCP连接(端口:80)
- 浏览器发出HTTP请求:
GET 文件路径
- 服务器通过HTTP响应把文件发送给浏览器
- 释放TCP连接
- 浏览器解释文件,并将Web页面显示给用户
HTTP的主要特点
- 使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。
- 协议本身也是无连接的。通信双方交换HTTP报文签不需建立HTTP连接
- 是面向事务的客户服务器协议所进行信息交换为一个整体,要么所有信息交换完成,要么一次交换都不进行
- 协议是无状态的服务器不记忆访问过的客户,实际应用中,使用Cookie作为用户唯一识别码
- 产生:服务器
- 存储:用户主机
- 可以使用持续连接和非持续连接
- 非持续连接:每个网页元素对象传输都需要单独建立一个TCP连接每个对象都有2RTT开销
- 持续连接:万维网服务器发送响应后依然保持这条连接
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求。服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。客户访问所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档效率。
代理服务器
- 又称为万维网高速缓存,缓存最近的请求与响应。
- 若再次发现同样的请求和响应,则致谢返回暂存,而不需要再按URL地址再次访问。
- 可减少访问互联网服务器的时延
操作步骤
- 浏览器访问互联网的服务器时,先与局域网的高速缓存建立TCP连接,并向高速缓存发出HTTP请求报文。
- 若高速缓存已经存放了所请求的对象,则将此对象放入HTTP响应报文中返回给浏览器。
- 否则,高速缓存就代表发出请求的用户浏览器,与互联网上的源点服务器建立TCP连接,并发送HTTP请求报文。
- 源点服务器将所请求的对象放在HTTP 响应报文中返回给局域网的高速缓存。
- 高速缓存收到此对象后,先复制在其本地存储器中缓存,然后再将该对象放在HTTP响应报文中,通过已建立的TCP连接。返回给请求该对象的浏览器。
HTTP 的报文结构
由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而每个字段的长度都不确定
- 请求报文——从客户向服务器发送请求报文。
- 响应报文——从服务器到客户的回答。
请求报文
开始行——区分是请求报文还是响应报文
方法——对所请求对象进行操作
方法 操作 GET
请求读取URL标识信息 POST
给服务器添加信息 HEAD
请求读取URL标识信息的首部 CONNECT
用于代理服务器 URL——所请求的资源的URL
版本——HTTP版本
首部行——说明浏览器、服务器或报文主体的信息
实体主体——通常不用
响应报文
状态行——区分是请求报文还是响应报文
- 版本——HTTP版本
- 状态码
- 1xx表示通知信息的,如请求收到了或正在进行处理。
- 2xx表示成功,如接受或知道了。(
202
:接受) - 3xx表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx表示客户的差错,如请求中有错误的语法或不能完成。(
400
:错误请求、404
:找不到+) - 5xx表示服务器的差错,如服务器失效无法完成请求。
首部行——说明浏览器、服务器或报文主体的信息
万维网的文档
超文本标记语言HTML
- HTML定义了许多用于排版的命令(即标签)。
- HTML把各种标签嵌入到万维网的页面中。这样就构成了所谓的HTML文档。
- HTML文档是一种可以用任何文本编辑器创建的ASCII码文件。
可扩展标记语言XML
- 但XML的设计宗旨是传输数据,而不是显示数据(HTML是为了在浏览器上显示数据)。用户界面和结构化数据分开
- XML不是要替换HTML,而是对HTML的补充。
动态万维网文档
- 静态文档是指该文档创作完毕后内容不会改变。
- 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。
- 动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。而从浏览器的角度看,这两种文档并没有区别。
通用网关接口CGI
定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。
- “通用”:CGI标准所定义的规则对其他任何语言都是通用的。
- “网关”:CGI程序的作用像网关。河
- “接口”︰有一些已定义好的变量和调用等可供其他CGI程序使用。
CGI程序:脚本
超媒体 & 超文本
- 万维网是分布式超媒体系统,它是超文本系统的扩充。超文本是万维网的基础。
- 超文本由多个信息源链接组成。利用一个链接可使用户找到另一个文档。
- 超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。
同时打开多少个TCP连接优缺点
优点::简单、明了、方便。
浏览器在同时打开多个TCP连接进行浏览时,会把取回的每一个页面副本放入本地磁盘的缓存中,当浏览某个页面时(用鼠标选择某个页面),浏览器直接从缓存中得到该项的副本而不必再访问网络,在这种情况下可明显的改善浏览器的特性。因为从网络上取回一个很大的文件所需的时间,大大超过从本地磁盘直接读取的时间,对于网络连接较慢的用户,就显得比较重要;
缺点:卡的时候容易死机
由于要对大量的文件进行缓存,会占用较多的存储空间,并且,由于浏览器要耗费时间来把这些文件存储在磁盘上,有可能反而降低了浏览器的效率。此外,万维网服务器往往要服务大量的客户请求,会加重其负担。
可选解释程序
- 解释程序是一个复杂的程序,其核心是一个模仿计算机的简单循环。
- 解释程序维持一个指令指针,在初始化时指令指针指在小应用程序的开始处。在每一次循环操作时,解释程序在指令指针指向的地址读取字节码,然后解释程序对字节码进行解码,并完成指明的操作。
- 在浏览器中,HTML解释程序是必不可少的,而其他的解释程序则是可选的。例如,Java是可选解释程序,但是在运行 java的浏览器时则需要两个解释程序,即HTML解释程序和Java小应用程序解释程序。
解释程序除了应具备基本的指令解码功能,还必须包括对Java运行环境的支持。也就是说,一个Java解释程序必须能够在屏幕上显示图形,接入到因特网,以及执行Ⅰ/0操作等。此外,解释程序必须设计成使小应用程序能够利用浏览器的设施来读取和显示静态和动态文档。因此,在浏览器中的Java解释程序必须能够与浏览器中的HTTP客户以及HTML解释程序进行通信。
动态主机配置协议DHCP
作用:分配IP地址
工作方式:C/S、请求/应答方式
传输层:UDP
端口:服务器——67、客户机——68
DHCP 中继代理
- 并非每个网络上都有DHCP服务器,但至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息。
- 当DHCP中继代理收到主机发送的发现报文后,就以单播方式向DHCP服务器转发此报文,并等待其回答。收到DHCP服务器回答的提供报文后,DHCP中继代理再将此提供报文发回给主机。
DHCP的工作过程
- DHCP服务器被动打开UDP端口67,等待客户端发来的报文。
- DHCP客户从UDP端口68,发送DHCP发现报文
DHCPDISCOVER
- 凡收到DHCP发现报文的DHCP服务器都发出DHCP提供报文
DHCPOFFER
,因此DHCP客户可能收到多个DHCP提供报文。 - DHCP客户从几个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送 DHCP请求报文
DHCPREQUEST
- 被选择的DHCP服务器发送确认报文
DHCPACK
,进入已绑定状态,并可开始使用得到的临时I地址了。 - 租用期过了一半, DHCP发送请求报文
DHCPREQUEST
,要求更新租用期。 - DHCP服务器若同意,则发回确认报文
DHCPACK
。DHCP客户得到了新的租用期,重新设置计时器。 - DHCP服务器若不同意,则发回否认报文
DHCPNACK
。这时DHCP客户必须立即停止使用原来的IP地址,而必须重新申请IP地址(回到步骤2) 。 - 若DHCP服务器不响应步骤6的请求报文DHCPREQUEST,则在租用期过了87.5%时,DHCP客户必须重新发送请求报文
DHCPREQUEST
(重复步骤6),然后又继续后面的步骤。 - DHCP客户可随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文
DHCPRELEASE
即可。
简单网络管理协议SNMP
网络管理的基本概念
硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管并非对网络进行行政上的管理
名词解释$\star$
网络元素:被管设备,包括硬件设备和软件设备,有时也称作网元
被管对象:可以是被管设备中的某个硬件,也可以是某些硬件或软件配置参数的集合
管理进程:运行中的管理程序,管理程序运行SNMP客户程序;
代理进程:指运行中的网络管理代理程序,代理程序运行SNMP服务器程序;
管理信息库:一个网络中所有可能的被管对象的集合的数据结构。
网络管理的五大功能
- 故障管理:故障检测、隔离和纠正。
- 配置管理:初始化网络、并配置网络。
- 计费管理:记录网络资源的使用。
- 性能管理:估价系统资源的运行状况及通信效率等。
- 网络安全管理:对授权机制、访问控制、加密和加密关键字的管理。
网络管理模型中的主要构件
管理站(网络运行中心NOC):网络管理系统的核心。
管理程序:运行时就成为管理进程。
管理者(Manager):管理站(硬件)或管理程序(软件)不是指人,而是指机器或软件
网络管理员(administrator):负责网络管理的人员。
代理(agent):被管设备中和管理站中的管理程序进行通信的运行程序
网络管理协议SNMP:网络管理协议是管理程序和代理程序之间进行通信的规则。
- 网络管理员利用网络管理协议,通过管理站对网络中的被管设备进行管理。
- 需要注意的是,网管协议本身不管理网络。
使用SNMP进行网络管理
指导思想:尽可能简单
基本功能:监视网络性能,统计、配置、测试网络设备;实现各种差错检测和恢复功能等。
传输层:TCP
SNMP网络管理组成
- SNMP本身
- 管理信息结构SMI
- 管理信息库MIB
管理信息结构SMI$\star$
功能
- 被管对象应怎样命名——SMI规定被管对象必须在命名树上
- 存储被管对象的数据类型
- 在网络上传送的管理数据应如何编码
抽象语法记法ASN.1
- SMI既是ASN.1的子集,又是 ASN.1的超集。
- ASN.1数据的含义不存在任何二义性。
- 把数据分为简单类型和结构化类型
基本编码规则BER
- BER指明了每种数据类型中每个数据的值的表示。
- 发送端用BER编码,可将用ASN.1所表述的报文转换成唯一的比特序列。
- 接收端用BER进行解码,得到该比特序列所表示的ASN.1报文。
- TLV序列
- 标记字段T:1字节
- 类别:2位——通用类00、应用类01、上下文类10、专用类11
- 格式:1位——简单数据类型0、结构化数据类型1
- 编号:5位——标记数据类型
- 长度字段L:V字段长度
- 值字段V:定义元素的值
- 标记字段T:1字节
管理信息库MIB$\star$
- 被管对象必须维持可供管理程序读写的若干控制和状态信息。
- 管理程序使用MIB中这些信息的值对网络进行管理(如读取或重新设置这些值)。
- 只有在MIB中的对象才是SNMP所能够管理的。
SNMP的协议数据单元和报文
SNMP基本管理功能$\star$
- “读”操作,使用
Get
报文来检测被管对象 - “写”操作,使用
Set
报文来改变被管对象
探询操作$\star$
SNMP的这些功能通过探询操作来实现功能
SNMР管理进程定时向被管理设备周期性地发送探询信息。
优点
- 可使系统相对简单。
- 能限制通过网络所产生的管理信息的通信量
缺点
- 不够灵活,而且所能管理的设备数目不能太多
- 开销也较大
陷阱
SNMP不是完全的探询协议,它允许不经过询问就能陷阱信息表示它能够捕捉“事件”
代理检测到有事件发生时,就检查被管对象门限值。代理只报告达到某些门限值的事件(即过滤)。
优点
- 仅在严重事件发生时才发送陷阱
- 陷阱信息很简单且所需字节数很少
SNMPv1报文
- 版本:3
- 首部
- 报文标识
- 最大报文长度
- 报文标志
- 安全参数:产生报文摘要
- 数据部分
- 加密信息
- PSU类型
- 请求ID$\star$:4字节,响应报文也返回此标识符,标识响应报文对应哪个请求报文
- 差错状态:请求报文中为0;响应报文0代表正常,1~18代表错误类型
- 差错索引:请求报文中为0;响应报文指明差错的偏移量
- 变量绑定:指明一个或多个变量 的值
应用进程跨越网络的通信
提供没有标准化应用协议的软件联网
应用编程接口API
API是应用进程和操作系统的接口
- 应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口
- 此接口再将控制权传递给计算机的操作系统,操作系统将此调用给某个内部过程,并执行所请求的操作
- 内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用程序
- 只要应用进程需要从操作系统获得服务,就要将控制权传递给操作系统,操作系统在执行必要的操作后将控制权返回给应用进程
套接字接口Socket interface
供应用编程使用TCP/IP的应用编程接口API
套接字以上进程由应用进程控制;套接字以下由操作系统控制
IP地址和端口号组合
Socket使用类型
- 基于TCP协议,采用流的方式提供可靠的字节流服务
- 基于UDP协议,采用数据报文提供数据打包发送的服务
调用套接字步骤
- 当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。
- 操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示。
- 应用进程所进行的网络操作都必须使用这个套接字描述符。
- 通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该套接字描述符相关的所有资源。
常见系统调用
bind
、accept
、listen
- 套接字被创建后,其端口号和IP地址都是空的,因此应用进程要调用bind(绑定)来指明套接字的本地地址(本地端口号和本地IP地址)
- 服务器在调用bind后,还必须调用1isten(收听)把套接字设置为被动方式,以便随时接受客户的服务请求UDP服务器由于只提供无连接服务,不使用1isten系统调用
- 服务器紧接着就调用accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用accept 的一个变量就是要指明是从哪一个套接字发起的连接。
P2P
具有集中目录服务器的P2P工作方式
应用:Napster
关键:用户要及时向Napster的目录服务器报告自己存有的音乐文件
Napster的文件传输是分散的P2P,文件的定位则是集中的C/S
Napster的工作过程
- 用户向Napster目录服务器查询谁有音乐文件
- Napster目录服务器回答用户:有A、B、C三个地点有文件(给出了地点的IP地址)
- 用户可以随机地选择地点中的任一个,也可以使用PING报文寻找最方便下载的一个。假定用户向X发送下载文件请求报文,X和A都使用P2P方式通信,互相成为对等方。
- 对等方A把文件发送给X
集中式目录服务器的缺点
- 可靠性差,成为性能的瓶颈。
具有全分布式结构P2P
第二代P2P查询方法:有限范围的洪泛查询
第三代P2P查询方式:分散定位和分散传输技术
比特洪流 BT
下载数据单元:长度固定的文件块
BT协议基本机制
每个洪流都有一个基础设施结点,叫做追踪器
一个对等方加入洪流时,必须向追踪器登记,并周期性地同志追踪器它仍在洪流中,追踪器因而跟踪了对等方
追踪器随机地从参与对等方集合中选择若干个,并把这些对等方的IP地址告诉新加入的对等方。新加入的对等方就和这些对等方建立了TCP连接。所有建立了TCP 连接的对等方为“相邻对等方”
任何时刻,每个对等方可能只有某文件的一个文件块子集,而不同的对等方所拥有的文件块子集也不相同。对等方通过TCP周期性向相邻对等方索取它们拥有的文件块列表,并请求自己缺少的文件块。
优先级问题
优先索取哪些文件块
采用最稀有的优先,优先请求副本最少的文件块
应当向哪些相邻对等方发送文件块
选择无障碍的对等方,向当前以最高数据率向自己传输的相邻对等方发送
文件分发的分析
C/S 方式下分发的最短时间
$$
T_{cs}=\max{ \dfrac{NF}{u_s},\dfrac{F}{d_{\min}}}
$$
- $u_s$:上传速率
- $d_{min}$:下载速率
- $$N$$:主机数
- $NF$:主机从服务器得到数据总量
- $F/d_{min}$:下载文件时间
P2P 方式下分发的最短时间
$$
T_{p2p} \ge \max {\dfrac F{u_s} ,\dfrac{F}{d_{\min}},\dfrac{NF}{u_T}}
$$
- $u_T$:整个系统所有主机上传速率之和
在P2P对等方中搜索对象
索引查找技术:分布式散列表 DHT
基于DHT的Chord环
利用散列函数,资源名$K\rightarrow$资源名标识符$KID$;存放结点IP地址$N\rightarrow$结点标识符$NID$
Chord把结点按标识符数值从小到大沿顺时针排列成一个环形覆盖网络。
结点映射规则:
- 结点标识符$NID$按照其标识符值映射到Chord环上对应的点
- 资源标识符$KID$则按照其标识符值映射到与其值最接近的下一个$NID$
加速查找:Chord 环上可以增加一些指针表
时间复杂度:$O(\log_2N)