参考书目:《计算机网络(第7版)》:谢希仁——电子工业出版社 《精通Windows Sockets网络开发--基于Visual C++实现》:孙海民——人民邮电出版社
第二章:应用层
一、应用层概述
互联网应用
- 上网玩游戏
- 看网上视频
- 和朋友在微信上聊天
- 在互联网上搜索和查阅各种信息
- 利用互联网的电子邮件相互通信(包括传送各种照片和视频文件)
- …
绝大多数人通过使用互联网而认识了互联网!
应用层协议概述
- 1-4层:解决了计算机网络怎样提供完善的通信服务。
- 5层:通过应用层协议使应用进程使用网络所提供的通信服务。
- 网络应用是计算机网络存在的原因,而应用层正是应用层协议得以存在和网络应用得以实现的地方。
应用层的功能
- 文件传输
- FTP、TFTP、NFS
- 电子邮件
- SMTP、POP3
- WWW应用
- HTTP
- 远程登录
- Telnet、rlogin
- 网络管理
- SNMP
- 名字管理
- DNS
- 多用户游戏
- 专用网络协议
- 网络电话
- 专用网络协议
- 流媒体技术
- 专用网络协议
- 实时视频会议
- 专用网络协议
- P2P文件共享
- 专用网络协议
应用层的具体内容
规定应用进程在通信时遵循的协议
- 许多协议都是基于客户服务器方式。
- 客户(client)和服务器(server)都是指通信中所涉及的两个应用进程,客户是服务请求方,服务器是服务提供方。
- 客户服务器方式描述的是进程之间服务和被服务的关系。
- 应用进程通过调用应用层的服务来完成自身功能。
二、动态主机配置协议DHCP
1.DHCP常规属性
- 协议配置
- IP 地址
- 子网掩码
- 默认路由器的 IP 地址
- 域名服务器的 IP 地址
- DHCP
- 允许计算机用一个消息获取它所需的全部配置信息。
- 允许一台计算机加入新的网络,快速、动态地获取IP地址,而不用手工参与。
- DHCP 使用客户服务器方式
- DHCP 中继代理以单播方式转发发现报文!
- DHCP 中继代理以单播方式转发发现报文!
2.DHCP协议
租用期
临时IP地址称作“租用”地址,有“租用期”的限制。
- 租用期的数值可由 DHCP 服务器设定。
- 可让客户申请并由服务器认可。
- DHCP也可保留一个无限值,允许任意延长“租用期”。
DHCP 协议的工作过程
- DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
- DHCP 客户从 UDP 端口 68发送 DHCP 发现报文。
- 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个 DHCP 提供报文。
- DHCP 客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文。
- 被选择的 DHCP 服务器发送确认报文DHCPACK,进入已绑定状态,并可开始使用得到的临时 IP 地址了。
- 租用期过了一半(T1 时间到),DHCP 发送请求报文 DHCPREQUEST 要求更新租用期。
- DHCP 服务器若同意,则发回确认报文DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。
- DHCP 服务器若不同意,则发回否认报文DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤2)。
- DHCP 客户可随时提前终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可。
三、域名系统DNS
1.DNS常规属性
- DNS
- Domain Name System 域名系统。
- 用来完成域名与IP地址之间的映射。
- 端口号为TCP或UDP的53。
- 许多应用层软件经常直接使用域名系统 DNS。
- 计算机的用户只是间接而不是直接使用域名系统。
因特网的域名结构
- 因特网采用了层次树状结构的命名方法。
- 域名的结构由标号序列组成,各标号之间用点隔开:
- … . 三级域名 . 二级域名 . 顶级域名
- 英文字母和数字组成,不区分大小写。
- 每一个标号不超过63个字符。
- 由多个标号组成的完整域名不超过255个字符。
- … . 三级域名 . 二级域名 . 顶级域名
- 各标号分别代表不同级别的域名。
- 标号的任一后缀也称作域。
因特网的域名空间
注:域名是一个组织在域名空间中的名字,域名树的树叶就是单台计算机的名字。
顶级域名TLD
-
国家顶级域名 nTLD:如: .cn 表示中国,.us 表示美国,.uk 表示英国,等等。
-
通用顶级域名 gTLD:最早的顶级域名是:
.com (公司和企业)
.net (网络服务机构)
.org (非赢利性组织)
.edu (美国专用的教育机构()
.gov (美国专用的政府部门)
.mil (美国专用的军事部门)
.int (国际组织) -
基础结构域名(infrastructure domain):只有一个,即 arpa,用于反向域名解析,因此又称为反向域名。
注:新增加了下列的通用顶级域名 .aero (航空运输企业) .biz (公司和企业) .cat (加泰隆人的语言和文化团体) .coop (合作团体) .info (各种情况) .jobs (人力资源管理者) .mobi (移动产品与服务的用户和提供者) .museum (博物馆) .name (个人) .pro (有证书的专业人员) .travel (旅游业)
域名分配
- 每一级域名控制其下一级域名的分配
- COM和NET顶级域名目前由Verisign公司管理。
- CN顶级域名由中国互联网络信息中心(CNNIC)管理 。
- CN下还预设了com.cn、net.cn、org.cn、bj.cn、sh.cn等二级域名。
- 顶级域名加上左边部分称为二级域名(Second Level Domain,简称SLD)。
- 二级域名加上左边部分称为三级域名。
例1:yahoo.people.com.cn
cn是一级域名
com.cn是二级域名
people.com.cn是三级域名
yahoo.people.com.cn是四级域名
2.域名系统DNS
- 分布式数据库:由许多域名服务器按层次构成。
- 域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
- 每一个拥有域名的组织都必须要有DNS服务器,以提供自己域内已注册主机的域名到IP地址的映射服务。
- 由若干个域名服务器程序完成域名到 IP 地址的解析。
- DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
- 一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。
- 每一个区设置相应的权限域名服务器,保存该区中的所有主机的域名到IP地址的映射。
区的不同划分方法
树状结构的 DNS 域名服务器
域名服务器的四种类型
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器
根域名服务器
-
最高层次的域名服务器、最重要的域名服务器。
-
所有的根域名服务器记录了所有的顶级域名服务器的域名和 IP 地址。
-
本地域名服务器,只要自己无法解析因特网上任何一个域名,就首先求助于根域名服务器。
-
在因特网上共有13 个不同 IP 地址的根域名服务器。
注:1.根域名服务器并不直接把域名直接转换成 IP 地址。2.在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
顶级域名服务器
- 负责管理在该顶级域名服务器注册的所有二级域名。
- 当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
权限域名服务器
- 负责一个区的域名服务器。
- 权限域名服务器通常是主机所在单位的DNS服务器。
- 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
本地域名服务器
- 本地域名服务器对域名系统非常重要。
- 当一个主机发出 DNS 查询请求时,首先查询本机C:\WINDOWS\system32\drivers\etc\hosts DNS数据库文件,如果不成功,则把查询请求报文就发送给本地域名服务器。
- 这种域名服务器有时也称为默认域名服务器。
- 每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。
域名解析过程
- 主机——>本地域名服务器:递归查询。
- 如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文
- 本地域名服务器——>根域名服务器:迭代查询。
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
递归查询
迭代查询
3.DNS工作原理
四、万维网WWW
1.HTTP
HTTP
- HTTP
- Hypertext Transfer Protocol——超文本传输协议。
- 用于传输Internet浏览器使用的普通文本、超文本、音频和视频等数据。
- 使用 TCP 连接进行可靠的传送,端口号为TCP的80。
- HTTP 是面向事务的客户-服务器协议。
- HTTP 1.0 协议是无状态的(stateless)。
- HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
HTTP的工作原理
URL
统一资源定位符 URL (Uniform Resource Locator) :为每个页面命名,唯一地标识该页。
- 形式:
protocal://hostname[:port]/path[;parameters][?query]-
协议:指明使用的协议类型,可以是HTTP、FTP…;
-
服务器地址(端口):hostname[:port],指明服务器的地址和端口,此处端口可选,且不一定是80;
-
页面路径:标识页面在服务器上的位置;
-
可选项:parameters指定由用户提供的可选参数;query是浏览器发送查询请求时发送的可选字符串。
例:http://news.sina.com.cn/c/2004-04-4/10553126043.shtml
-
用户点击鼠标后所发生的事件
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:GET /chn/yxsz/index.htm。
(6) 服务器给出响应,把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。
万维网的工作过程
HTTP 的报文结构
请求报文——从客户向服务器发送请求报文。
响应报文——从服务器到客户的回答。
请求报文
- 报文由三个部分组成,即开始行、首部行和实体主体。在请求报文中,开始行就是请求行。
- “方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
- “URL”是所请求的资源的 URL。
- “版本”是 HTTP 的版本。
响应报文
- 响应报文的开始行是状态行。状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。
- 状态码都是三位数字
- 1xx 表示通知信息的,如请求收到了或正在进行处理。
- 2xx 表示成功,如接受或知道了。
- 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
- 5xx 表示服务器的差错,如服务器失效无法完成请求。
2.FTP
文件传送协议FTP
- 网络中实现文件传输的前提条件
- 两台主机的操作系统可能使用不同的方法来表示文本和数据。
- 两台主机的操作系统可能使用不同的文件命名方法。
- 两台主机的操作系统可能使用不同的目录结构。
- 访问控制方法不同。
FTP的定义
- 文件传输协议用来实现两台主机彼此之间传输文件,它是一个应用层协议。
- 定义分析
- 客户—服务器模式;
一个 FTP 服务器进程可同时为多个客户进程提供服务。
FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求 - 客户机既能上传又能下载;
- 传输层使用TCP协议封装。
- 客户—服务器模式;
FTP的特点
- 它使我们在两台主机之间能够共享程序和数据。
- 它使我们间接地访问了远程主机。
- 它传输数据更安全和可靠。
- FTP 不同于其它客户-服务器结构,它在两台主机之间建立了两种连接:控制连接和数据连接,这两种连接得把命令和数据传输分开,使数据传输更有效。
FTP的工作原理
FTP中控制连接与数据连接的关系
两个不同的端口号
- 由于 FTP 使用了两个不同的端口号
- 数据连接与控制连接不会发生混乱。
- 使协议更加简单和更容易实现。
- 在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
FTP 实现文件传输
-
主动方式(通过PORT命令实现)
- 客户端选择一个临时端口号,然后把这个端口号发送给被动等待连接的服务器。 服务器便与这个临时端口建立一个主动连接。
-
被动方式(通过PASV命令实现)
- 客户端要求服务器首先选择一个端口号。服务器用被动方式与那个端口建立连接。
-
不管主动还是被动模式实现文件传输,FTP中的控制连接与数据连接的实现都是依靠命令与应答来完成的。
命令分类
- 连接命令:允许用户连接到远程主机。
- 文件管理命令:允许用户连接到远程主机的文件系统、浏览远程主机的目录结构,创建新路径和删除文件。
- 数据格式命令
- 端口定义命令:定义数据连接时客户端所需的端口号。
- 文件传输命令
- 其它命令
FTP请求命令
FTP响应命令
FTP 工具
- 客户端
- IE
- Cuteftp
- flashfxp
- 服务器端
- IIS
- Serv-U
3.TFTP
简单文件传送协议TFTP
- 使用客户服务器方式
- 使用 UDP 数据报, 要有自己的差错改正措施
- 只支持文件传输而不支持交互。
- 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
TFTP 的主要特点
- 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。
- 数据 PDU 也称为文件块(block),每个块按序编号,从 1 开始。
- 支持 ASCII 码或二进制传送。
- 可对文件进行读或写。
- 使用很简单的首部。
TFTP 的工作
- 发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。
- 发完数据后在规定时间内收不到确认就要重发数据 PDU。
- 发送确认 PDU 的一方若在规定时间内收不到下一个文件块,也要重发确认 PDU。这样就可保证文件的传送不致因某一个数据报的丢失而告失败。
4.TELNET
远程终端协议TELNET
- Telnet(Telecommunication Network Protocol的缩写,远程登陆)是Internet上用来进行远程访问的重要工具,也是一个仿真终端程序。
- 本地计算机通过网络连接到另一台远程计算机上进行访问,可以使用该远程计算机的硬件、软件数据甚至全部资源。
- 将本地计算机仿真成远程主机的终端,并运行该机提供的各种程序。
网络虚拟终端 NVT 格式
- 客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。
- 服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。
- 向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。
5.电子邮件
- 发送邮件的协议:SMTP
- 读取邮件的协议:POP3 和 IMAP
- MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据。
电子邮件的最主要的组成构件
用户代理 UA
简单邮件传送协议SMTP
- 规定了在两个相互通信的 SMTP 进程之间应如何交换信息。
- 14 条命令:每条命令用 4 个字母组成。
- 21 种应答信息:每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。
传输步骤
- 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
- 邮件传送。
- 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
邮件读取协议POP3 和 IMAP
- 邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。
- POP 也使用客户服务器的工作方式。
- 在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序。
IMAP 协议
- IMAP 也是按客户服务器方式工作,现在较新的是版本 4,即 IMAP4。
- 用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
- 因此 IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。
IMAP 的特点
- IMAP最大的好处就是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
- IMAP 还允许收件人只读取邮件中的某一个部分。例如,收到了一个带有视像附件(此文件可能很大)的邮件。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。
- IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 机上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。
基于万维网的电子邮件
- 电子邮件从 A 发送到网易邮件服务器是使用 HTTP 协议。
- 两个邮件服务器之间的传送使用 SMTP。
- 邮件从新浪邮件服务器传送到 B 是使用 HTTP 协议。
SMTP的缺点
- SMTP 不能传送可执行文件或其他的二进制对象。
- SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。
- SMTP 服务器会拒绝超过一定长度的邮件。
- 某些 SMTP 的实现并没有完全按照[RFC 821]的 SMTP 标准。
MIME的特点
- MIME 并没有改动 SMTP 或取代它。
- MIME 的意图是继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。