计网复习——应用层
1. 应用层协议特点
- 应用层协议是为了解决某一类应用问题
- 由于网络应用的多样性,应用层的协议也种类繁多
- 应用层的许多协议都是基于客户/服务器方式
- 客户(client)和服务器(server)都是指通信中涉及的两个应用进程
- 客户/服务器方式所描述的是进程之间服务和被服务的关系
- 客户是服务请求方,服务器是服务提供方
2. 套接字编程接口
- 网络子系统作为操作系统的一部分,以应用编程接口(API)的形式向应用程序提供调用接口
- 套接字(socket)是最常用的应用层编程接口
- 经典的socket编程接口采用同步调用方式(又称为阻塞式)
- 例:调用
recv()
时,调用进程将被阻塞,直到收到数据为止
- 例:调用
- Windows这种基于事件驱动的系统中,程序的执行由事件驱动,需要异步事件驱动方式的套接字编程接口
- Microsoft退出WinSock编程接口,在阻塞式调用基础上,增加了异步调用方式
- 在阻塞式调用模式下,WinSock与经典的socket兼容
3. 域名系统DNS
3.1 域名系统概述
- 域名系统DNS(Domain Name System) 是Internet使用的命名系统
- Internet采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS
- 多个域名服务器上运行专门的域名服务器程序,完成域名 → \rightarrow →IP地址的解析
- DNS基于UDP协议实现
- 应用进程需要进行域名解析时,就调用域名解析程序,它成为DNS的一个客户
- 向本地域名服务器发送域名解析请求(UDP报文),其中包含待解析的域名
- 本地域名服务器在查找域名后,返回应答报文,其中包含对应的IP地址
3.2 Internet的域名结构
-
Internet采用层次树状结构的命名方法:
…….三级域名.二级域名.顶级域名
-
顶级域名TLD
-
国家顶级域名:如
.cn
表示中国、.us
表示美国、.uk
表示英国等等 -
通用顶级域名:
-
-
注意:
- 域名不区分大小写
- 域名长度不超过255字符
3.3 域名服务器
-
域名服务器分为四类
- 根域名服务器
- 根域名服务器知道所有顶级域名服务器的域名和IP地址
- 当本地域名服务器无法解析域名时,就求助于根域名服务器
- 顶级域名服务器
- 负责管理在该顶级域名服务器注册所有二级域名
- 权限域名服务器
- 负责一个区(zone)的域名服务器
- 本地域名服务器
- 有时也称为默认域名服务器
- 根域名服务器
-
域名服务器定期把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
-
树状结构的DNS域名服务器
-
主机向本地域名服务器的查询一般采用递归查询
- 如果本地域名服务器不知道被查询域名的IP地址,那么它就以DNS客户的身份,向根域名服务器继续发出查询请求报文
-
本地域名服务器向根域名服务器的查询通常是采用迭代查询
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时
- 要么给出所要查询的IP地址
- 要么告诉本地域名服务器下一步应向哪一个域名服务器查询
- 本地域名服务器进行后续的查询
- 当根域名服务器收到本地域名服务器的迭代查询请求报文时
4. 文件传送协议
- FTP使用客户/服务器方式
- 一个FTP服务器进程可同时为多个客户进程提供服务
- FTP的服务器进程由两大部分组成
- 一个主进程,负责接受新的请求
- 若干个从属进程,负责处理单个请求
- 主进程的工作步骤
- 打开熟知端口(端口号为21),使客户进程能够连接上
- 等待客户进程发出连接请求
- 启动从属进程处理客户进程发来的请求
- 从属进程对客户进程的请求处理完毕后即终止
- 从属进程在运行期间根据需要还可能创建其他一些子进程
- 回到等待状态,继续接受其他客户进程发来的请求
- 主进程与从属进程的处理是并发地进行
- FTP使用2个TCP连接:控制连接和数据连接
- 控制连接
- 在整个会话期间一直保持打开
- FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件
- 数据连接
- 收到FTP客户发送来的文件传输请求后,服务器端的控制进程创建“数据传送进程”和“数据连接”
- 数据传送进程实际完成文件的传送,传送完毕后关闭“数据传送连接”并结束运行
5. 万维网WWW
5.1 万维网概述
- 万维网是分布式超媒体系统,它是超文本系统的扩充
- 要解决的几个问题
- 怎样标识分布在Internet上的万维网文档?——URL
- 用什么协议实现万维网上各种超链的链接?——HTTP
- 如何存储和表示万维网文档?——HTML
- 搜索引擎即根据网页中的链接在网络中获取信息
5.2 统一资源定位符URL
-
URL是对Internet上资源位置和访问方法的一种简洁表示
-
URL的一般形式
-
<主机>为存放资源的主机在Internet中的域名
-
<端口>和<路径>有时可省略。使用http协议时,如省略<端口>,则使用熟知端口号80;如省略<路径>,则值主页
-
URL不区分大小写
5.3 超文本传送协议HTTP
- 基于TCP协议,是万维网上可靠地交换文件的重要基础
- HTTP是面向事务的客户/服务器协议
- HTTP是无状态的
- 服务器不记录客户端的访问状态
- 基本工作原理
- Web的熟知端口号是80,服务器通常在该端口上监听
- 客户端需要请求某个页面时,与服务器建立TCP连接,之后请求传送文件,并进行文件的传送,传送完毕后释放TCP连接
- HTTP/1.1协议使用持续连接
- 服务器发送响应后,在一段时间内保持连接,使客户与服务器可以继续传送后续的HTTP请求报文和相应报文
- 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行
- 目前主流的浏览器都默认支持HTTP/1.1
- HTTP的报文类型:两类报文
- 请求报文——从客户向服务器发送请求报文
- 响应报文——从服务器到客户的回答
- HTTP是面向正文的,报文中的字段都是ASCII码串,因而每个字段的长度都是不确定的
- 报文由三个部分组成,即开始行、首部行和实体主体
- 在请求报文中,开始行就是请求行
- HTTP应答报文的开始行是状态行
- 状态行包括三项内容:HTTP的版本、状态码、解释状态码的简单短语
5.4 万维网的文档
- HTML定义了许多用于排版的命令,即标签
- HTML把各种标签嵌入到万维网的页面中,构成HTML文档
- HTML文档为文本格式
- 浏览器从服务器读取HTML文档后,按照其中嵌入的各种标签,根据显示器尺寸和分辨率显示页面
- 仅当HTML文档是以.html或.htm为后缀时,浏览器才对此文档的各种标签进行解释
5.5 安全的HTTP协议:HTTPS
-
HTTPS:安全的HTTP协议,建立在SSL基础上
-
SSL/TLS已被浏览器广泛支持,很多Web应用利用HTTPS协议实现安全传输
-
HTTPS的熟知端口号为443,而不是80
-
SSL简介
- Secure Socket Layer,为TCP协议提供信息加密和完整性
6. 电子邮件
6.1 概述
- 发送邮件的协议:SMTP
- 早期邮件只支持7bit ASCII编码,1993年提出了MIME标准
- 在邮件首部中说明了数据类型(如文本、声音、图像、视像等),可在邮件中多种类型的数据
- 读取邮件的协议:POP3和IMAP
- 电子邮件系统的两种实体:
- 用户代理UA(User Agent)
- 是用户与电子邮件系统的接口,即电子邮件客户端软件
- 用户代理的功能:撰写、显示、处理和通信
- 邮件服务器
- 用于发送和接收邮件,并向发信人报告传送结果(已交付、被拒绝、丢失等)
- 邮件服务器按照客户/服务器方式工作
- 使用发送和读取两个不同的协议,即发送邮件的SMTP协议和客户端读取邮件的POP3协议
- 一个邮件服务器既可以作为客户,也可以作为服务器
- 用户代理UA(User Agent)
6.2 简单邮件传送协议SMTP
- 简介
- SMTP规定了两个互相通信的SMTP进程之间应如何交换信息
- SMTP使用客户/服务器方式
- 负责发送邮件的SMTP进程就是SMTP客户
- 负责接收邮件的SMTP进程就是SMTP服务器
- SMTP定义了14条命令和21种应答信息
- 每条命令用4个字母组成
- 每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附上)简单的文字说明
- SMTP通信的三个阶段
- 连接建立:连接在发送主机的SMTP客户和接收主机的SMTP服务器之间建立,不使用中间邮件服务器
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP释放TCP连接
6.3 电子邮件的信息格式
- 一个电子邮件分为信封和内容两大部分
- RFC 822只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则由用户自由撰写
- 首部中主要字段
- To:后面填入一个或多个收件人的e-mail地址
- Subject:邮件的主题,反映了邮件的主要内容
- Cc:抄送,表示给某人发送一个邮件副本
- From:发信人的电子邮件地址
- Date:发信日期
- Reply-to:对方回信地址
6.4 MIME
-
SMTP的问题
- 只能传送7位ASCII码
- 不能传送二进制数据:程序、图片、音乐、东方语言、……
-
MIME的思路
- 继续使用目前的[RFC 822]格式
- 对二进制数据进行编码,将其转换为7位ASCII码
- 邮件首部中增加字段,定义数据类型和编码规则
-
MIME新增了5种头部字段
-
传输编码规则
- base64:又称为Radix-64(基数64转换),原始二进制数据中的每6bit被映射为8bit(ASCII字符)
- quoted-printable:原始二进制数据的8bit表示为2个16进制数,前加"="
以上部分内容引自课件和《计算机网络(第7版)》,如有侵权,请及时联系我删除!