计算机网络——应用层

165 阅读12分钟

应用层


应用层对应用程序的通信提供服务。

特点:

  1. 没有应用层,就没有网络通信的支持
  2. 参考模型中唯一不需要为上层服务的一层
  3. 向参考模型外的用户提供服务

应用程序分类:

  • 直接网络应用程序
    • 电子邮件、远程登录、web应用、文件传输等;
  • 间接网络应用程序
    • 依靠重定向器【Redirector】实现网络功能;
    • 重定向器是置于应用中的一种小软件;

应用层的重要协议:

FTP SMTPPOP3 HTTP DNS

两种体系结构:

C/S模型

**服务器:**提供计算服务的设备。

  1. 永久提供服务(总是在线)
  2. 永久性访问地址/域名(固定的IP地址)

**客户机:**请求计算服务的主机。

  1. 与服务器通信,使用服务器提供的服务
  2. 间歇性接入网络
  3. 可能使用动态IP地址
  4. 相互间一般不直接通信

P2P模型

不存在永远在线的服务器

每个主机既可以提供服务,也可以请求服务任意端系统/节点之间可以直接通讯

节点间歇性接入网络

节点可能改变IP地址

可扩展性好、网络健壮性强

特点:

  • 对等方直接通信
  • 自扩展性:新的对等方带来新的服务能力与服务需求(可视为服务器)
  • 单次通信时各方角色唯一

文件分发时间——P2P与C/S对比:PPT2-71/课本P93

Untitled.png

文件分发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

  1. 建立Socket
  2. 数据传输(收发)
  3. 关闭Socket

TCP socket示例:(PPT2-88)

Untitled 1.png

Untitled 2.png

关键步骤:

Untitled 3.png

UDP socket示例:(PPT2-84)

Untitled 4.png

Untitled 5.png

关键步骤:

Untitled 6.png

DNS系统(Domain Name System)

不能使用IP地址标识计算机:

  • 计算机可能更换IP地址
  • IP地址难以记忆

⬇️让名字映射IP地址

DNS:层次化、分布式数据库系统,提供域名解析服务——将域名映射到资源记录上

  • 顶级域名:通用、国家;(必须向ICANN申请)
  • 二级域名:(只需向顶级域名运行机构申请)

每个域名为到根的路径;(树状图)

服务器级别:

  • 根域名服务器
  • 顶级域名服务器
  • 权限域名服务器
  • 本地域名服务器(充当代理)

域名服务器将域名映射为ip地址;

主域名服务器持有该区域的DNS数据库,次域名服务器同步数据;

根域名服务器最为重要,接受子服务器的求救请求;

DNS选用UDP协议(faster)

域名解析:

  • 递归查询

Untitled 7.png

  • 迭代查询

Untitled 8.png

域名服务器会对映射关系进行缓存;缓存在一个TTL后失效;

DNS记录(资源记录RR)

RR格式:(name, value, type, ttl)

  • ttl:记录生存时间
  • type:决定name与value的作用(P89)

DNS报文:(P90)

Untitled 9.png

首部(前十二字节):

标识符: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客户端

Untitled 10.png

控制连接始终保持;

使用21端口

数据连接保持一会;

主动方式使用TCP 20端口;

被动方式由服务器和客户端自行协商决定(端口>1024);

FTP传输模式

文本模式:ASCII模式,以文本序列传输数据; 二进制模式: Binary模式,以二进制序列传输数据。

电子邮件系统

主要组成:

  • 用户代理
  • 邮件服务器
  • 简单传输协议(SMTP)

Untitled 11.png

协议:

  • 发:SMTP
  • 收:POP3、IMAP

Untitled 12.png

简单邮件传送协议 SMTP

SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。

负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器

  • 命令:ASCII text
  • 响应:状态码和短语

TCP连接 端口号**25** C/S

SMTP通信三个阶段:

连接建立(握手)→邮件传送(传输信息)→连接释放

特点:

  1. SMTP使用持久连接
  2. SMTP要求消息(报头和正文)是7位ASCII码
  3. SMTP服务器使用CRLF。CRLF确定消息结束

缺点:

  1. SMTP不能传送可执行文件或者其他二进制对象。

  2. SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。

  3. SMTP服务器会拒绝超过一定长度的邮件。

SMTP报文格式:

Untitled 13.png

▪header lines, e.g., • To: • From: • Subject:

▪Body: the “message” • ASCII characters only

💡 对比HTTP与SMTP:

HTTP:

HTTP 从 Web服务器向Web客户(通常是一个浏览器)传送文件(也称为对象);

SMTP:

SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。

当进行文件传送时,持续的HTTP 和 SMTP 都使用持续连接。

HTTPSMTP
拉协议(pull protocol)推协议(push protocol)
不受这种限制要求每个报文(包括它们的体)采用7比特ASCII码格式
把每个对象封装到它自己的HTTP响应报文中把所有报文对象放在一个报文之中

通用因特网邮件扩充 MIME

使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。

Untitled 14.png

邮局协议 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&HTTPS

HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

Untitled 15.png

特点:无状态(不保存历史信息)⇒ 解决方案:使用cookie

HTTP采用TCP作为传输层协议,其本身是无连接的;

使用TCP的过程:

  1. 客户端发起TCP连接(创建套接字)到服务器端口80
  2. 服务器接受来自客户端的TCP连接
  3. HTTP消息(应用层协议消息)在浏览器(HTTPClient)和Web服务器(HTTP服务器)之间交换
  4. TCP连接关闭

连接方式:

  • 非持久连接

Untitled 16.png

非持续HTTP响应时间:

  • 1*RTT:启动TCP连接
  • 1*RTT:HTTP请求和相应中少数头部字节的返回
  • 1*文件传输时间

总时间:2*RTT+文件传输时间

  • 持久连接

Untitled 17.png

持续HTTP:

  • 服务器再发送响应后保持连接打开
  • 对于所有被引用的对象,只需要1*RTT

RTT:一个小packet从客户端到服务器再返回的时间

HTTP报文结构:

  • HTTP请求报文:
  1. 请求行:请求方法 /URL (表示请求字段) HTTP版本
  2. 头部行:
    1. Host:请求服务器名称
    2. User-agent:用户代理(浏览器类型)
    3. Connection:close 传输完毕后需要关闭连接
    4. Accept-language:用户想得到的语言版本

Untitled 18.png

  • HTTP响应报文:
  1. 状态行:HTTP版本 当前状态是否正常
  2. 头部行:
    1. Connection:close 返送报文后关闭连接
    2. Date:响应报文创建时间
    3. Server:Web服务器类型
    4. Content-Length:报文字节数
    5. Content-Type:报文类型

Untitled 19.png

Untitled 20.png

请求方法:

  • 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:

组成:

  1. 在HTTP响应报文中的一个cookie首部行;
  2. 在HTTP请求报文中的一个cookie首部行;
  3. 在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理;
  4. 位于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;