【笔记】《计算机网络:自顶向下方法Sixth》Chapter t
应用层知识体系
1.应用层协议原理
研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
A.网络应用程序体系结构
a.客户—服务器体系结构
具有固定IP地址的服务器总是开启以服务许多相互之间不直接通信的客户。大型站点需要配备大量数据中心以满足大量请求
b.对等(P2P)体系结构
在该体系中,对位于数据中心的专用服务器有最小的(或者没有)依赖。对等方可以直接通信。
自扩展性:每个对等方都可以和其他对等方相互请求和分发文件,增加系统的服务能力。
B.进程通信
在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。
a.客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。在给定的一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程时服务器。
b.进程与计算机网络之间的接口
进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。套接字是同一台主机内应用层与运输层之间的接口
套接字c.进程寻址
接收进程需要有一个地址才可以接收分组。为了标识接收进程,需要定义两种信息:(1)主机的地址—IP地址(2)定义在目的主机中的接收进程的标识符—端口号
C.可供应用程序使用的运输服务
通过研究可用运输层协议所提供的服务,选择满足应用需求的协议
常见网络应用及需求a.可靠数据传输
数据能无差错地到达接收进程。满足电子邮件、文件传输等应用。
b.吞吐量
以某种特定的速率提供确保的可用吞吐量。满足带宽敏感应用。
c.定时
定时保证。满足为了有效性而要求数据交付有严格的时间限制的应用。
d.安全性
在发送和接收进程之间提供机密性,数据完整性和端点鉴别。
D.因特网提供的运输服务
a.TCP服务
1.面向连接的服务:
握手过程。在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。
2.可靠数据传输服务:
通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。
3.拥塞控制机制
网络拥塞时抑制发送进程,缓解网络的压力
b.UDP服务
轻量级运输协议,仅提供最小服务。无连接、不可靠数据传送、无拥塞控制。
c.运输协议所不提供的服务
不提供任何定时和带宽保证
E.应用层协议
定义了运行在不同端系统上的应用程序进程如何相互传递报文。公共的应用层协议由RFC文档定义,也有专用的应用层协议。
应用层协议只是网络应用的一部分
其定义了:
1.交换的报文类型,例如请求报文和响应报文
2.各种报文类型的语法,例如报文中的各个字段及这些字段是如何描述的
3.字段的语义,即这些字段中包含的信息的含义
4.一个进程何时以及如何发送报文,对报文进行响应的规则
2.Web和HTTP
web是一种网络应用。具有按需操作的特性,即当用户需要时就能得到所想要的内容。
A.HTTP概况
Web的应用层协议是HTTP(超文本传输协议),它是Web的核心
Web页面由对象组成。一个对象只是一个文件,如HTML文件、JPEG图形等。多数Web页面含有一个HTML基本文件和多个引用对象。
a.HTTP定义了Web客户与Web服务器之间 Web页面的交互方式—HTTP请求报文与HTTP响应报文,并定义了报文的结构。
b.HTTP使用TCP作为它的支撑运输协议
c.HTTP是一个无状态协议,因为服务器并不保存客户的任何信息
B.非持续连接和持续连接
请求并接收一个HTML文件所需要的时间RTT(往返时间),指一个短分组从客户到服务器然后再返回客户所花费的时间。
用户点击超链接后,客户与服务器将会建立一个TCP连接,涉及三次握手:首先,客户向服务器发送一个小TCP报文段,发起TCP连接;然后服务器返回一个小TCP报文段做出响应;接着客户向该TCP连接发送一个HTTP请求报文;最后服务器在该TCP连接上发送HTML文件。所以总的响应时间为两个RTT+传输HTML所用的时间
a.非持续连接—每个请求/响应对经一个单独的TCP连接发送。
每个TCP连接在服务器发送一个对象后就关闭,不为其他的对象持续下来。而且每个TCP连接只传输一个请求报文和响应报文。
所以,假设一个Web页面由一个HTML基本文件和10个引用对象组成,则需要产生11个TCP连接。
b.持续连接(默认)—所有请求/响应对经相同的TCP连接发送
服务器在发送响应后保持TCP连接打开,相同的客户与服务器之间的后续请求和响应报文通过相同的TCP连接发送。只要超出一定时间间隔仍未被使用,则TCP连接被关闭
所以,假设一个Web页面由一个HTML基本文件和10个引用对象组成,则只需要产生1个TCP连接。
HTTP的默认模式是使用带流水线的持续连接,即一个接一个地发出对对象的请求而不必等待服务器应答
C.HTTP报文格式
a.请求报文
b.响应报文
D.用户与服务器的交互:cookie
cookie允许站点对用户进行跟踪,用于标识一个用户
cookie技术4大组件:
1.在HTTP响应报文中的一个cookie首部行
2.在HTTP请求报文中的一个cookie首部行
3.在用户端系统中保留有一个cookie文件,并由用户浏览器管理
4.位于Web站点的一个后端数据库
用cookie跟踪用户状态E.Web缓存
Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本
部署Web缓存器的两个原因:
1.Web缓存器可以大大减少对客户请求的响应时间。如果用户请求的对象在Web缓存器上,则Web缓存器可以迅速将该对象交付给用户
2.Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。从整体上大大减低因特网上的Web流量,从而改善所有应用的性能
F.条件GET方法
用于保持Web缓存器中的对象版本为最新版
3.文件传输协议FTP
使用FTP协议在本地和远程文件系统之间移动文件FTP使用两个并行的TCP连接来传输文件:
一个是控制连接(先),用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“存放”和“获取”文件的命令。
一个是数据连接(后),用于实际发送一个文件
在FTP传输中,控制连接贯穿了整个用户会话期间,但是每次文件传输都需要建立一个新的数据连接(即数据连接是非持续的)
4.电子邮件
Internet电子邮件系统总体描述三个主要组成部分:用户代理(user agent),邮件服务器(mail server),简单邮件传输协议(SMTP)
A.SMTP
示例SMTP是Internet电子邮件应用的核心
SMTP一般不使用中间邮件服务器发送邮件,而是直接在发送邮件服务器和接收邮件服务器之间建立持续TCP连接
B.与HTTP的对比
a.HTTP从Web服务器向Web客户传送文件(对象);SMTP从一个邮件服务器向另外一个服务器传送文件(电子邮件报文)。
b.HTTP是一个拉协议,即从用户从服务器中拉取已经装载的信息,TCP连接由接收方发起。;SMTP是一个推协议,即发送服务器将文件推向接收邮件服务器,TCP连接由发送方发起。
c.SMTP限制使用7位ASCII码;HTTP无限制
d.如果一个文档既包含文本又包含图形。HTTP把每个对象封装到自己的HTTP响应报文中;SMTP把所有报文对象放在一个报文中。
C.邮件报文格式和MIME
格式:首部行+报文体(正文)
首部行必须含有FROM和TO
D.邮件访问协议
SMTP是一个推协议,不能用于从接收邮件服务器中拉取报文。可用POP3、IMAP、HTTP等访问邮件服务器中的邮件
电子邮件相关协议a.POP3
可设置为下载并删除或下载并保留的方式。并且不在POP3会话过程中携带状态信息
b.IMAP
为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令
为用户提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的邮件
维护了会话的用户状态信息
允许用户代理获取报文组件
c.基于Web的电子邮件
用户代理和邮件服务器之间通过HTTP传输报文
5.DNS:Internet的目录服务
主机的标识方法:主机名或IP地址
A.DNS提供的服务
DNS的主要任务:进行主机名到IP地址转换的目录服务
a.DNS是什么:
1.一个由分层的DNS服务器实现的分布式数据库
2.一个使得主机能够查询分布式数据库的应用层协议
b.DNS协议是应用层协议,由其他应用层协议(HTTP、SMTP、FTP)所使用,运行在UDP上。
c.DNS还可以提供的服务
1.主机别名
应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机IP的地址
2.邮件服务器别名
电子应用程序可以调用DNS,对提供的邮件服务器别名进行解析,以获得对应的规范主机名以及主机IP的地址
3.负载分配
DNS也用于在冗余的服务器之间进行负载分配。繁忙的站点被冗余分布在多台服务器上,它们有着不同的IP地址。而DNS数据库中存储着这些可以映射到同一主机名的IP地址集合,因而DNS可以在这些冗余服务器之间循环分配负载。
B.DNS工作机理概述
假设应用程序需要将主机名转换为IP地址。将调用DNS的客户端,并指明需要被转换的主机名,用户主机上的DNS接收到后,向网络中发送一个DNS查询报文。所有的DNS请求和回答报文使用UDP数据报经端口53发送。经过若干毫秒到若干秒的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文。这个映射结果则被传递到调用DNS的应用程序。
要实现上述过程,DNS由分布于全球的大量DNS服务器以及定义了DNS与查询主机通信方式的应用层协议组成。
a.分布式、层次数据库
DNS是在Internet中实现分布式数据库的精彩范例
为了处理扩展性的问题,DNS使用了大量的以层次方式组织的DNS服务器。没有一台DNS服务器拥有Internet中所有主机的映射
层级结构更中有3种DNS服务器:根DNS服务器、顶级域DNS服务器、权威DNS服务器
还有一种本地DNS服务器
递归和迭代查询 递归查询b.DNS缓存
本地DNS服务器缓存了主机/IP地址对,当再次接受相同请求时可以直接返回请求结果
C.DNS记录和报文
a.DNS记录
共同实现了DNS分布式数据库的所有DNS服务器存储了资源记录(Resource Record,RR),RR提供了主机名到IP地址的映射
DNS记录资源记录包含了下列字段:(Name,Value,Type,TTL)
b.DNS报文
DNS报文格式6.P2P应用
A.P2P文件分发
a.P2P体系结构的自扩展性
单一服务器向大量主机(对等方)分发一个大文件时,每个对等方能够重新分发它所有的该文件的任何部分,从而在分发过程中协助该服务器
b.BitTorrent
参与一个特定文件分发的所有对等方集合被称为“洪流(torrent)”。在一个洪流中的对等方彼此下载等长度的文件块,也为其他对等方上载了许多块。
每个洪流具有一个基础设施结点,成为追踪器。当一个对等方加入某洪流时,它向追踪器注册自己,并周期性地通知追踪器它仍在该洪流中。
用BitTorrent分发文件一些机制:
1.当A请求文件块的时候,采用最稀缺优先的技术。优先请求对等方中副本数量最少的文件块
2.当A分发文件块的时候,采用对换算法,优先分发给能够以最高速率向A提供数据的对等方
B.分布式散列表
假设数据库只包含(键,值)对。在P2P系统中,每个对等方将保持(键,值)对仅占总体的小子集。我们将允许任何对等方用一个特别的键来查询该分布式数据库。分布式数据库则将定位拥有该相应(键,值)对的对等方,然后像查询的对等方返回该(键,值)对。任何对等方也将允许在数据库中插入新键-值对。这样的分布式数据库被称为分布式散列表。
设计DHT:
1.环形DHT——处理规模问题
2.对等方扰动——维护DHT
7.套接字编程
编写应用程序时要考虑是运行在UDP上还是TCP上