应用层
应用层对应用程序的通信提供服务。
特点:
- 没有应用层,就没有网络通信的支持
- 参考模型中唯一不需要为上层服务的一层
- 向参考模型外的用户提供服务
应用程序分类:
- 直接网络应用程序
- 电子邮件、远程登录、web应用、文件传输等;
- 间接网络应用程序
- 依靠重定向器【Redirector】实现网络功能;
- 重定向器是置于应用中的一种小软件;
应用层的重要协议:
两种体系结构:
C/S模型
**服务器:**提供计算服务的设备。
- 永久提供服务(总是在线)
- 永久性访问地址/域名(固定的IP地址)
**客户机:**请求计算服务的主机。
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 相互间一般不直接通信
P2P模型
不存在永远在线的服务器
每个主机既可以提供服务,也可以请求服务任意端系统/节点之间可以直接通讯
节点间歇性接入网络
节点可能改变IP地址
可扩展性好、网络健壮性强
特点:
- 对等方直接通信
- 自扩展性:新的对等方带来新的服务能力与服务需求(可视为服务器)
- 单次通信时各方角色唯一
文件分发时间——P2P与C/S对比:PPT2-71/课本P93
文件分发P2P协议 BitTorrent
▪文件分成256Kb的块(chunk) ▪对等体在洪流(torrent)发送/接收文件块
请求原则:稀缺优先(优先请求副本最少的块)
交换激励:“一报还一报”(tit-for-tat)
请求块: ▪在任何给定的时间,不同的对等点有不同的文件块子集 ▪定期地,Alice向每个peer请求他们拥有的区块列表 ▪Alice从对等节点请求丢失的数据块,最稀有的优先
发送块:以牙还牙 ▪Alice将数据块发送给当前以最高速率向她发送数据块的四个对等体 •其他节点被Alice阻塞(不从她那里接收数据块) •每10秒重新评估前4名 ▪每30秒:随机选择另一个对等体,开始发送块 •“疏通”(unchoked)这个对等体 •新选择的同伴可能会加入前4名
接收进程Addressing:
- 要接受信息,进程必须有**标识符【**identifier】
- 标识符包括IP地址与端口号
- 主机设备有唯一的32位地址
应用层传输服务需求:
- 数据完整性(data integrity)
- 可容忍/不可容忍
- 吞吐量(timing)
- 任意吞吐量/最小吞吐量(带宽敏感)
- 时延(throughput)
- 安全(security)
TCP:
- 可靠传输(握手过程)
- 流量控制
- 拥塞控制
- 面向连接
- 不提供:时延保证、最低吞吐量保证、安全性
UDP:
- 不可靠传输
- 不提供:流量控制、拥塞控制、时延保证、最低吞吐量保证、安全性
- 可以有更快的速度
Sockets套接字
【应用层】与【传输层】间的接口(API);
进程向它的套接字发送/接收消息;
定义了网络上的各种操作;
位于应用层与传输层之间;
可以直接调用TCP与UDP;
由一个IP与一个端口组成一端;
使用Socket
- 建立Socket
- 数据传输(收发)
- 关闭Socket
TCP socket示例:(PPT2-88)
关键步骤:
UDP socket示例:(PPT2-84)
关键步骤:
DNS系统(Domain Name System)
不能使用IP地址标识计算机:
- 计算机可能更换IP地址
- IP地址难以记忆
⬇️让名字映射IP地址
DNS:层次化、分布式数据库系统,提供域名解析服务——将域名映射到资源记录上
- 顶级域名:通用、国家;(必须向ICANN申请)
- 二级域名:(只需向顶级域名运行机构申请)
每个域名为到根的路径;(树状图)
服务器级别:
- 根域名服务器
- 顶级域名服务器
- 权限域名服务器
- 本地域名服务器(充当代理)
域名服务器将域名映射为ip地址;
主域名服务器持有该区域的DNS数据库,次域名服务器同步数据;
根域名服务器最为重要,接受子服务器的求救请求;
DNS选用UDP协议(faster)
域名解析:
- 递归查询
- 迭代查询
域名服务器会对映射关系进行缓存;缓存在一个TTL后失效;
DNS记录(资源记录RR)
RR格式:(name, value, type, ttl)
- ttl:记录生存时间
- type:决定name与value的作用(P89)
DNS报文:(P90)
首部(前十二字节):
标识符:16bit数,用于标识查询,响应使用相同标识;
标志:
▪ query or reply ▪ recursion desired ▪ recursion available ▪ reply is authoritative
问题:name, type fields for a query
回答:RRs in response to query
权威:records for authoritative servers
附加信息:additional “helpful” info that may be used
文件传送协议 FTP
FTP协议:
FTP是基于**客户/服务器的协议。使用TCP**传输协议。 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器。 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
控制连接始终保持;
使用21端口
数据连接保持一会;
主动方式使用TCP 20端口;
被动方式由服务器和客户端自行协商决定(端口>1024);
FTP传输模式
文本模式:ASCII模式,以文本序列传输数据; 二进制模式: Binary模式,以二进制序列传输数据。
电子邮件系统
主要组成:
- 用户代理
- 邮件服务器
- 简单传输协议(SMTP)
协议:
- 发:SMTP
- 收:POP3、IMAP
简单邮件传送协议 SMTP
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。
负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。
- 命令:ASCII text
- 响应:状态码和短语
TCP连接 端口号**25** C/S
SMTP通信三个阶段:
连接建立(握手)→邮件传送(传输信息)→连接释放
特点:
- SMTP使用持久连接
- SMTP要求消息(报头和正文)是7位ASCII码
- SMTP服务器使用
CRLF。CRLF确定消息结束
缺点:
-
SMTP不能传送可执行文件或者其他二进制对象。
-
SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
-
SMTP服务器会拒绝超过一定长度的邮件。
SMTP报文格式:
▪header lines, e.g., • To: • From: • Subject:
▪Body: the “message” • ASCII characters only
💡 对比HTTP与SMTP:HTTP:
HTTP 从 Web服务器向Web客户(通常是一个浏览器)传送文件(也称为对象);
SMTP:
SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。
当进行文件传送时,持续的HTTP 和 SMTP 都使用持续连接。
| HTTP | SMTP |
|---|---|
| 拉协议(pull protocol) | 推协议(push protocol) |
| 不受这种限制 | 要求每个报文(包括它们的体)采用7比特ASCII码格式 |
| 把每个对象封装到它自己的HTTP响应报文中 | 把所有报文对象放在一个报文之中 |
通用因特网邮件扩充 MIME
使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。
邮局协议 POP3
P81
TCP连接 端口号110 C/S
工作方式:
- 下载并删除
- 下载并保留(在服务器)
网际报文存取协议 IMAP
P82
IMAP协议比POP协议复杂。当用户pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
▪将所有消息保存在一个地方:服务器 ▪允许用户在文件夹中组织信息 ▪跨会话保持用户状态
万维网
WWW的构成:
- 资源
- 统一资源定位器URL(资源的唯一标识)
- 一般形式:
<协议>://<主机>:<端口>/<路径>
- 一般形式:
- 通信协议(HTTP)
WWW的传输层使用了TCP
过程:向浏览器(客户端)输入URL——浏览器向DNS域名服务器发起DNS请求——DNS应答返回域名地址——浏览器用域名地址和Web服务器建立TCP连接——浏览器向Web服务器发送HTTP请求,要求获取指定资源文件——web服务器返回被请求文件——释放TCP连接——浏览器显示下载到本地的文件;
超文本传输协议 HTTP
HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
特点:无状态(不保存历史信息)⇒ 解决方案:使用cookie
HTTP采用TCP作为传输层协议,其本身是无连接的;
使用TCP的过程:
- 客户端发起TCP连接(创建套接字)到服务器端口
80 - 服务器接受来自客户端的TCP连接
- HTTP消息(应用层协议消息)在浏览器(HTTPClient)和Web服务器(HTTP服务器)之间交换
- TCP连接关闭
连接方式:
非持久连接
非持续HTTP响应时间:
- 1*RTT:启动TCP连接
- 1*RTT:HTTP请求和相应中少数头部字节的返回
- 1*文件传输时间
总时间:2*RTT+文件传输时间
持久连接
持续HTTP:
- 服务器再发送响应后保持连接打开
- 对于所有被引用的对象,只需要1*RTT
RTT:一个小packet从客户端到服务器再返回的时间
HTTP报文结构:
- HTTP请求报文:
- 请求行:请求方法 /URL (表示请求字段) HTTP版本
- 头部行:
- Host:请求服务器名称
- User-agent:用户代理(浏览器类型)
- Connection:close 传输完毕后需要关闭连接
- Accept-language:用户想得到的语言版本
- HTTP响应报文:
- 状态行:HTTP版本 当前状态是否正常
- 头部行:
- Connection:close 返送报文后关闭连接
- Date:响应报文创建时间
- Server:Web服务器类型
- Content-Length:报文字节数
- Content-Type:报文类型
请求方法:
-
GET用于从服务器获取资源。GET请求通过URL发送参数,服务器响应包含请求的资源内容。
GET请求是幂等的,即多次相同的GET请求会产生相同的结果,不会对服务器状态产生影响。
-
POST用于向服务器提交数据,常用于提交表单数据或上传文件等操作。POST请求将数据作为请求的主体发送给服务器,服务器根据请求处理数据并返回响应。
POST请求不是幂等的,每次请求可能会对服务器状态产生影响。
-
HEAD与GET方法类似,但服务器只返回响应头部,不返回响应体。
HEAD请求常用于获取资源的元数据,如文件大小、修改日期等,而不需要实际的资源内容。
-
PUT(HTTP/1.1新增)用于向服务器上传资源或更新现有资源。
-
DELETE(HTTP/1.1新增)用于删除服务器上的资源。
常见状态码:
200 OK
• request succeeded, requested object later in this msg
301 Moved Permanently
• requested object moved, new location specified later in this msg (Location:)
400 Bad Request
• request msg not understood by server
404 Not Found
• requested document not found on this server
505 HTTP Version Not Supported
Cookies:
组成:
- 在HTTP响应报文中的一个cookie首部行;
- 在HTTP请求报文中的一个cookie首部行;
- 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理;
- 位于Web站点的一个后端数据库
Web缓存器(代理服务器)
- 可以配置浏览器将所有HTTP请求首先定向到Web缓存;
- 如果缓存里有请求对象,则返回给客户浏览器;
- 如果没有,向源服务器请求对象,存储一份副本,并返回给客户浏览器;
Web缓存器既是客户端,又是服务端,通常由ISP安装;
使用原因:
- 减少响应时间;
- 减少机构接入链路到因特网的通信量(降低费用);
- 减低因特网web流量,改善所有应用性能;
案例计算:详见课本P73/PPT 2-26
条件GET
存储在缓存器中的对象副本可能是未更新的;
条件GET方法允许客户端在发送GET请求时附加条件,以确定是否需要从服务器获取最新的资源副本。
If-Modified-Since:该头部字段用于指定一个日期时间,通常是上次获取资源时的时间戳。如果资源的修改时间早于或等于指定的日期时间,表示资源未修改,服务器将返回状态码304 Not Modified,客户端可以使用缓存的资源。如果资源的修改时间晚于指定的日期时间,表示资源已经修改,服务器将返回状态码200 OK和最新的资源内容。
其他
文件传输:
- FTP/TFTP
- 上传/下载
- TCP控制连接(控制进程21)/ TCP数据连接(数据进程20)
远程登录TELNET:
- 其内部视图实际上是一个TCP连接,工作在23端口
- SSH:Secure Shell,工作在22端口,提供安全传输壳
FTP和TELNET的传输层都采用了TCP;