应用层协议

在传输层之上,便是应用层。传输层的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服务器。

而域名解析的过程,有迭代查询和递归查询两种方式:

01

host命令

在linux系统中,可以用 host命令 进行DNS查询,查看一个指定域名的IP,比如要查询实验楼的IP地址:

host www.shiyanlou.com

04

DNS报文

主机向DNS服务器发出的查询叫做DNS报文,大致结构:

03

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和域名的对应记录:

02

在实际上网过程中,域名解析的的优先顺序是:先在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报文的结构:

05

可见报文分为3部分:

  • (1)开始行:用于区分是请求报文还是响应报文,请求报文中开始行叫做请求行,而响应报文中,开始行叫做状态行。在开始行的三个字段之间都用空格分开,结尾处CRLF表示回车和换行。

  • (2)首部行:用于说明浏览器、服务器或报文主体的一些信息。

  • (3)实体主体:请求报文中通常不用实体主体。

请求报文的方法字段是对所请求对象进行的操作,而响应报文的状态码是一个3位数字,分为5类33种:

  • 1xx 表示通知信息,如收到或正在处理。

  • 2xx 表示成功接收。

  • 3xx 表示重定向。

  • 4xx 表示客户的差错,如404表示网页未找到。

  • 5xx表示服务器的差错,如常见的502 Bad Gateway。

学习途径:实验楼

 posted on 2015-04-03 11:25  zhangbz  阅读(1220)  评论(0编辑  收藏  举报