1.5 MiB
应用层
应用层对应用程序的通信提供服务。
传输层功能:
- 文件传输、访问和管理。
- 电子邮件。
- 虚拟终端。
- 查询服务与远程作业登陆。
网络应用模型
C/S模型
客户/服务器模型中服务器提供计算服务的设备,而客户指请求计算服务的主机。
服务器的特点:
- 永久提供服务。
- 永久访问地址/域名。
客户机的特点:
- 与服务器通信,使用服务器提供的服务。
- 间歇接入网络。
- 可能使用动态$IP$地址。
- 不能直接与其他客户机通信。
应用:$Web$、$FTP$、电子邮件等。
P2P模型
对等模型也可以看作$C/S$模型的变形
对等模型的特点:
- 不存在永远在线的服务器。
- 每个主机既提供服务也可以提供服务。
- 任意端系统或结点之间可以直接通信。
- 结点间歇接入网络。
- 结点可能改变$IP$地址。
- 扩展性好。
- 网络健壮性强。
- 占用较多内存,影响速度。
DNS
域名系统将域名转换为$IP$地址。域名方便记忆。基于客户/服务器模式,运行在$UDP$上,使用$53$号端口。
域名系统是一个联机分布式的数据库系统,并采用客户/服务器模式。
域名
域名从右到左级别降低,最右边的是顶级域名,如$www.baidu.com$,$com$就是顶级域名,$baidu$就是二级域名,$www$就是三级域名。其实$com$后面应该有一个点,这个点就是根。
- 标号中的英文不区分大小写。
- 标号中除连字符-外不能使用其他的标点符号。
- 每个标号不超过$63$个字符,多标号组成的完整域名最长不超过$255$个字符。
- 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。
顶级域名分为:
- 国家顶级域名:$cn$,$us$等。
- 通用顶级域名:$com$(商业组织),$net$(信息服务提供机构),$org$(非盈利机构),$gov$(政府),$int$(国际组织),$aero$(航空企业),$museum$(博物馆),$travel$(旅游业)等。
- 基础结构域名/反向域名:$arpa$,用于反向域名解析。
二级域名分为:
- 类别域名:$ac$(科研机构),$com$(盈利机构),$edu$(教育机构),$net$(信息服务提供机构),$org$(非盈利机构),$gov$(政府),$mil$(国防机构)。
- 行政区域名:用于省市如$bj$等。
- 自主注册域名,要求全球唯一。
域名服务器
域名到$IP$地址的解析由运行在域名服务器上的程序完成。一个服务器管辖的范围称为区。
- 根域名服务器:
- 知道所有顶级域名服务器域名与$IP$地址。
- 若本地域名服务器不能解析首先交给根域名服务器。
- 一共$13$个根域名服务器,$A$到$M$。
- 用来管辖顶级域,不直接进行地址转换,而是告诉本地域名服务器下一步应该找哪个顶级域名服务器进行查询。
- 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名。
- 权限(授权)域名服务器:
- 负责一个区(域)的域名服务器。
- 每台主机都必须在权限域名服务器上登记。
- 权限域名服务器也可以是本地域名服务器。
- 可以将其管辖的主机名转换为$IP$地址。
- 本地域名服务器:当一个主机发出$DNS$查询请求时,这个请求报文就发送给本地域名服务器,是最近的服务器。
域名解析过程
将域名映射为$IP$地址称为正向解析,把$IP$地址映射为域名称为反向解析。
需要请求时通过本机$DNS$客户端构造一个$DNS$请求报文,以$UDP$数据报方式发送给本地域名服务器。
- 递归查询:本地域名服务器查找根域名服务器,根域名服务器查找顶级域名服务器,顶级域名服务器查找权限域名服务器,最后得到的结果再由权限域名服务器到顶级域名服务器到根域名服务器到本地域名服务器最后到主机。(靠别人)
- 迭代查询:本地域名服务器查找根域名服务器,本地域名服务器查找顶级域名服务器,本地域名服务器查找权限域名服务器。(靠自己)
一般使用递归查询结合迭代查询结合的方式。
- 客户机向其本地域名服务器发出$DNS$请求报文(递归查询)。
- 本地域名服务器收到请求后,查询本地缓存,若有则直接得到,若没有该记录,则以$DNS$客户的身份向根域名服务器发出解析请求报文(迭代查询)。
- 根域名服务器收到请求后,判断该域名属于$.com$域,将对应的顶级域名服务器$dns.com$的$IP$地址返回给本地域名服务器。
- 本地域名服务器向顶级域名服务器$dns.com$发出解析请求报文(迭代查询)。
- 顶级域名服务器$dns.com$收到请求后,判断该域名属于$abc.com$域,因此将对应的授权域名服务器$dns.abc.com$的地址返回给本地域名服务器。
- 本地域名服务器向授权域名服务器$dns.abc.com$发起解析请求报文(迭代查询)。
- 授权域名服务器$dns.abc.com$收到请求后,将查询结果返回给本地域名服务器。本地域名服务器将查询结果保存到本地缓存,同时返回给客户机。
为了解决查询速度过慢,高速缓存可以存储域名与$IP$地址值。
文件传送协议
分为文件传送协议$FTP$和简单文件传送协议$TFTP$。
FTP协议
默认数据传输端口$20$,控制端口$21$。这些端口都是服务器上的,客户端的端口由程序自己分配。
可以指明文件类型与格式,并可以给予存取权限。
- 提供不同种类主机系统之间的文件传输能力。
- $FTP$基于$C/S$模型。用户通过一个客户机程序连接至远程计算机上运行的服务器程序。依照$FTP$协议提供服务,进行文件传输的计算机就是$FTP$服务器,连接$FTP$服务器,遵循$FTP$协议与服务器传送文件的电脑就是$FTP$服务端。
FTP协议工作原理
- 登录(用户名+密码或匿名登录)。
- 使用$TCP$协议提供可靠传输。
- 服务器进程:$1$个主进程与$n$个从属进程提供服务。
为什么有匿名登陆:对于一些公共服务器来说,增加验证阶段就是增加资源开销,减少验证阶段就可以节省资源来更好地服务,使用特殊用户名$anonymous$。
主进程和从属进程的区别:主进程是打开端口,让外部发送的数据可以进来,并且将这些数据逐个分配各从属进程。从属进程则是单独为这些数据服务。
FTP协议连接流程
- 客户端和服务器端先建立$TCP$连接,端口是$21$,称为控制连接。用来传输控制信息,以七位$ASCII$格式传输。
- 然后看情况是主动建立连接还是被动建立连接。
- 主动连接$PORT$是指服务器端主动发送请求和客户端进行连接,此时端口号固定是$20$。
- 被动连接$RASV$是指客户端发送请求和服务器端建立数据传送连接,此时端口号是不确定,有两者协商得到,一般大于$1024$。
- 数据传输完成之后,数据连接断开,控制连接继续保持,直至两边发送断开请求。
数据连接与控制连接都属于从属进行,控制连接始终保持,数据连接只保持一会。
正是因为$FTP$的控制信息是单独使用一个端口,所以称$FTP$的控制信息是带外传送的。
FTP协议传输模式
- 文本模式:$ASCII$模式,以文本序列传输数据。
- 二进制模式:$Binary$模式,以二进制序列传输数据。
TFTP协议
$TFTP$协议了解即可。
特点
- 简单文件传送协议端口号为$69$。
- 每次传输的数据报文中包含$512$字节,最后一次可不足$512$字节。
- 数据报按序编号,从$1$开始。
- 支持$ASCII$码或二进制传输。
- 可对文件进行读写。
- 首部简单。
- 使用$C/S$模型。
- 使用$UDP$数据报。
优点
- 适用于只支持$UDP$协议的环境,可以同时向许多机器下载。
- 占用的内存很小且很容易实现,对于小型计算机或特殊设备非常有利。
缺点
- 需要自己实现差错改正。
- 只支持文件传输而不支持交互。
- 没有很大的命令集,无法列目录,也无法用户身份鉴定。
TFTP协议工作流程
- 客户进程发送一个读/写请求报文给$TFTP$服务器进程,端口号为$69$。
- $TFTP$服务器选择另一个端口和客户进程通信。
- 传输文件长度若正好是$512$的整数倍,则传输完毕后还要发送一个只含有首部而无数据的报文。
- 传输文件长度若不是512的整数倍,则最后一个报文数据部分不满$512$字节,正好作为文件结束标志。
TELNET协议
远程终端协议(终端仿真协议)让用户使用$TCP$连接登录到远地主机。其定义了数据和命令应该如何通过互联网,即网络虚拟终端$NVT$。
现在这个协议很少使用了。
万维网
WWW
- 万维网$WWW$是一个大规模联机式的信息储藏所,是无数个网络结点与网页的集合。
- 是以$C/S$方式工作,浏览器就是客户端,文档所在的主机允许服务器程序。
- 用户可以点击超链接获取资源,是通过超文本传输协议$HTTP$传输。
- 万维网使用超文本标记语言$HTML$使得网页设计者可以从一个页面跳转到另一个页面并能显示页面。
URL
统一资源定位符唯一标识资源,一般形式是:<协议>://<主机>:<端口>/<路径>。
$URL$不区分大小写。
$URL$可以使用$HTTP$也可以使用$FTP$。
HTTP协议
- 超文本传输协议定义了浏览器怎样向万维网服务器请求文档,以及服务器如何传输文档。
- 服务器监听$TCP$运行于$80$端口。
- $HTTP$可以不一次性下载完页面的所有资源,可以只下载文本部分,其他音频视频等待用户下一步请求之后再传输。
HTTP协议工作流程
- 浏览器分析$URL$。
- 浏览器向$DNS$请求解析$IP$地址。
- $DNS$解析出$IP$地址。
- 浏览器与服务器建立$TCP$连接。
- 浏览器发出取文件命令。
- 服务器响应。
- 释放$TCP$连接。
- 浏览器显示。
HTTP协议的特点
- 无状态(即无法记忆用户),如果需要记忆就需要使用$Cookie$,是存储在用户主机的文本协议。
- $HTTP$协议采用$TCP$连接,但是$HTTP$协议本身无连接,即交换$HTTP$报文之前不需要先建立$HTTP$连接。
HTTP协议的连接
$HTTP$连接包括:
- 持久连接$Keep-alive$:
- 非流水线。
- 流水线。
- 非持久连接$Close$。
时间连接较长,每次需要$2RTT+$文档接收时间。
这个图片是非流水线式,如果是流水线则一次性可以发送多个请求。
HTTP协议报文
$HTTP$报文分为请求报文和响应报文,因为其面向文本,所以报文中的每一个字段都是$ASCII$码串。
- 请求报文与响应报文的第一行叫做开始行,用于互相区分。分为请求行和状态行。
- 请求报文的方法是指命令,就是对所请求的对象进行什么操作,如获取/删除等等。
- $URL$就是资源标识符。
- 状态码,表明服务器当前的状态:
- $1xx$表示通知信息的,如请求收到了或正在处理。
- $2xx$表示成功,如接受或知道了。
- $3xx$表示重定向,如要完成请求还必须采取进一步的行动。
- $4xx$表示客户的差错,如请求中有错误的语法或不能完成。
- $5xx$表示服务器的差错,如服务器失效无法完成请求。
- 版本是指使用的是什么版本的$HTTP$协议。
- $CRLF$标识一行的结束,分别为回车和换行。同时,在整个首部行结束时,为了区别首部行和实体主体还会有一行单独的$CRLF$。
- 首部行用于说明浏览器、服务器和报文主体的一些信息。每一行都需要回车和换行,最后还需要一个空行。
- 实体柱体:请求报文一般不用,响应报文也可能没有。
| 方法(操作) | 意义 | 作用 |
|---|---|---|
| HEAD | 请求读取由URL标识的信息的首部 | 服务器可对HTTP报文响应但不返回请求对象,用于调试 |
| GET | 请求读取由URL标识的信息 | 从服务器上获取数据 |
| POST | 给服务器添加信息(如注释) | 向服务器传递数据 |
| CONNECT | 用于代理服务器 | 将服务器作为代理,让服务器代替用户访问其他网页返回返回给用户 |
电子邮件
电子邮件是一种异步通信方式。
电子邮件格式
- 信封:收件人的邮箱(是必须的,关键词$To:$)等。
- 内容:
- 首部:发送人的邮箱;主题(可选,关键词$Subject:$)等。
- 主体:邮件内容。
电子邮件地址:收件人邮箱名@邮箱所在主机的域名。如$didnelpsun@gmail.com$。
电子邮件系统组成结构
应该包括三个部分:用户代理、邮件服务器、电子邮件协议。
用户代理$UA$的四个功能:
- 撰写就是给用户编辑信件的环境。
- 显示就是可以看到自己写的和自己收的信件内容。
- 处理就是对信件进行操作,包括删除,打印,转发等等。
- 通信就是可以将邮件发送到邮件服务器当中,同时可以从邮件服务器当中读取邮件。
邮件服务器的功能:
- 邮件服务器端的发送和接受是指从自己的用户代理处接收邮件,之后向对面的邮件服务器发送邮件。
- 邮件服务器的报告邮件发送结果就是投递是否成功这种情况。
- 邮件服务器既可以作为客户端又可以作为服务器端,使用的是$C/S$方式。
协议:
- 发邮件用的是$SMTP$。
- 收邮件的是$POP3$或者$IMAP$。
SMTP协议
简单邮件传送协议规定了两个互相通信的$SMTP$进程之间应该如何交换信息。
建立在$TCP$连接上,使用的端口号为$25$。
使用$C/S$模型,负责发送邮件的$SMTP$进程就是$SMTP$客户,负责接收邮件的进程就是$SMTP$服务器。
这里$SMTP$客户和服务器不是固定死的,可以也可以成为服务器,服务器也可以成为用户,由发送方和接收方决定,发送方就是客户,接收方就是服务器。
只支持传输$7$比特$ASCII$码内容,不支持二进制文本。
SMTP协议通信
$SMTP$规定了$14$条命令(几个字母)和$21$种应答信息(三位数字代码+简单文字说明)。具体的过程了解就可以。
令发送方邮件服务器为$A$,接收方邮件服务器为$B$。
- 连接建立:
- 发送方将邮件发送给$A$(客户)的邮件缓存中。
- 每隔一段时间$A$就会扫描缓存,如果有邮件就准备使用$SMTP$协议与$25$号发送,与$B$建立$TCP$连接。
- $B$发出应答信息:$220,Service,ready$,表明可以发送。
- 然后$A$向$B$发送一个$HELLO$命令并附上发送方的主机名。
- 如果$B$有能力接收邮件,就应答:$250,OK$。否则就应答:$421,Service,not,available$。
- 邮件发送:
- $A$会向$B$发送一个命令:$MAIL,FORM:$<邮件发送者地址>。
- 如果$B$能接收,就返回:$250,OK$,如果不能接收,就返回不能返回的原因的数字代码和英文说明。
- $A$收到允许发送的命令后,会发送多个$RCPT$命令:$RCPT,TO:$<邮件接收者地址>,表示发送给谁。
- 如果$B$接收到并确认,就返回:$250,OK$,如果$B$不能接收,就返回:$550,No,such,user,here$。
- $A$发送$B$一个$DATA$命令,表示要开始传输数据了。
- $B$返回:$354,start,mail,input;end,with$<$CR$><$LF$>.<$CR$><$LF$>。表示$B$同意传输。
- $A$开始传输数据。
- $A$发送命令:<$CR$><$LF$>.<$CR$><$LF$>表示数据传输已经结束。
- $B$返回:$250,OK$表示明白传输已经结束。
- 连接释放:
- 邮件发完,$A$发送$QUIT$命令表示要释放连接。
- $B$返回:$221$表示同意释放$TCP$连接。
MIME协议
$SMTP$的缺点:
- 不能传送可执行文件或其他二进制对象。
- 仅限于传送$7$位$ASCII$码,不能传送其他非英语国家的文字。
- $SMTP$服务器会拒绝超过一定长度的邮件。
通用因特网邮件扩充协议改善$SMTP$发送数据的缺点,是$SMTP$的功能性扩展。
$MIME$协议已经逐渐开始应用到浏览器当中,通过对不同文件类型用不同的标识符标识,来让浏览器读取通过$MIME$的相关文件。
POP协议
邮局协议现在一般是$POP3$。建立于$TCP$连接上,端口号是$110$,使用$C/S$模型。
工作方式:
- 下载并保存在服务器。
- 下载并删除。
使用明文在传输层上传输密码,不进行加密。
与$SMTP$协议一样基于$ASCII$码,只能传输$ASCII$码,如果要传输非$ASCII$码则必须使用$MIME$。
同一个账户可以有多个邮件接收目录。
IMAP协议
网际报文存取协议比$POP$协议更复杂。
提供创建文件夹,移动邮件、查询邮件等连接命令,从而维护了会话用户的状态信息。
当客户端打开$IMAP$服务器邮箱时,用户可以看到邮件的首部,只有打开某个邮件时才上传到用户本地计算机上。所以适用于低带宽的情况,避免取回不想取回的大数据。
可以在不同地方不同的计算机上随时处理邮件,还可以只读取邮件的一部分。
万维网邮件
此外,随着万维网的流行,目前出现了很多基于万维网的电子邮件,如$Hotmail$、$Gmail$等。这种电子邮件的特点是,用户浏览器与$Hotmail$或$Gmail$的邮件服务器之间的邮件发送或接收使用的是$HTTP$,而仅在不同邮件服务器之间传送邮件时才使用$SMTP$。
DHCP协议
动态主机配置协议用于动态分配$IP$地址、子网掩码与默认网关等,使用客户/服务器方式,客户端与服务端通过广播方式进行交互,基于$UDP$协议(因为没有$IP$地址所以无法建立连接)。
提供即插即用机制,允许地址重用、移动用户加入网络、在用地址续租。
工作流程:
- 主机广播“$DHCP$发现报文”,寻找网络中的$DHCP$服务器,从其中获得一个$IP$地址。
- $DHCP$服务器收到“$DHCP$发现报文”后,广播“$DHCP$提供报文”,其中包括提供$DHCP$客户机的$IP$地址与配置信息。
- $DHCP$客户机收到“$DHCP$提供报文”,接收$DHCP$服务器所提供的相关参数,客户机广播“$DHCP$请求报文”,向$DHCP$服务器请求提供$IP$地址。
- $DHCP$服务器广播“$DHCP$确认报文”,将$IP$地址分配给$DHCP$客户机。