6.1、应用层概述
我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP
用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地址来表示目的主机,从域名到IP地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成
如上是一些常见的应用,我们将通过如上应用学习应用层
总结
6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式)
概念
客户/服务器方式(C/S方式)
如上图:主机A正在运行的客户程序称为客户进程,简称为客户。运行客户程序的主机A称为客户计算机,但有时也称为客户。主机B正在运行的服务器程序称为服务器进程,简称为服务器。运行客户程序的主机A称为服务器计算机,但有时也称为服务器。
对等方式(P2P方式)
如上图所示,主机CDEF运行着同一种P2P程序,其中EF,ED和CE互为对等方。举例可以理解为,E的P2P进程正在从F下载文件,并且为D的P2P进程提供下载服务
总结
6.3、动态主机配置协议DHCP
概念
-
互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。
-
这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。
DHCP的作用
在没有DHCP时,我们只有手动给网络中各主机正确配置网络的相关配置信息,才能正常访问Web服务器。但如果要配置的主机数很多,工作量大,就很容易出错
如果我们给网络中添加一台DHCP服务器并配置相关信息,那么主机开机时,就会向DHCP服务器请求自己的网络配置信息自动获取自己的网络配置,这就减少很多工作量
DHCP的工作过程
DHCP 使用客户 - 服务器方式
-
需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文 (DHCP DISCOVER),这时该主机就成为 DHCP 客户。
-
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
-
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池 (address pool) 中取一个地址分配租用给该计算机。DHCP服务器的回答报文叫做提供报文(DHCP OFFER)。
DHCP 工作方式
-
DHCP 使用客户-服务器方式,采用请求/应答方式工作。
-
在DHCP服务器上运行DHCP服务器进程,简称DHCP服务器。在用户主机运行DHCP客户进程,简称DHCP客户
-
DHCP属于应用层协议,其基于 UDP 工作:DHCP报文在运输层会被封装成为UDP用户数据报。DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口。
DHCP交互过程
DHCP客户端启用DHCP后广播发送DHCP发现报文(DHCP DISCOVER)
- 事务ID
- DHCP客户端的MAC地址
封装该报文的IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址代替
目的IP地址为广播地址255.255.255.255,因此该网络的所有设备都会收到该IP数据报。之所以广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器。
对于DHCP客户收到DHCP发现报文后,其应用层没有监听该UDP用户数据报目的端口67进程,因此无法交付DHCP发现报文,只能丢弃。
由于DHCP服务器应用层始终运行DHCP服务器进程,因此会接受DHCP发现报文并做出响应。DHCP服务器收到DHCP发现报文后,层层解封,解封出封装有DHCP发现报文的UDP用户数据报。
DHCP服务器根据DHCP发现报文中封装的DHCP客户端的MAC地址来查找自己的数据库,如果查到匹配信息,则使用这些配置信息来构建并发送DHCP提供报文,如果没有则采用默认配置信息来构建报文并发送
DHCP服务端将广播发送DHCP提供报文(DHCP OFFER)
- 事务ID
- 配置信息:IP地址:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址(使用ARP来确保所选IP地址未被网络中其他主机占用),子网掩码,地址租期,默认网关,DNS服务器
源IP地址:发送DHCP提供报文的DHCP服务器的IP
目的地址:因为目的主机还没分配到IP,所以使用广播地址
对于DHCP客户收到DHCP提供报文后,由于其应用层始终运行DHCP客户进程,因此会接受DHCP提供报文并做出响应。DHCP客户根据DHCP提供报文中的事务ID来判断该DHCP提供报文是否是自己的所请求的报文,若相等则接收
对于DHCP服务器收到DHCP提供报文后,其应用层没有监听该UDP用户数据报目的端口68进程,即DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。
注意:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址时,使用ARP确保所选IP地址未被网络其他主机占有
在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文
DHCP客户端将广播发送DHCP请求报文(DHCP REQUEST)
- 事务ID
- DHCP客户端的MAC地址
- 接收的租约中的IP地址
- 提供此租约的DHCP服务器端的IP地址
源地址:0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器。DHCP客户首先要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址
目的地址:广播地址,这样可以一次性向所有DHCP服务器发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器
在本例中,假设DHCP客户端选择DHCP服务器1作为自己的DHCP服务器,DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户端发送DHCP确认报文
源地址:DHCP服务器1的IP地址
目的地址:广播地址
DHCP客户收到该报文后就可以使用租用的IP地址
注意:DHCP客户在接收DHCP确认报文前使用ARP确保所选IP地址未被网络其他主机占有
DHCP NACK:DHCP否认报文
DHCP中继代理
该网络中主机发送DHCP发现报文时,会被路由器丢弃
使用DHCP中继代理是因为我们不用给每一个网络上都设置一个DHCP服务器,这样会使DHCP服务器的数量太多
总结
6.4、域名系统DNS
概述
域名相比IP地址更容易记忆
在因特网中,用户主机只需要在浏览器中输入某web服务器域名便可访问该服务器所提供的内容
我们可以通过ping命令来观察用户主机和web服务器之间的连通性。
虽然我们ping的是域名,但实际ping的是IP地址,也就是说用户主机把域名转换为了IP地址
对于大多数网络应用,我们可以用简便易记的域名访问目的web服务器,这得益于DNS
我们在浏览器地址栏中输入某web服务器域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址,如果没有找到则向网络中某台DNS服务器查询。
DNS服务器中存储有域名和IP地址映射关系的数据库,当DNS服务器收到DNS查询报文后,在其数据库中进行查询,然后把查询结果发送给用户主机。
此时用户中主机的浏览器可以通过Web服务器的IP地址对其访问了
名称相同的域名其等级未必相同
域名解析过程
习题
总结
6.5、文件传送协议FTP
概念
文件传送协议FTP的应用
FTP采用C/S方式(客户/服务器方式)
FTP客户计算机可将各种类型的文件上传到FTP服务器计算机
FTP客户计算机也可以从FTP服务器计算机下载文件
我们可以在FTP服务器计算机使用第三方FTP服务器软件或者其他软件创建FTP服务器
如上图:我们可以在Windows系统中使用其自带的FTP服务器功能创建一个FTP服务器站点。
我们可以在浏览器中通过该IP地址访问FTP服务器
注意:此处使用ftp协议而非http协议
也可以通过Windows中命令行工具通过该地址访问FTP服务器
也可以通过第三方软件访问ftp服务器
FTP基本工作原理
主动模式
FTP服务器监听熟知端口(端口号为 21),使客户进程能够连接上。
首先,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令(这条连接是FTP客户与服务器之间的命令通道)
FTP服务器使用自己的熟知端口号20与FTP客户的另一个临时端口建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送数据
被动模式
注意两种模式的控制连接在整个会话期间保持打开状态,而数据连接单次数据传输完毕后就关闭
习题
总结
6.6、电子邮件
概念
邮件发送和接收过程
简单邮件传送协议SMTP(Simple Mail Transfer Protocol)的基本工作原理
SMTP客户与服务器之间通过命令与应答的交互方式实现SMT客户发送邮件给SMTP服务器
应答代码220后可能有描述信息
当服务器邮件身份无效时,接受方发回其他代码,如421表示服务不可用
电子邮件的信息格式
Cc:抄送人,其可看可不看可回可不回邮件
邮件读取
基于万维网的电子邮件
习题
总结
6.7、万维网WWW
概念
概述
-
万维网 WWW (World Wide Web) 并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。
-
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。
万维网的工作方式
-
万维网以客户 - 服务器方式工作。
-
浏览器就是在用户计算机上的万维网客户程序。驻留着万维网文档的计算机运行着服务器程序,这个计算机也称为万维网服务器。
-
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
-
在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
万维网应用举例
访问网页
怎样标志分布在整个互联网上的万维网文档?
万维网的文档
我们可以将网页另存下来,保存结果是一个HTML的文件和一个文件夹,文件夹内容如下:
由这些文件编写的万维网文档由浏览器内核负责解释和渲染
接下来我们将结合这些文件组合成一个完善的网页
如图所示,这是一个html文档,当我们打开这个文件时,出现一个页面
我们将css文件和html文件组合在一起,这个网页就变得好看一些了
此时我们在html文件中添加一个按钮,并创建一个js文件添加时间处理函数,页面就有了一个新功能了
当我们点击这个按钮时,触发功能
超文本传输协议HTTP(Hyper Transfer Protocol)
概念和传输过程
-
在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
-
HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
-
每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。
-
一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
-
最后,TCP 连接就被释放了。
RTT:请求和响应所耗费的时间
在HTTP/1.1持续连接的情况下,只有服务器有相关文档,浏览器不同的页面也可以发送请求报文和接收响应报文
HTTP报文格式
HTTP请求报文格式
URL:统一资源定位符字段,也就是网址
HTTP响应报文格式
短语:对状态码的简单描述
如上图所示:浏览器并不会直接显示相应报文,而是以一种人性化的方式显示
使用Cookie在服务器上记录用户信息
万维网缓存与代理服务器
如果该请求有缓存
如果该请求没有缓存
若web缓存的命中率比较高,则会大大减小了该链路上的通信量,因而减少了访问因特网的时延
原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。代理服务器依该字段判断存储在其中的文档是否过期
现有校园网一主机请求一文档
若代理服务器中文档未过期时,文档会发给主机
若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档一致,原始服务器则给代理服务器发送不包含实体主体的响应
若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档不一致,原始服务器则给代理服务器发送封装有该文档的响应报文
习题