计算机网络-应用层
计算机网络慕课地址:https://www.bilibili.com/video/BV1c4411d7jb?p=67
1- 应用层概述
在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP。
用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地址来表示目的主机,从域名到IP地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成。
1.1 常见的应用
1.2 小结
2- 客户/服务器方式(C/S方式)和对等方式(P2P方式)
2.1 基本概念
2.2 客户/服务器方式(C/S方式)
2.3 对等方式(P2P方式)
2.4 总结
3- 动态主机配置协议DHCP
3.1 基本概念
- 互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。
- 这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。
3.2 DHCP的作用
在之前,如果要正常访问Web服务器,需要该主机手动配置网络的相关配置信息。
如果我们给网络中添加一台的DHCP服务器,在该服务器中设置好可为网络中其他各主机配置的网络配置信息。网络中各主机开机后自动启动DHCP程序,向DHCP服务器请求自己的网络配置信息。网络中的各主机就都可以从DHCP服务器自动获取网络配置信息,而不用手工参与。
3.3 DHCP的工作过程
DHCP 使用客户 - 服务器方式
DHCP使用客户/服务器方式,在DHCP服务器上运行DHCP服务器进程,也可简称为DHCP服务器,在用户主机上运行DHCP客户进程,也可以简称为DHCP客户。
DHCP是TCP/IP协议体系应用层中的协议,它使用运输层的UDP所提供的服务。DHCP报文在运输层会被封装成为UDP用户数据报。
DHCP 工作方式
DHCP 使用客户-服务器方式,采用请求/应答方式工作。DHCP 基于 UDP 工作(DHCP报文在运输层会被封装成为UDP用户数据报),DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口。这两个UDP端口都是熟知端口,封装有DHCP报文的UDP用户数据报,在网络层会被封装成IP数据报,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,例如封装成以太网帧。
3.4 DHCP交互过程
步骤流程1
- 当启动主机的DHCP后,DHCP客户将广播发送DHCP发现报文,封装该报文的IP数据报的源IP地址为(0.0.0.0),这是因为主机目前还未分配到IP地址。因此使用该地址来代替。目的IP地址为广播地址(255.255.255.255),之所以进行广播发送,是因为主机现在并不知道网络中有哪些DHCP服务器,它们的IP地址各是什么。由于是广播的IP数据报,因此网络中的所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP发现报文的UDP用户数据报。
- 对于DHCP客户,其应用层没有监听该UDP用户数据报目的端口67的进程,也就是DHCP服务器进程,因此无法交付DHCP发现报文,只能丢弃。而对于DHCP服务器,其应用层始终运行着DHCP服务器进程,因此会接受该DHCP发现报文并作出响应。DHCP报文的格式比较复杂,对于DHCP发现报文,我们只需要知道,其内部封装有事物ID和DHCP客户端的MAC地址即可。
- DHCP服务器收到DHCP发现报文后,根据其中封装的DHCP客户端的MAC地址来查找自己的数据库,看是否针对该MAC地址的配置信息。如果有,则使用这些配置信息来构建并发送DHCP提供报文,如果没有,则采用默认配置信息来构建并发送DHCP提供报文。
步骤流程2
- 封装该报文的IP数据报的源IP地址为DHCP服务器的IP地址,目的IP地址仍为广播地址。仍然使用广播地址的原因是,主机目前还没有配置IP地址,为了使主机可以收到,只能发送广播。网络中的所有设备都会收到该IP数据报,并对其层层解封,解封出封装有DHCP提供报文的UDP用户数据报。对于DHCP服务器,其应用层没有监听该UDP用户数据报目的端口68的进程也就是DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。
- 而对于DHCP客户,其应用层运行着DHCP客户进程,因此会接受该DHCP提供报文并作出相应处理。DHCP客户会根据DHCP提供报文中的事物ID来判断该报文是否是自己所请求的报文。如果该事物ID与自己之前发送的DHCP发现报文中封装的事物ID相等,就表明这是自己所请求的报文,就可以接受该报文,否则就丢弃该报文。
- DHCP提供报文中还封装有配置信息,例如IP地址、子网掩码、地址租期、默认网关、DNS服务器等。需要注意的是,DHCP服务器从自己的IP地址池中退奥轩待租用给主机的IP地址时,会使用ARP来确保所选IP地址未被网络中其他主机占用。
步骤流程3
- 在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般来说,选择先到的哪个。并向所选择的DHCP服务器发送DHCP请求报文,封装该报文的IP数据报源IP地址仍为(0.0.0.0),因为此时DHCP客户才从多个DHCP服务器中,挑选一个作为自己的DHCP服务器,它首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址,目的IP地址仍为广播地址。
- 这样做的目的是,不同向网络中的每一个DHCP服务器单播发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器,DHCP请求报文中封装有事物ID,DHCP客户端的MAC地址,接受的租约中的IP地址,提供此租约的DHCP服务器端的IP地址等信息。
步骤流程4
- 在本例中,假设DHCP客户选择DHCP服务器1作为自己的DHCP服务器,并且DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户发送DHCP确认报文,封装该报文的IP数据报的源IP地址为DHCP服务器1的IP地址。目的IP地址仍为广播地址。
- DHCP客户收到确认报文后,就可以使用所租用的IP地址,需要注意的是,在使用租用到的IP地址之前,主机还会使用ARP检测该IP地址是否已被网络中其他主机占用。若被占用,DHCP客户会给DHCP服务器发送DHCP谢绝报文,来谢绝IP地址租约,并且重新发送DHCP发现报文,如果没有被占用,则可以使用租约中的IP地址与网络中的其他主机通信了。
步骤流程5
- 当租用期过了一半时,DHCP客户会向DHCP服务器发送DHCP请求报文,来请求更新租用期。封装该报文的IP数据报的源IP地址为DHCP客户之前租用到的IP地址,目的IP地址为DHCP服务器1的地址。DHCP服务器如果同意,则发回DHCP确认报文。这样,DHCP客户就得到了新的租用期,DHCP服务器如果不同意,则发回DHCP否认报文。
- 这时,DHCP客户必须立即停止使用之前租用的IP地址,并重新发送DHCP发现报文来重新申请IP地址。DHCP服务器如果未做出响应,则在租用期过了87.5%时,DHCP客户必须重新发送DHCP请求报文,然后继续等待DHCP服务器可能做出的反应。若DHCP服务器未做出响应,则当租用期到期后,DHCP客户必须立即停止使用之前租用的IP地址,并且重新发送DHCP发现报文来重新申请IP地址。DHCP客户可以随时提前终止DHCP服务器所提供的租用期,这时只需要向DHCP服务器发送DHCP释放文段即可。
- 需要注意的是,DHCP服务器在给DHCP客户挑选IP地址时,DHCP服务器在给DHCP客户挑选IP地址,使用ARP来确保所挑选的IP地址未被网络中其他主机占用。而DHCP客户在使用所租用的IP地址之前,也会使用ARP来检测该IP地址是否已被网络中其他主机占用。
3.5 DHCP中继代理
- 该网络中的主机广播发送DHCP发现报文,但是广播报文不会被路由器转发,而是丢弃。解决方法是给该路由器配置DHCP服务器的IP地址。并使之成为DHCP中继代理。这样,该网络中的各主机,就可以通过DHCP来自动获取到网络配置信息了。当该路由器收到广播的DHCP发现报文后,会将其单播转发给DHCP服务器。
- 使用DHCP中继代理的主要原因是,我们并不愿意在每一个网络上都设置一个DHCP服务器,因为这样会使DHCP服务器的数量太多。
3.6 小结
4- 域名系统DNS
4.1 基本概念
因特网中的某台主机要访问某台Web服务器,我们只需要在用户主机中运行某个浏览器软件,在其地址栏中输入要访问的Web服务器的域名,并且按下回车键。
即可访问到Web服务器所提供的内容。
我们在用户主机中使用ping命令,来测试一下用户主机与Web服务器的连通性。我们通过Ping的是Web服务器的域名,但是ping命令实际上ping的是Web服务器的IP地址,即使不使用域名也可以通过IP地址来寻址目的主机。但是域名与IP地址相比,便于人们给予。因此,对于大多数网络应用,我们一般使用域名来访问目的主机,而不是直接使用IP地址来访问。
4.1.1 流程分析
当我们浏览器地址栏中输入某个Web服务器的域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址,如果没有找到,则会向网络中的某台DNS服务器查询。
DNS服务器中有域名和IP地址映射关系的数据库,当DNS服务器收到DNS查询报文后,在其数据库中进行查寻,之后将查寻结果发送给用户主机。用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。
因特网是否可以只使用一台DNS服务器?
不行!!!
4.1.2 域名结构
域名分类
注意,名称相同的域名其等级未必相同!!!
因特网的域名空间
4.1.3 小结
4.2 域名解析过程
递归查询
假设图中的主机想知道域名y.abc.com的IP地址。主机首先向其本地域名服务器进行递归查询。本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。当查询到域名所对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。
迭代查询
主机首先向其本地域名服务器进行递归查询,本地域名服务器采用迭代查询。它先向某个根域名服务器查询,根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。本地域名服务器向顶级域名服务器进行迭代查询,顶级域名服务器告诉本地域名服务器,下一次应该查询的权限域名服务器的IP地址,本地域名服务器向权限域名服务器进行迭代查询。权限域名服务器告诉本地域名服务器所查询的域名的IP地址。本地域名服务器最后把查询结果告诉主机,由于递归查询对于被查询的域名服务器负担太大。
4.2.1 提高DNS查询效率
4.2.2 小结
5- 文件传送协议FTP
5.1 基本概念
5.2 文件传送协议FTP的应用
FTP采用C/S方式(客户/服务器方式)
FTP客户计算机可将各种类型的文件上传到FTP服务器计算机。
TP客户计算机也可以从FTP服务器计算机下载文件。
注意条件
FTP服务器可能需要一台高性能、高可靠性的服务器计算机,也可能只需要一台普通的个人计算机即可。
5.3 访问FTP服务器
浏览器方式
假设FTP客户计算机与FTP服务器计算机处于同一个局域网中,我们在FTP服务器计算机中创建FTP服务器。可以使用第三方的FTP服务器软件,也可以使用操作系统自带的FTP服务器软件。我们可以在FTP客户计算机中使用浏览器软件,通过该地址来访问FTP服务器。需要注意的是,这里使用的是文件传送协议FTP,而不是浏览器最常用的超文本传送协议HTTP。
自带命令行工具
使用windows系统自带的命令行工具,通过该地址来访问FTP服务器。
FTP服务器具体用途
5.4 FTP基本工作原理
前置步骤
FTP服务器监听熟知端口号21,FTP客户随机选择一个临时端口号与其建立TCP连接。这条TCP连接用于FTP客户与服务器之间,传输FTP的相关控制命令。这条TCP连接是FTP客户与服务器之间的命令通道。当有数据要传输时,FTP客户通过命令通道告知FTP服务器,来与自己的另一个临时端口号建立TCP连接,即建立数据通道。
主动模式
这是FTP客户随机选择的另一个端口号,FTP服务器使用自己的熟知端口号20与其建立TCP连接。这条TCP连接用于FTP客户与服务器之间传送文件。也就是说,这条TCP连接是FTP客户与服务器之间的数据通道。控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令。数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭。由于在建立数据通道时,FTP服务器主动连接FTP客户,因此称为"主动模式"。
被动模式
对于FTP客户与服务器之间命令通道的建立,它与主动模式并没有什么不同。不同之处在于,当有数据要传输时,FTP客户通过命令通道通知FTP服务器开启某个协商好的临时窗口,被动等待来自FTP客户的TCP连接以建立数据通道。这是FTP服务器使用的与FTP客户协商好的临时端口号。FTP客户发起与FTP服务器的TCP连接以建立数据通道,由于在建立数据通道时,FTP服务器被动等待FTP客户的连接,因此称为被动模式。
6- 电子邮件
6.1 基本概念
基本构建
6.2 邮件发送和接收过程
我们更进一步说明上述的邮件发送和接收过程。发送方的用户代理作为SMTP客户,与发送方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接使用SMTP协议来发送邮件给发送方邮件服务器。发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器进行TCP连接,然后基于这条连接,使用SMTP协议来发送已收到的待转发邮件给接收方邮件服务器。接收方的用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器进行TCP连接,然后基于这条连接,使用POP3协议从接收方邮件服务器读取邮件。
6.3 简单邮件传送协议SMTP
基本工作原理
流程步骤1
发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中的SMTP客户。会与接收方邮件服务器中的SMTP服务器进行TCP连接,端口号为25。之后,STMP客户就可以基于这条TCP连接,给SMTP服务器发送SMTP命令,共14条。SMTP服务器也会给SMTP客户发送相应的应答,共21种。SMTP客户与服务器之间通过命令与应答的交互方式,最终实现SMTP客户发送邮件给SMTP服务器。
流程步骤2
当TCP连接建立成功后,SMTP服务器会主动推送服务就绪应答给SMTP客户。应答代码220后面可能能跟有描述信息。SMTP客户收到该应答后,向服务器表明身份,告知自己SMTP服务器的域名。具体命令为HELO,其后为命令参数,SMTP服务器如果认为身份有效,则发回应答代码250;否则,发回其他代码,SMTP客户收到该应答后,使用命令MALL FROM来告诉服务器邮件来自何方。SMTP服务器若认为合理,则发回应答代码250;否则,发回其他错误代码。SMTP客户收到该应答后,使用命令RCPT TO,来告诉服务器邮件去往何地,也就是收件人邮箱。
流程步骤3
SMTP服务器中如果有该收件人邮箱,则发回应答代码250;否则,发回其他错误代码。SMTP客户收到该应答后,使用DATA命令来告诉服务器,自己准备发送邮件内容了。SMTP服务器如果准备好接收,发回应答代码354;否则,发回其他错误代码。SMTP客户收到该应答后,就向服务器发送邮件内容。SMTP客户发送完邮件内容后,还要发送结束符。STMP服务器如果收件成功,则发回应代码250;否则,发回其他错误代码。SMTP客户收到该应答后,使用命令QUI向服务器请求断开连接。SMTP服务器发回应答代码221,表示接受请求并且主动断开连接。
6.4 电子邮件的信息格式
6.5 邮件读取
6.6 基于万维网的电子邮件
6.7 小结
7- 万维网WWW
7.1 基本概念
访问网页
在用户主机中使用浏览器,访问万维网服务器,也就是访问该网站。在浏览器的地址栏中输入官方网站的域名,并且按下回车键后,浏览器将发送请求报文给服务器。服务器收到请求报文后执行相应操作,然后给浏览器发回响应报文。浏览器解析并且渲染响应报文中的内容,这样就可以看到网站首页了。
怎样标志分布在整个互联网上的万维网文档?
万维网的文档
7.2 超文本传输协议HTTP
7.2.1 概念和传输过程
步骤流程
可以看成是用户主机中的浏览器进程,即客户进程与服务器中的服务器进程基于因特网的通信。浏览器进程首先发起与服务器进程的TCP连接,使用熟知端口号80。基于这条已建立好的TCP连接,浏览器进程向服务器进程发送HTTP请求报文,服务器进程收到后,执行相应操作,然后给浏览器进程发回HTTP响应报文。
基本特点
7.2.2 HTTP报文格式
HTTP请求报文格式
HTTP响应报文格式
状态显示
7.3 在服务器上记录用户信息
步骤流程
- 用户主机中的浏览器进程,首先与万维网服务器中的服务器进程,建立TCP连接。当用户的浏览器进程初次向服务器进程发送HTTP请求报文时候,服务器进程就会为其产生一个唯一的Cookie识别码,并且以此为索引在服务器的后端数据库中的创建一个项目,用来记录该用户访问该网站的各种信息。接着就会给浏览器进程发回HTTP响应报文。
- 在响应报文中,包含有一个首部字段为Set-Cookie的首部行,该字段的取值就是Cookie识别码。当浏览器进程收到该响应报文后,就在一个特定的Cookie文件中添加一行,记录该服务器的域名和Cookie识别码。当用户再次使用该浏览器访问这个网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie首部行中。服务器根据Cookie识别码就可以识别出该用户,并且返回该用户的个性化网页。
7.4 万维网缓存与代理服务器
7.4.1 基本概念
7.4.2 具体流程
流程步骤1
当校园网中的某台主机要访问因特网上的原始服务器时,首先会向校园网中的代理服务器发送请求,如果代理服务器中存放有所请求的对象,则代理服务器会向该主机发回包含所请求对象的响应。
流程步骤2
如果代理服务器中没有所请求的对象,则代理服务器会向因特网上的原始服务器发送请求,原始服务器将包含有所请求对象的响应发回给代理服务器,代理服务器将该响应存入Web缓存,然后给主机发回该响应。
流程步骤3
可以想象,如果Web缓存的命中率比较高,则路由器R1和R2之间的链路上的通信量将大大减少,因而可以减少校园网各主机访问因特网的时延。
流程步骤4
假设原始服务器中的文档1已被更改。之后,校园网中的某台主机要请求文档2。它首先向校园网中的代理服务器发送请求,代理服务器找到文档1后,将其封装在响应报文中发回给主机。主机所请求到的文档与原始服务器中的文档就不一致了。实际上,原始服务器通常会为每个响应的对象,设定一个修改时间字段和一个有效日期字段。当校园网中的某台主机要请求原始服务器中的该文档时,它首先向校园网中的代理服务器发送请求,若代理服务器中的该文档未过期,则代理服务器将其封装在响应报文中发回给主机。
流程步骤5
若代理服务器中的该文档已经过期,则代理服务器会向因特网上的原始服务器发送请求,在请求报文中包含有一个首部字段为If-modified-since的首部行。该字段的取值就是该文档的修改日期。原始服务器根据该文档的修改日期。就可以判断出代理服务器中存储的该文档是否与自己存储的该文档一致。如果一致,则代理服务器发送不包含实体主体的响应,状态码为304,短语为Not Modified;代理服务器重新更新该文档的有效日期,然后将该文档封装在响应报文中发回给主机。
流程步骤6
如果不一致,则给代理服务器发送封装有该文档的响应报文,这样代理服务器就更新了该文档,然后将更新后的该文档封装在响应报文中发回给主机。