计算机网络 - 应用层
域名系统
DNS
是一个分布式数据库,提供了主机名和 IP
地址之间相互转换的服务。这里的分布式数据库是指:每个站点只保留它自己的那部分数据。
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。
DNS
可以使用 UDP
或者 TCP
进行传输,使用的端口号都为 53
。大多数情况下 DNS
使用 UDP
进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP
进行传输:
- 如果返回的响应时间超过
512
字节(UDP
最大只支持512
字节的数据) - 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)
文件传送协议
FTP
使用 TCP
进行连接,它需要两个连接来传送一个文件:
- 控制连接:服务器打开端口号
21
等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答 - 数据连接:用来传送一个文件数据
根据 数据连接 是否是服务器端主动建立,FTP
有主动和被动两种模式:
- 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为
20
,客户端的端口号随机,但是必须大于1024
,因为0~1023
是熟知端口号
- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机
主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。
动态主机配置协议
DHCP(Dynamic Host Configuration Protocol)
提供了即插即用的连网方式,用户不再需要手动配置 IP
地址等信息
DHCP
配置的内容不仅是 IP
地址,还包括子网掩码 、网关 IP 地址 。
DHCP
工作过程如下:
- 客户端发送
Discover
报文,该报文的目的地址为255.255.255.255:67
,源地址为0.0.0.0:68
,被放入UDP
中,该报文被广播到同一个子网的所有主机上。如果客户端和DHCP
服务器不在同一个子网,就需要使用中继代理。 DHCP
服务器收到Discover
报文之后,发送Offer
报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个DHCP
服务器提供的信息,因此客户端需要进行选择。- 如果客户端选择了某个
DHCP
服务器提供的信息,那么就发送Request
报文给该DHCP
服务器。 DHCP
服务器发送Ack
报文,表示客户端此时可以使用提供给它的信息。
远程登录协议
TELNET
用于登录到远程主机上,并且远程主机上的输出也会返回。
TELNET
可以适应许多计算机和操作系统的差异,例如不同操作系统中系统的换行符定义。
电子邮件协议
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。
邮件协议包含发送协议和读取协议,发送协议常用 SMTP
,读取协议常用 POP3
和 IMAP
。
1. SMTP
SMTP
只能发送 ASCII
码,而互联网邮件扩充 MIME
可以发送二进制文件。MIME
并没有改动或者取代 SMTP
,二是增加邮件主体的结构,定义了非 ASCII
码的编码规则。
2. POP3
POP3
的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3
可以不删除邮件。
3. IMAP
IMAP
协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP
这种做法可以让用户随时随地地去访问服务器上的邮件。
常用端口
应用 | 应用层协议 | 端口号 | 传输层协议 | 备注 |
---|---|---|---|---|
域名解析 | DNS | 53 | UDP/TCP | 长度超过 512 字节时使用 TCP |
动态主机配置协议 | DHCP | 67/68 | UDP | |
简单网络管理协议 | SNMP | 161/162 | UDP | |
文件传送协议 | FTP | 20/21 | TCP | 控制连接 21,数据连接 20 |
远程终端协议 | TELNET | 23 | TCP | |
超文本传送协议 | HTTP | 80 | TCP | |
简单邮件传送协议 | SMTP | 25 | TCP | |
邮件读取协议 | POP3 | 110 | TCP | |
网际报文存取协议 | IMAP | 143 | TCP |
Web 页面请求过程
1. DHCP 配置主机信息
-
假设主机最开始没有
IP
地址以及其它信息,那么就需要先使用DHCP
来获取。 -
主机生成一个
DHCP
请求报文,并将这个报文放入具有目的端口67
和源端口68
的UDP
报文段中。 -
该报文段则被放入一个具有广播
IP
目的地址(255.255.255.255)和源IP
地址(0.0.0.0)的IP
数据报中。 -
该数据报则被放置在
MAC
帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。 -
连接在交换机的
DHCP
服务器收到广播帧之后,不断地向上分解得到IP
数据报、UDP
报文段、DHCP
请求报文,之后生成DHCP
ACK
报文,该报文包含以下信息:IP
地址、DNS
服务器的IP
地址、默认网关路由器的IP
地址和子网掩码。该报文被放入UDP
报文段中,UDP
报文段又被放入IP
数据报中,最后放入MAC
帧中。 -
该帧的目的地址是请求主机的
MAC
地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了MAC
地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。 -
主机收到该帧后,不断分解得到
DHCP
报文。之后就配置它的IP
地址、子网掩码和DNS
服务器的IP
地址,并在其IP
转发表中安装默认网关。
2. ARP 解析 MAC 地址
-
主机通过浏览器生成一个
TCP
套接字,套接字向HTTP
服务器发送HTTP
请求。为了生成该套接字,主机需要知道网站的域名对应的IP
地址 -
主机生成一个
DNS
查询报文,该报文具有53
号端口,因为DNS
服务器的端口号为53
。 -
该
DNS
查询报文被放入目的地址为DNS
服务器IP
地址的IP
数据报中。 -
该
IP
数据报被放入一个以太网帧中,该帧将发送到网关路由器。 -
DHCP
过程只知道网关路由器的IP
地址,为了获取网关路由器的MAC
地址,需要使用ARP
协议 -
主机生成一个包含目的地址为网关路由器
IP
地址的ARP
查询报文,将该ARP
查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。 -
网关路由器接收到该帧后,不断向上分解得到
ARP
报文,发现其中的IP
地址与其接口的IP
地址匹配,因此就发送一个ARP
回答报文,包含了它的MAC
地址,发回给主机。
3. DNS 解析域名
-
知道了网关路由器的
MAC
地址之后,就可以继续DNS
的解析过程了。 -
网关路由器接收到包含
DNS
查询报文的以太网帧后,抽取出IP
数据报,并根据转发表决定该IP
数据报应该转发的路由器。 -
因为路由器具有内部网关协议(
RIP
、OSPF
)和外部网关协议(BGP
)这两种路由选择协议,因此路由表中已经配置了网关路由器到达DNS
服务器的路由表项。 -
到达
DNS
服务器之后,DNS
服务器抽取出DNS
查询报文,并在DNS
数据库中查找待解析的域名。 -
找到
DNS
记录之后,发送DNS
回答报文,将该回答报文放入UDP
报文段中,然后放入IP
数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。
4. HTTP 请求页面
-
有了
HTTP
服务器的IP
地址之后,主机就能够生成TCP
套接字,该套接字将用于向Web
服务器发送HTTP GET
报文。 -
在生成
TCP
套接字之前,必须先与HTTP
服务器进行三次握手来建立连接。生成一个具有目的端口80
的TCP SYN
报文段,并向HTTP
服务器发送该报文段。 -
HTTP
服务器收到该报文段之后,生成TCP SYN ACK
报文段,发回给主机。 -
连接建立之后,浏览器生成
HTTP GET
报文,并交付给HTTP
服务器。 -
HTTP
服务器从TCP
套接字读取HTTP GET
报文,生成一个HTTP
响应报文,将Web
页面内容放入报文主体中,发回给主机。 -
浏览器收到
HTTP
响应报文后,抽取出Web
页面内容,之后进行渲染,显示Web
页面。