网络应用是计算机网络存在的理由

网络应用程序体系结构

客户-服务器体系结构

服务器和客户端,服务器有一个固定的IP地址

P2P体系结构

应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方

自拓展性

进程通信

进行通信的实际上是一个个进程 而非程序

进程通过套接字向网络发和接受报文

可靠数据传输

如果一个协议确保数据正确、完全的交付给另一端则提供了可靠数据传输

因特网提供的运输服务

  • TCP服务
    • 面向连接的服务
    • 可靠的数据传送服务
    • 拥塞控制机制
  • UDP服务
    • 提供最小服务
    • 无连接
    • 没有拥塞控制机制

运输协议不提供的服务

TCP/UDP提供了可靠数据传输、安全性,但没有对吞吐量和定时做保障

应用层协议

应用层协议定义了:

  • 交换的报文类型
  • 各种报文类型的语法
  • 字段的语义
  • 确定一个进程何时以及如何发送报文,对报文进行响应的规则

Web和HTTP

web的应用层协议是超文本传输协议(HTTP)。http是web的核心

Web页面由对象组成,一个对象只是一个文件,图像,小程序或者视频,可通过URL寻址

Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务器端

HTTP使用TCP作为支撑运输协议

非持续连接:每个请求经过一个单独的TCP发送

定义往返时间RTT,即一个短分组从客户到服务器然后再返回客户的时间

RTT包括分组传播时延、分组排队时延、分组处理时延

非持续连接消耗了2个RTT和服务器传输html的时间

持续连接:服务器在发送响应以后保持TCP连接打开。一个完整的Web页面可以用单个持续TCP连接进行传送

HTTP报文格式

第一行称为请求行,后继行叫做首部行

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr


请求方法:

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE

首部行后空行然后由一个实体体,这个POST用

HEAD类似GET,但响应后不返回请求的对象

PUT用于用户上传对象到指定Web服务器路径

DELETE允许用户删除Web服务器上的对象

HTTP响应报文

有状态行、首部行、实体体

HTTP/1.1 200 OK
Connection: close
Date: Tue, 18 Aug 2015 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html

{data}

状态码:

  • 200 OK 请求成功
  • 301 Moved Permanently 请求对象已永久转移,新URL定义在响应报文Location
  • 400 Bad Request 请求不可被服务器理解
  • 404 请求的文档不在服务器上
  • 505 服务器不支持报文所使用的http协议版本

cookie

把内容和用户身份联系起来

cookie技术的四个组件:

  • http响应报文的一个Cookie首部行
  • http请求报文的一个Cookie首部行
  • 在用户端系统中保留有一个cookie文件上,并由用户浏览器管理
  • 位于Web站点的一个后端数据库

web缓存

也叫代理服务器,能够代表初始服务器满足HTTP请求的实体

过程:

  • 浏览器创建一个到Web缓存服务器的TCP连接,并发送一个HTTP请求
  • web缓存服务器进行检查 是否存储这个对象副本。若有则返回
  • 若没有,则缓存服务器打开一个与该对象的初始服务器的TCP连接,发送一个HTTP请求,初始服务器收到请求后发送具有该对象的HTTP响应
  • 当web缓存服务器接收到对象时,在本地缓存一份副本,并向客户浏览端用HTTP响应该副本

使用Web缓存服务器的优点:

  • 大大减少对客户端请求的响应时间,尤其是客户与出事服务器之间的瓶颈带宽远低于客户与Web缓存器之间的带宽瓶颈
  • 大大减少一个机构的接入链路到因特网的通信量,降低费用
  • 大大减低Web流量,改善所有应用的性能

条件GET方法

  • 请求报文使用GET方法
  • 请求报文中包含一个If-Modified-Since

使得缓存器存储了最后修改的时间

若缓存了且没改动服务器返回304

电子邮件

因特网电子邮件系统由三部分组成:

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

传输过程:

从发送方的用户代理开始传输到发送方的邮件服务器,再传输到接收方的邮件服务器。读邮件时要鉴别身份(用户名和口令)

若发送方服务器的邮件不能交付给接收方服务器,则发送方的邮件服务器在一个报文队列里保持这个报文,尝试再次发送

SMTP(推协议)

SMTP是互联网电子邮件中主要的应用层协议,使用TCP可靠数据传输服务

POP3(拉协议)

邮件访问协议

按三个阶段工作:特许、事务处理、更新

  • 特许:用户代理发送用户名口令鉴别用户
  • 事务处理:用户代理取回报文,还能对报文做删除标记、取消删除标记、获取邮件统计信息等
  • 更新:用户发起quit命令后,结束POP3会话,此时邮件服务器会删除被标记的报文

IMAP

IMAP也是一个邮件访问协议,IMAP服务器把每个报文与每一个文件夹联系起来;当报文第一次到达服务器时,它与收件人的INBOX关联。收件人可以把邮件移到新的用户创建的文件夹阅读和删除文件,还可以查询。

DNS

域名系统。互联网目录服务,将主机名(域名)映射为IP

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行BIND软件的UNIX机器

DNS协议运行在UDP之上,使用53号端口

一次解析:

  • 同一台用户主机上运行DNS客户端
  • 浏览器从上述URL中抽出主机名,并将主机名传给DNS应用的客户端
  • DNS客户向DNS服务器发送一个包含主机名的请求
  • DNS客户最终收到一份回答报文,包含对应主机名的IP地址
  • 一旦浏览器收到DNS的IP地址,则发起TCP连接

DNS还可以提供重要服务:

  • 主机别名:让一台主机有一个或者多个别名
  • 邮件服务器别名
  • 负载分配

P2P

成对间歇连接的主机彼此之间直接通信

每个对等方能够向任何其他对等方重新分发它已经收到的该文件的任何部分

最流行的P2P文件分发协议是BitTorrent

一个例子:

服务器和对等方通过接入链路和因特网相连,其中$u_s$表示服务器接入链路的上载速率,$u_i$表示了对等方接入链路的上载速率,$d_i$表示了第i对对等方的下载速率。用F表示被分发的文件长度,用N表示要获得的该文件副本的对等方的数量。

分发时间是所有N个对等方得到该副本所需要的时间

若是客户——服务器体系结构 $D_{cs}=max\{\frac{NF}{u_s},\frac{F}{d_{min}}\}$

P2P方式,则$D_{P2P}=max\{\frac{F}{u_s},\frac{F}{d_{min}},\frac{NF}{u_s+\sum^{N}_{i=1}u_i}\}$

IMG_73E25CB98BEA-1

BitTorrent协议

一种用于文件分发的流行的P2P协议

  • 参与一个特定文件分发的所有对等方的集合被称为一个洪流(torrent)
  • 洪流中的对等方彼此下载等长度的文件块(chunk),256KB
  • 每个洪流有一个基础设施节点称为追踪器(tracker)

最稀缺优先技术

最稀缺的块是指在邻居中副本数量最少且自己也没有的块,并首先请求最稀缺的块

这样能使最稀缺块更迅速的重新分发,目标是大致均衡每个块在洪流中的副本数量

视频流和内容分发网

视频流知识点有

  • HTTP流
  • DASH流

内容分发网即CDN