应用层协议
在传输层之上,便是应用层。传输层的UDP报文和TCP报文段的数据部分就是应用层交付的数据。
不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题。
本节实验,介绍DNS、FTP、HTTP三个常用的应用层协议。
一、DNS
DNS (Domain Name Service 域名服务) 协议基于UDP,使用端口号53。
由数字组成的IP地址很难记忆,所以我们上网使用网站IP地址的别名——域名。实际使用中,域名与IP地址是对应的,这种对应关系保存在DNS服务器之中。
在浏览器中输入一个域名后,会有DNS服务器将域名解析为对应的IP地址。注意这和网络层的ARP协议的不同之处:DNS提供的是域名与IP地址的对应关系,而ARP提供的是IP地址和MAC地址的对应关系。
DNS服务器
DNS服务器是个分层次的系统:
- (1)根DNS服务器 :全世界共有13台根域名服务器,编号A到M,其中大部分位于美国。
- (2)顶级(TLD)DNS服务器 :负责如 com 、org 、edu 等顶级域名和所有国家的顶级域名(如 cn 、uk 、jp )。
- (3)权威DNS服务器 :大型组织、大学、企业的域名解析服务。
- (4)本地DNS服务器 :通常与我们主机最近的DNS服务器。
而域名解析的过程,有迭代查询和递归查询两种方式:
host命令
在linux系统中,可以用 host命令 进行DNS查询,查看一个指定域名的IP,比如要查询实验楼的IP地址:
host www.shiyanlou.com
DNS报文
主机向DNS服务器发出的查询叫做DNS报文,大致结构:
DNS问答报文的内容,都是IP和域名的对应信息,关于DNS首部和内容 各字段这里不做详细介绍。深入了解,可以先host一个域名,再使用tcpdump抓取报文并解读。
DNS缓存和hosts文件
刚才DNS解析查询过程的图中,共发出了8份DNS报文,这是非常消耗时间的,所以实际应用上使用 DNS缓存 :当一个DNS服务器接收到一个DNS回答后,会将其信息缓存一段时间,当再有一个对相同域名的查询时,便可直接回复。
通过DNS缓存,其实很多查询都只需要本地DNS服务器便可完成。
有“FQ”爱好的同学应该知道hosts文件,其实hosts文件可以看作是一个小型的DNS服务器。
使用命令打开hosts文件:
sudo gedit /etc/hosts
查看文件内容,可以发现里面全是IP和域名的对应记录:
在实际上网过程中,域名解析的的优先顺序是:先在DNS缓存查询,若没有找到记录,再查询hosts文件,若还是没找到记录,再向DNS服务器发出DNS查询报文。
二、FTP
FTP (File Transfer Protocol 文件传输协议) 基于TCP,使用端口号20(数据)和21(控制)。
它的主要功能是减少或消除在不同操作系统下处理文件的不兼容性,以达到便捷高效的文件传输效果。
- FTP只提供文件传输的基本服务,它采用 客户端—服务器 的方式,一个FTP服务器可同时为多个客户端提供服务。
- 在进行文件传输时,FTP的客户端和服务器之间会建立两个TCP连接:21号端口建立控制连接,20号端口建立数据连接。
- FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。
三、HTTP
HTTP (HyperText Transfer Protocol 超文本传输协议) 基于TCP,使用端口号80或8080。
每当你在浏览器里输入一个网址或点击一个链接时,浏览器就通过HTTP协议将网页信息从服务器提取再显示出来,这是现在使用频率最大的应用层协议。
这个原理很简单:
- 点击一个链接后,浏览器向服务器发起TCP连接;
- 连接建立后浏览器发送HTTP请求报文,然后服务器回复响应报文;
- 浏览器将收到的响应报文内容显示在网页上;
- 报文收发结束,关闭TCP连接。
HTTP报文会被传输层封装为TCP报文段,然后再被IP层封装为IP数据报。HTTP报文的结构:
可见报文分为3部分:
- (1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处CRLF表示回车和换行。
- (2)首部行:用于说明浏览器、服务器或报文主体的一些信息。
- (3)实体主体:请求报文中通常不用实体主体。
请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个3位数字,分为5类33种:
- 1xx 表示通知信息,如收到或正在处理。
- 2xx 表示成功接收。
- 3xx 表示重定向。
- 4xx 表示客户的差错,如404表示网页未找到。
- 5xx表示服务器的差错,如常见的502 Bad Gateway。
学习途径:实验楼