应用层概述
应用层时计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的;
网络应用模型
客户/服务器模型(C/S方式)
P2P模型(对等方式)
动态主机配置协议DHCP
DHCP工作在应用层,基于UDP协议;
-
DHCP的客户端和服务器使用广播方式进行交互,是因为客户端不知道服务器的IP地址,而客户端没执行完DHCP还未被分配IP地址,因此两者之间的通信必须通过广播进行;
-
DHCP使用UDP的原因,也是因为客户端没有具体IP地址,无法使用TCP进行建立连接,只能利用使用UDP进行无连接交互;
-
DHCP发现报文
需要IP地址的DHCP客户端发送DHCP发现报文进行广播,源地址为0.0.0.0
是因为当前主机未被分配IP地址,目的IP地址为广播地址,是因为DHCP客户端不知道当前网络中有几个DHCP服务器和具体IP地址,只好广播发送;DHCP服务器运行有DHCP服务进程,只有其能够正确接收该广播报文;
- DHCP提供报文
DHCP服务器接收DHCP发现报文后,会检查在自己数据库中是否有该MAC地址的配置信息,并发送对应的DHCP提供报文;若没有则发送默认配置信息;DHCP提供报文中目的IP地址仍为广播地址,因为客户端主机仍未配置IP地址;
- DHCP请求报文
在运行有DHCP客户进程的主机会一直监听相应的UDP端口,从广播的DHCP提供报文中获取事务ID,若该事务ID与之前的发现报文中的事务ID相同,则DHCP客户接收该报文,并从中解析出自己的配置信息;可能有多个DHCP服务器同时发送DHCP提供报文,具体看哪个提供报文先到达客户端,就先接收哪一个;
选择相应的DHCP提供报文中的信息后,需要向发送提供报文的DHCP服务器发送DHCP请求报文,征求DHCP服务器的同意,才能够正式使用该IP地址;
- DHCP确认报文
客户端在接收IP地址前,还会再用ARP检查所分配的IP地址是否被占用;
- IP续约
- 地址租用期过半后,DHCP客户会发送DHCP请求报文请求DHCP服务器更新IP地址使用租期,若服务器同意则会发回确认报文;若服务器不同意则会发回拒绝报文,DHCP客户需要重新请求新的IP地址;
- 若DHCP未响应该请求报文,在0.875倍租用期时,DHCP客户端会再次发起DHCP请求报文;
- 若租用期结束,服务器依旧未作出响应,客户端立即停用该IP地址;
此外,DHCP客户也可以随时终止该IP地址的租借;
域名系统DNS
采用分布式的层次树结构的域名结构;
DNS报文使用运输层的UDP协议进行封装,运输层端口号为53
四种域名服务器
根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器
域名解析的过程
本地域名服务器的高速缓存
文件传送协议FTP
FTP的基本工作原理
FTP的主动连接和被动链接是指,FTP客户和服务器进行数据连接时,FTP服务器是主动发起的还是被动等待的;主动模式下FTP服务器使用端口21进行数据连接,被动模式下FTP服务器使用的端口需要和FTP客户进行协商;
主动连接
FTP客户通过控制连接告诉FTP服务器自己开启的临时端口,FTP服务器从端口21主动与FTP客户的临时端口发起连接,因此FTP服务器是主动连接;
被动连接
FTP客户通过控制连接告知FTP服务器要开启某个临时端口等待连接,TCP客户要传送数据时会从自己的临时端口向FTP服务器发起连接,因此FTP服务器是被动连接;
电子邮件
- 电子邮件发送过程的用户代理、邮件服务器和使用协议:
简单邮件传送协议SMTP协议
基于TCP连接,端口号为25;只能传送ASCII码文本
- 电子邮件的内容
电子邮件由信封和内容组成,内容又由首部和主题组成;
- 多用途因特网邮件扩展MIME
在发送非ASCII码数据前,先用MIME协议将其转换为ASCII码文本数据,然后再交付给SMTP进行发送;接收时由MIME进行逆解析得到原本的ASCII码;
邮局协议POP和因特网邮件访问协议IMAP
POP使用数值端口号110,IMAP使用熟知端口号143;
POP不允许用户在邮件服务器上管理自己的邮件;但IMAP允许用户在自己的计算机上操控邮件服务器中的邮箱;
基于万维网的电子邮件
用户浏览器与邮件服务器网站之间使用HTTP协议,而邮件服务器之间使用SMTP协议
万维网
万维网WWW的概念
HTTP超文本传输协议
HTTP的连接方式
- HTTP/1.0 非持续连接
TCP建立连接的第三次握手,使用捎带确认,顺便发送HTTP请求报文。服务器收到请求报文后,要发回HTTP响应报文,其包含了对应的传输请求文档;
- HTTP/1.1 持续连接
HTTP的报文格式
-
HTTP请求报文格式
-
HTTP响应报文格式
第一行是状态行,随后也是首部字段行,实体主体字段可能会使用;
使用Cookie在服务器上记录用户信息
用户浏览器在第一次访问万维网服务器后,就得到服务器发回的唯一Cookie标识符;以后用户浏览器的每次HTTP请求都需要带上这个标识符,以便服务器能够识别用户,从而返回相应的个性化内容;
习题
- HTTP请求报文
请求报文中的Connection指的是非持续性连接,告诉服务器传输完请求文档后就可以关闭连接了;持续连接的Connection字段是keep-alive,表示HTTP服务器发送响应报文后依旧保持着连接;
- HTTP使用持续的非流水线方式工作
在HTTP的工作中,在进行TCP三次握手连接时,第三次握手的确认报文中携带了HTTP请求报文(ACK+HTTP请求),因此在连接建立完成后,会得到HTTP服务器的一次响应,建立连接就已经过去了2RTT了;