应用层(上)

应用层

1.网络应用的体系结构

网络应用:百度、QQ、email、迅雷、支付宝、微信、百度云、淘宝网、网易。

体系结构:

(1)客户机/服务器结构(Client-Server,C/S)

服务器:

​ 7*24小时提供服务

​ 永久性访问地址/域名

​ 利用大量服务器实现可扩展性

客户机:

​ 与服务器通信,使用服务器提供的服务

​ 间歇性的接入网络

​ 可能使用动态IP地址

​ 不会与其他客户机直接通信

例子:Web

    	![image.png](https://i.loli.net/2021/11/12/Wyd5468XE97D3vS.png)

(2)点对点结构(Peer-to-peer,P2P)

​ 没有永远在线的服务器

​ 任意端系统/节点之间可以直接通讯

​ 节点间歇性接入网络,可能改变IP地址

优点:高度可伸缩; 缺点:难于管理

(3)混合结构(Hybrid)

​ 利用前两者的优点,规避两者的缺点。

Napster:文件传输使用P2P结构;文件的搜索采用C/S结构——集中式

image.png

网络应用进程通信:

网络应用的基础:进程间的通信

进程:主机上运行的程序

同一主机的进程之间的通信方式:进程间通信机制,操作系统提供。不同主机:消息交换(报文交换)


​ 客户机进程:发起通信的进程

​ 服务器进程:等待通信请求的进程


套接字:Socket

image.png

进程间通信利用socket发送/接收消息实现

类似于寄信:

​ 发送方将消息送到门外邮箱

​ 发送方依赖(门外的)传输基础设施将消息传到接收方所在的主机,并送到接收方的门外

​ 接收方从门外获取消息

传输基础设施向进程提供API:

​ 传输协议的选择;参数的设置

如何寻址进程

不同主机上的进程间通信,每个进程必须拥有标识符

如何寻址主机——IP地址

Q:主机的IP地址是否足以定位进程?

A:否。同一主机上可能同时有多个进程需要通信。

端口号/Port number

  • 为主机上每个需要通信的进程分配一个端口号

  • HTTP Server:80

  • Mail Server:25

    进程的标识符=IP地址+端口号

应用层协议

网络应用需要遵顼应用层协议

公开协议:

​ 由RFC(Request For Comments)定义

​ 允许互操作

​ HTTP、SMTP……

私有协议:

​ 多数P2P文件共享应用

协议内容

消息的类型:请求消息、响应消息。

消息的语法(Syntax)/格式:消息中有哪些字段(field)、字段如何描述

字段的语义(semantics):字段中信息的含义

规则(rules):进程何时发送/响应消息

2.网络应用的服务需求

数据丢失(data loss)/可靠性(reliability)

  • ​ 某些网络应用能够容忍一定的数据丢失:网络电话
  • ​ 某些网络应用要求100%可靠的数据传输:文件传输,telnet

时间(timing)/延迟(delay)

  • ​ 有些应用只有在延迟足够低时才“有效”
  • ​ 网络电话/网络游戏

带宽(bandwith)

  • 某些应用只有在带宽达到最低要求时才“有效”:网络视频
  • 某些应用能够适应任何带宽——弹性应用:email

典型网络应用对传输服务的需求:

image.png

3.Internet传输层服务模型

Internet提供的传输服务

image.png

典型网络应用所使用的传输层服务

image.png

4.特定网络应用及协议

Web应用

关于Web

World Wide Web:Tim Berners-Lee

  • 网页
  • 网页互相链接

网页(Web Page)包含多个对象(objects)

  • ​ 对象:HTML文件、JPEG图片、视频文件、动态脚本等
  • ​ 基本HTML文件:包含对其他对象引用的链接

对象的寻址(addressing)

URL(Uniform Resoure Locator):统一资源定位器

Scheme://host:port/path

HTTP

HTTP协议:万维网应用遵循超文本传输协议(HyperText Transfer Protocol)

C/S结构

  • 客户——Browser:请求、接收、展示Web对象
  • 服务器——Web Server:响应客户的请求,发送对象。(Apache Web Server)

HTTP版本:1.0:RFC1945,1.1:RFC2068

使用TCP传输服务:

  • 服务器在80端口等待客户的请求
  • 浏览器发起到服务器的TCP连接(创建套接字Socket)
  • 服务器接受来自浏览器的TCP连接
  • 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
  • 关闭TCP连接

无状态(stateless):服务器不维护任何有关客户端过去所发请求的信息

有状态的协议更复杂:需要维护状态(历史信息)、如果客户或服务器失效,会产生状态的不一致,解决这种问题代价高

HTTP连接

非持久性连接(Nonpersistent HTTP):每个TCP连接最多允许传输一个对象;HTTP 1.0版本使用非持久性连接。

image.png

image.png

响应时间分析与建模

RTT(Round Trip Time):从客户端发送一个很小的数据包到服务器并返回所经历的时间

响应时间(Response time)

​ 发起、建立TCP连接:1个RTT

​ 发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT

​ 响应消息中所含文件/对象传输时间

​ Total = 2RTT + 文件发送时间

image.png

非持久性连接存在一些问题:

​ 每个对象需要2个RTT

​ 操作系统需要为每个TCP连接开销资源(overhead)

  • 持久性连接(persistent HTTP):每个TCP连接最多允许传输多个对象;HTTP 1.1版本默认使用持久性连接

发送响应后,服务器保持TCP连接的打开

后续的HTTP消息可以通过这个连接发送

  • 无流水(pipelining)的持久性连接
    • 客户端只有收到前一个响应后才发送新的请求
    • 每个被引用的对象耗时1个RTT
  • 带有流水机制的持久性连接
    • HTTP 1.1的默认选项
    • 客户端只要遇到一个引用对象就尽快发出请求
    • 理想请求下,收到所有的引用对象只需耗时约1个RTT
HTTP消息格式
  • 请求消息
    • ASCII码:人直接可读

image.png

上传输入的方法:

​ POST方法:网页经常需要填写表格(form)/在请求消息的消息体(entity body)中上传客户端的输入

​ URL方法:使用GET方法/输入信息通过request行的URL字段上传

image.png

  • 响应消息

image.png

Cookie技术

HTTP协议无状态,很多应用需要服务器掌握客户端的状态,如:网上购物

  • 某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookie的组件
  • HTTP响应消息的cookie头部行
  • HTTP请求消息的cookie头部行
  • 保存在客户端主机上的cookie文件,由浏览器管理
  • Web服务器端的后台数据
Cookie的原理

image.png

Cookie的作用
  • 身份认证
  • 购物车
  • 推荐
  • Web e-mail ……

Cookie技术存在一定的隐私问题

Web缓存/代理服务器技术

功能:在不访问服务器的前提下满足客户端的HTTP请求

为什么要发明这种技术?

  • 缩短客户请求的响应时间
  • 减少机构。组织的流量
  • 在大范围内(Internet)实现有效的内容分发
关于该技术
  • 用户设定浏览器通过缓存进行Web访问

  • 浏览器向缓存/代理服务器发送所有的HTTP请求

    • 如果所请求对象在缓存中,缓存返回对象
    • 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象

缓存既充当客户端,也充当服务器

一般由ISP(Internet服务提供商)假设

条件性GET方法

image.png

Email应用

构成组件

  • 邮件客户端(user agent)
  • 邮件服务器
  • SMTP协议(Simple Mail Transfer Protocol)

邮件客户端

  • 读、写Email消息
  • 与服务器交互,收、发Email消息
  • Outlook,Foxmail,Thunderbird
  • Web客户端

邮件服务器

  • 邮箱:存储发给该用户的Email
  • 消息队列(message queue):存储等待发送的Email

SMTP协议

  • 邮件服务器之间传递消息所使用的协议
  • 客户端:发送消息的服务器
  • 服务器:接受消息的服务器

采取TCP进行email消息的可靠传输

端口25

传输过程的三个阶段:握手->消息的传输->关闭

命令/响应交互模式:

命令(command):ASCII文本

响应(response):状态代码和语句

Email消息只能包含7位ASCII码

  • 使用持久性连接
  • 消息必须由7位ASCII码构成
  • SMTP服务器利用CRLF.CRLF确定消息的结束
SMTP vs HTTP

SMTP:退式(push) HTTP:拉式(pull)

都使用命令/响应交互模式

命令和状态代码都是ASCII码

HTTP:每个对象封装在独立的响应消息中

SMTP:多个对象在由多个部分构成的消息中发送

消息格式

image.png

多媒体扩展

image.png

邮件访问协议:从服务器获取邮件

POP:Post Office Protocol

  • 认证/授权(客户端<–>服务器)和下载
  • ……

IMAP:Internet Mail Access Protocol

HTTP:163,QQ Mail等

DNS应用

DNS(Domain Name System):解决Internet上主机/路由器的识别问题

如何解决域名和IP地址之间的映射?

  • 域名解析系统DNS
    • 多层命名服务器构成的分布式数据库
    • 应用层协议:完成名字的解析
      • internet核心功能,用应用层协议实现
      • 网络边界复杂
DNS服务
  • 域名向IP地址的翻译
  • 主机别名
  • 邮件服务器别名
  • 负载均衡:Web服务器

为什么不适应集中式的DNS?

  • 单点失败问题
  • 流量问题
  • 距离问题
  • 维护性问题

分布式层次式数据库

image.png

本地域名解析服务器:

  • 不严格属于层级体系
  • 每个ISP有一个本地域名服务器
    • 默认域名解析服务器
  • 当主机进行DNS查询时,查询被发送到本地域名服务器
    • 作为代理(proxy),将查询转发给(层级式)域名服务器解析系统

image.png

image.png

DNS记录缓存和更新

  • 只要域名解析服务器获得域名—IP映射,即缓存这一映射
    • 一段时间过后,缓存条目失效(删除)
    • 本地域名服务器一般会缓存顶级域名服务器的映射
      • 因此根域名服务器不会被经常访问

DNS记录和消息格式

image.png

DNS协议

  • 查询(query)和回复(reply)消息
  • 消息格式相同