1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-11-02 21:33:44 +08:00

更新应用层

This commit is contained in:
Didnelpsun
2021-08-07 23:11:28 +08:00
parent 1a538b107e
commit 9906cae659
3 changed files with 406 additions and 104 deletions

View File

@@ -35,6 +35,7 @@ SMTP|25
DNS|53
TFTP|69
HTTP|80
POP3|110
SNMP|161
HTTPS|443

View File

@@ -1,2 +1,243 @@
# 应用层
## 网络应用模型
### C/S模型
**例题** 下面关于客户/服务器模型的描述,()存在错误。
Ⅰ.客户端必须提前知道服务器的地址,而服务器则不需要提前知道客户端的地址
Ⅱ.客户端主要实现如何显示信息与收集用户的输入,而服务器主要实现数据的处理
Ⅲ.浏览器显示的内容来自服务器
Ⅳ.客户端是请求方,即使连接建立后,服务器也不能主动发送数据
$A.$Ⅰ、Ⅳ
$B.$Ⅲ、Ⅳ
$C.$只有Ⅳ
$D.$只有Ⅲ
解:$C$。在连接未建立前,服务器在某一个端口上监听。客户端是连接的请求方,客户端必须事先知道服务器的地址才能发出连接请求,而服务器则从客户端发来的数据包中获取客户端的地址。一旦连接建立,服务器就能响应客户端请求的内容,服务器也能主动发送数据给客户端,用于一些消息的通知,如一些错误的通知。所以只有ⅠⅣ错误。
**例题** 下列关于客户/服务器模型的说法中,不正确的是()。
$A.$服务器专用于完成某些服务,而客户机则作为这些服务的使用者
$B.$客户机通常位于前端,服务器通常位于后端
$C.$客户机和服务器通过网络实现协同计算任务
$D.$客户机是面向任务的,服务器是面向用户的
解:$D$。客户机的作用是根据用户需求向服务器发出服务请求,并将服务器返回的结果呈现给用户,因此客户机是面向用户的,服务器是面向任务的。
### P2P模型
## 域名系统
### 域名
**例题** 域名与()具有一一对应的关系。
$A.IP$地址
$B.MAC$地址
$C.$主机
$D.$以上都不是
解:$D$。如果一台主机通过两块网卡连接到两个网络(如服务器双线接入),那么就具有两个地址,每个网卡对应一个$MAC$地址,显然这两个$IP$地址可以映射到同一个域名上。此外,多台主机也可以映射到同一个域名上(如负载均衡),一台主机也可以映射到多个域名上(如虚拟主机)。因此,选项$A$、$B$、$C$和域名均不具有一一对应的关系。
**例题** 下列说法错误的是()。
$A.Internet$上提供客户访问的主机一定要有域名
$B.$同一域名在不同时间可能解析出不同的$IP$地址
$C.$多个域名可以指向同一台主机$IP$地址
$D.IP$子网中的主机可以由不同的域名服务器来维护其映射
解:$A$。$Internet$上提供访问的主机一定要有$IP$地址,而不一定要有域名,$A$错。域名在不同的时间可以解析出不同的$IP$地址,因此可以用多台服务器来分担负载,$B$对。也可以把多个域名指向同一台主机$IP$地址,$C$对。$IP$子网中主机也可以由不同的域名服务器来维护其映射,$D$对。
### 域名解析过程
**例题** 在$DNS$的递归查询中,由()给客户端返回地址。
$A.$最开始连接的服务器
$B.$最后连接的服务器
$C.$目的地址所在服务器
$D.$不确定
解:$A$。在递归查询中,每台不包含被请求信息的服务器都转到其他地方去查找,然后它再往回发送结果,所以客户端最开始连接的服务器最终将返回正确的信息。
**例题** 假设所有域名服务器均采用迭代查询方式进行域名解析。当主机访问规范域名为$www.abc.xyz.com$的网站时,本地域名服务器在完咸该域名解析的过程中,可能发出$DNS$查询的最少和最多次数分别是()。
$A.0,3$
$B.1,3$
$C.0,4$
$D.1,4$
解:$C$。最少情况:当本机$DNS$高速缓存中有该域名的$DNS$信息时,不需要查询任何域名服务器,最少发出0次$DNS$查询。最多情况:因为均采用迭代查询方式,在最坏情况下,本地域名服务器需要依次迭代地向根域名服务器、顶级域名服务器($.com$)、权限域名服务器($xyz.com$)、权限域名服务器($abc.xyz.com$)发出$DNS$查询请求,因此最多发出$4$次$DNS$查询。
## FTP协议
**例题** 当一台计算机从$FTP$服务器下载文件时,在该$FTP$服务器上对数据进行封装的$5$个转换步骤是()。
$A.$比特,数据帧,数据报,数据段,数据
$B.$数据,数据段,数据报,数据帧,比特
$C.$数据报,数据段,数据,比特,数据帧
$D.$数据段,数据报,数据桢,比特,数据
解:$B$。$FTP$服务器的数据要经过应用层、传输层、网络层、数据链路层及物理层。因此,对应的封装是数据、数据段、数据报、数据帧,最后是比特。
## 万维网
### WWW
**例题** 从协议分析的角度,$WWW$服务的第一步操作是浏览器对服务器的()。
$A.$请求地址解析
$B.$传输连接建立
$C.$请求域名解析
$D.$会话连接建立
解:$C$。建立浏览器与服务器之间的连接需要知道服务器的$IP$地址和端口号($80$端口是熟知端口),而访问站点时浏览器从用户那里得到的是$WWW$站点的域名,所以浏览器必须首先向$DNS$请求域名解析,获得服务器的$IP$地址后,才能请求建立$TCP$连接。然后再开始地址解析,将$IP$地址转换为$MAC$地址,建立传输连接,最后建立会话连接。
### HTTP协议
#### HTTP协议概念
**例题** 下面的()协议中,客户机与服务器之间采用面向无连接的协议进行通信。
$A.FTP$
$B.SMTP$
$C.DNS$
$D.HTTP$
解:$C$。请注意这里提问的方式,我们会很可能误选$D$,$HTTP$协议是面向无连接,但是其使用的协议是$TCP$是面向连接的。
#### HTTP连接
**例题** 使用鼠标单击一个万维网文档时,若该文档除有文本外,还有三幅$gif$图像,则在$HTTP/1.0$中需要建立()次$UDP$连接和()次$TCP$连接。
$A.0,4$
$B.1,3$
$C.0,2$
$D.1,2$
解:$A$。$HTTP$在传输层用的是$TCP$,所以无须建立$UDP$连接;$HTTP\,1.0$只支持非持久连接,所以每请求一个对象需要建立一次$TCP$连接,在本题的情景中,共需要传输$1$个基本$HTML$对象和$3$个$gif$对象,所以共需建立$4$次$TCP$连接。
**例题** 以下关于非持续连接$HTTP$特点的描述中,错误的是()。
$A.HTTP$支持非持续连接与持续连接
$B.HTTP/1.0$使用非持续连接,而$HTTP/1.1$的默认方式为持续连接
$C.$非持续连接中对每次请求/响应都要建立一次$TCP$连接
$D.$非持续连接中读取一个包含$100$个图片对象的 $Web$页面,需要打开和关闭$100$次$TCP$连接
解:$D$。非持续连接对每次请求/响应都建立一次$TCP$连接。在浏览器请求一个包含$100$个图片对象的$Web$页面时,服务器需要传输$1$个基本$HTML$文件和$100$个图片对象,因此一共是$101$个对象,需要打开和关闭$TCP$连接$101$次。
#### HTTP协议请求方式
**例题** 仅需$Web$服务器对$HTTP$报文进行响应,但不需要返回请求对象时,$HTTP$请求报文应该使用的方法是()。
$A.GET$
$B.PUT$
$C.POST$
$D.HEAD$
解:$D$。使用$HEAD$进行调试,不会返回请求对象。
## 电子邮件
### SMTP协议
**例题** 不能用于用户从邮件服务器接收电子邮件的协议是()。
$A.HTTP$
$B.POP3$
$C.SMTP$
$D.IMAP$
解:$C$。$B$和$D$都是收邮件的协议,唯一奇怪的是$HTTP$协议,$HTTP$不用于服务器之间的读取邮件,而是使用浏览器从邮件服务器中拉取时使用,在网页中读取邮件就是使用$HTTP$协议。
**例题** 下列关于$SMTP$的叙述中,正确的是()。
Ⅰ.只支持传输$7$比特$ASCII$码内容
Ⅱ.支持在邮件服务器之间发送邮件
Ⅲ.支持从用户代理向邮件服务器发送邮件
Ⅳ.支持从邮件服务器向用户代理发送邮件
A.仅Ⅰ、Ⅱ和Ⅲ
B.仅Ⅰ、Ⅰ和Ⅳ
C.仅Ⅰ、Ⅲ和Ⅳ
D.仅Ⅱ、Ⅲ和Ⅳ
解:$A$。$SMTP$协议不支持邮件服务器向用户代理发送邮件,只能用户代理从邮件服务器中拉取邮件。实际上这种操作也是不被邮件系统支持的。
### POP协议
**例题** 下列关于POP3协议的说法,()是错误的。
$A.$由客户端而非服务器选择接收后是否将邮件保存在服务器上
$B.$登录到服务器后,发送的密码是加密的
$C.$协议是基于$ASCII$码的,不能发送二进制数据
$D.$一个账号在服务器上只能有一个邮件接收目录
解:$B$。使用明文在传输层上传输密码,不进行加密。
### 万维网邮件
**例题** 用$Firefox$在$Gmail$中向邮件服务器发送邮件时,使用的是()协议。
$A.HTTP$
$B.POP3$
$C.P2P$
$D.SMTP$
解:$A$。$Firefox$是浏览器,而$Gmail$是邮箱。在基于万维网的电子邮件中,用户浏览器与$Hotmail$或$Gmail$的邮件服务器之间的邮件发送或接收使用的是$HTTP$,而仅在用户代理向邮件服务器,或邮件服务器之间传送邮件时才使用$SMTP$。

View File

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