目录
(2)获取www.someschool.edu的IP地址过程
一、应用层协议原理
1、网络应用程序体系结构
(1)客户/服务器模型(C/S)
服务器:提供计算服务的设备
- 永久提供服务
- 永久性访问地址/域名
客户机:请求计算服务的主机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不与其他客户机直接通信
应用:Web、文件传输FTP、远程登陆、电子邮件
(2)P2P模型(Peer-to-Peer)
- 不存在永远在线的服务器
- 每个主机既可以提供服务,也可以请求服务
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
- 可扩展性好
- 网络健壮性强
2、进程通信
(1)客户和服务器进程
- 发起通信的进程被标识为客户
- 在会话开始时等待联系的进程是服务器
(2)进程与计算机网络间的接口
- 进程通过一个称为套接字(socket)的软件接口向网络发送报文和从网络中接受报文
- 在客户端,套接字是客户进程与运输层TCP连接之间的一扇“门”,将消息传给运输层
- 在服务器端,套接字是服务器进程与TCP连接的一扇门
- 套接字也称为应用程序与网络间的应用程序编程接口(API),也就是调用函数,开发者可以通过套接字进行网络编程
- API控制:(1)选择运输层协议(2)设定某些参数
(3)进程寻址
- 主机的地址——主机由IP地址标识(32bit,唯一标识主机)
- 在目的主机中制定接收进程的标识符——端口号
- 比如:Web服务器端口号80,邮件服务器进程端口号25
(4)应用层协议的定义
- 交换报文的类型
- 报文类型的语法
- 字段的语义
- 确定一个进程何时以及如何发送报文,对报文进行响应的规则
(5)应用所需的传输层服务
①可靠数据传输
- 像一些多媒体应用,丢失一些数据导致音频出现小干扰并不影响,但像文件传输等应用,数据丢失后果非常严重。
- 当运输协议提供可靠数据传输服务时,就可以完全相信该数据能无差错地到达接收进程
②吞吐量
- 某些应用需要保证吞吐量至少为r bit/s,运输层需要保证吞吐量服务,不然该应用程序将以低速率进行编码或放弃运行
- 具有吞吐量要求的应用称为带宽敏感的应用,弹性应用可根据可用带宽或多或少地利用可使用的吞吐量
③定时(时效性)
- 对于交互式实时应用,较低的时延比较高的时延好
④安全性
(6)运输服务
UDP和TCP都提供 流量控制 和 拥塞控制
①TCP服务
- 面向连接的服务:在应用数据报文开始流动之前,TCP让客户机与服务器互换运输层的控制信息,该握手过程提醒双方为大量分组到来做好准备。握手阶段后,一个TCP连接在两个进程中套接字间建立,双方进程可以在此连接上同时进行报文收发
- 可靠的数据传送服务:通信进程能够依靠TCP,无差错地交付所发的数据
- 拥塞控制
- 不提供时效性,带宽保证
②UDP服务
- UDP是一种不提供不必要服务的轻量级运输协议,仅提供最小服务
- UDP协议提供一种不可靠数据传输服务,最重要的优点就是简单
二、Web和HTTP
1、Web术语
- Web页面:由若干个对象组成
- 对象:是一个文件,比如一个HTML文件、一个JPEG图形、一个JAVA小程序或一段视频,它们可以通过一个URL地址寻址
- 每个URL地址由两部分组成:①存放对象服务器主机名②对象的路径名
- http://www.someschool.edu/someDepartment/picture.gif 主机名
- http://www.someschool.edu/someDepartment/picture.gif 对象路径名
2、HTTP概述
- HTTP:超文本传输协议,Web应用层协议,是Web的核心
- HTTP由两个程序实现:①客户程序——Web浏览器②服务器程序——Web服务器
- HTTP定义了浏览器向服务器请求页面的方式,以及服务器向浏览器传送页面的方式
- HTTP使用TCP作为它的支撑运输协议
- HTTP协议工作过程:
- 客户初始化TCP连接(生成套接字),浏览器和服务器进程可以通过套接字接口访问TCP
- 客户和服务器之间进行HTTP请求报文的收发和HTTP响应报文的收发
- TCP连接关闭
- HTTP是无状态协议,服务器不会维护过去浏览器的请求,假如某客户在短短几秒内两次请求同一个对象,服务器不会因为刚刚为客户提供了该对象就不再作出反应
3、非持续连接和持续连接
假设用户请求由一些文本和3幅图像组成的Web页面。对于这个页面,客户将发送一个请求报文并且接受4个响应报文。(x)
答:客户端在向此Web服务器端发送第一次请求报文后,接收到的是一个封装的html文件,文件里指出了3幅图像的引用,想要请求3幅图像还需要额外发送三次请求报文,无论TCP是否是持续连接
(1)非持续连接
一次TCP连接最多发送一个对象
eg:假设该页面含1个HTML基本文件和10个JPEG图形,这11个对象位于同一台服务器上
该HTML文件的URL:http://www.someschool.edu/someDepartment/home.index
- HTTP客户进程在端口号80初始化一个到服务器www.someschool.edu的TCP连接
- HTTP服务器www.someschool.edu在端口80等待TCP连接,通知客户
- HTTP客户经它的套接字向该服务器发送一个HTTP请求报文,请求报文包含路径名/someDepartment/home.index
- HTTP服务器经其套接字接收请求报文,从其存储器检索出对象http://www.someschool.edu/someDepartment/home.index,在一个HTTP响应报文中封装对象,并通过套接字向客户发送响应报文
- HTTP客户接收到响应报文,TCP连接关闭。客户从响应报文提取该HTML文件,得到对10个JPEG图形的引用
- 对每个引用的JPEG图形对象重复前四个步骤
非持续HTTP响应时间 = 2RTT + 文件传输时间
- RTT定义:一个数据从客户到服务器再返回客户所花费的时间
- 第一个RRT——初始化TCP连接
- 第二个RRT——HTTP请求报文的发送和响应报文的返回
(2)持续连接
一次TCP连接可以发送多个对象
① 非流水线方式
- 客户在收到前一个响应后才能发出下一个请求
- 这比非持续连接的两倍 RTT 的开销节省了 建立 TCP 连接所需的一个RTT时间。但服务器在送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源
②流水线方式
- 客户在收到 HTTP的响应报文之前就立刻发送新的请求报文
- 一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。
- 使用流水线方式时,客户访问所有的对象只需花费1个 RTT 时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率
(3)持续连接和非持续连接的优缺点
非持续连接的缺点:
- 必须为每一个对象建立和维护一个全新的连接,浏览器采用并行的TCP,要分配缓冲区,增加OS操作系统的负担
- 每个对象要2个RTT,效率低
持续连接的优点:
- 服务器发送响应报文后保存该TCP连接打开,后续请求和响应报文都在该TCP连接进行传送
- 一个对象用1个RTT,效率高
4、HTTP报文格式
(1)HTTP请求报文
Connection——Connection:close 非持续连接
User-agent——用户代理,向服务器发送请求的浏览器类型
- POST方法:使用实体体,当用户提交表单时,常使用POST方法,实体体中包含用户在表单字段中的输入值
- GET方法:实体体为空。GET方法也可以将输入内容通过请求报文传给服务器,但是放置位置在URL中
- 例如:一个表单用GET方法,分别填写“monkey”和“bananas”,则其URL结构为www.somesite.com/animalsearch? monkeys&bananas
- HEAD方法:用一个HTTP报文进行响应,但不返回请求对象,一般用来调试
- PUT方法:让实体体中包含要上传的文件,把这个文件上传到URL路径里边指定的位置
- DELETE方法:删除URL指定的一个文件
(2)HTTP响应报文
Server——服务器
Last-Modified——对象创建或最后修改的日期和时间
Content-Type—— 文本内容类型
常见的状态和相关短语:
- 200 OK:请求成功,信息在返回的响应报文中
- 301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL
- 400 Bad Request:格式错误,一个通用差错代码,指示该请求不能被服务器理解
- 404 Not Found:被请求的文档不在服务器上
- 505 HTTP Version Not Supported:版本不支持,服务器不支持请求报文使用的HTTP协议版本
5、用户与服务器的交互:cookie
cookie可以用于标识一个用户,维护状态
cookie可以在无状态HTTP之上建立一个用户会话层
(1)四个组成部分
- HTTP响应报文的一个cookie首部行
- HTTP请求报文的一个cookie首部行
- 保留用户端系统的cookie文件,供用户浏览器管理
- Web站点后台数据库
(2)cookie跟踪用户状态实例
- Susan访问亚马逊网站(假设她已经访问过eBay站点),浏览器初始化一个HTTP请求报文,当报文到达亚马逊服务器时,站点生成一个cookie唯一ID,并在后端数据库里生成一条与该ID相对应的表项。
- 亚马逊服务器返回一个包含cookie:1678首部的响应报文,浏览器收到报文后,在浏览器特定的cookie文件中添加一行,该行包括服务器主机名+cookie。该cookie文件已经有用于eBay的表项,因为Susan过去访问过eBay。
- 一周后,Susan继续浏览亚马逊网站,每请求一个Web网页,浏览器就会查询该cookie文件并抽取该网站识别码,放到HTTP请求报文首部行中,亚马逊网站将知晓过去Susan在该网站留下的所有信息,达到跟踪用户的目的。
6、Web缓存器(代理服务器)
- 目的:不用访问初始服务器而满足客户请求
- 优点:大大减少对客户请求的响应时间,减少通信量
(1)Web缓存器的工作过程
- 假设浏览器正在请求对象http://www.someschool.edu/campus.gif
- 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器的对象发送一个HTTP请求报文
- Web缓存器检查本地是否存储该对象的副本。如果有,Web缓存器就向浏览器返回HTTP响应报文
- 如果Web缓存器没有存储该对象,它就建立一个到该对象的初始服务器的TCP连接,并发送该对象的HTTP请求报文,收到请求报文的初始服务器给Web缓存器发送响应报文
- 当Web缓存器接受到该响应报文时,它在本地存储一份副本,并向浏览器用HTTP响应报文发送该副本
(2)Web缓存器效率分析
- L:假设对象的平均大小=1Mb
- a:浏览器平均访问速率=15/s
- R:浏览器平均访问速率为15Mbps,局域网平均访问速率100Mbps
- 往返时延(从路由器转发请求报文到它收到响应报文的时间)为2s
总响应时间 = 局域网时延+接入时延(两台路由器之间的时延)+因特网时延
局域网时延=La/R=1*15/100=0.15(可忽略)
接入时延=La/R=1*15/15=1
当流量强度接近1时,链路上时延无限大,必须想办法改进
- 解决办法1:增加接入链路的速率,将流量强度降低,但是成本高
- 解决办法2:安装Web缓存器,成本低,响应时延低
7、条件GET方法
如果Web缓存器中存储的对象副本可能是陈旧的,该对象可能自缓存后会进行更新,为解决更新问题,HTTP协议提供一种机制,允许Web缓存器证实它的对象是最新的。
如果 ①请求报文使用GET方法 ②请求报文中包含"If-Modified-Since:"首部行,则该HTTP请求报文就是一个条件GET请求报文
(1)GET方法实例
Web缓存器向某web服务器发送一个请求报文:
GET /fruit/kiwi.gif HTTP/1.1
Host:www.exotiquecuisine.com
web服务器向Web缓存器发送具有被请求对象的响应报文:
HTTP/1.1 200 OK
Date:Sat, 3 Oct 2015 15:39:29
Server:Apache/1.3.0 (Unix)
Last-Modified:Wed, 9 Sep 2015 09:23:24 //最后修改日期
Content-Type:image/gif
(data data data...)
Web缓存器转发该对象时,也在本地保存了该对象的副本,存储了最后修改日期
一周后,另一个用户提供该缓存器请求同一个对象,由于存储在本地的对象可能已经更新,该Web缓存器通过发送一个条件GET执行最新检查:
GET /fruit/kiwi.gif HTTP/1.1
Host:www.exotiquecuisine.com
If-modified-since: Wed, 9 Sep 2015 09:23:24
该条件GET报文告诉web服务器,仅当自指定日期之后该对象被修改过,才发送该对象
①如果该对象没有被修改
HTTP/1.1 304 Not Modified
Date:Sat, 10 Oct 2015 15:39:29
Server:Apache/1.3.0 (Unix)
②如果该对象被修改
HTTP/1.1 200 OK
Date:Sat, 10 Oct 2015 15:39:29
Server:Apache/1.3.0 (Unix)
(data data data...) //将新的版本装载
三、FTP文件传输协议
FTP提供交互式访问,允许客户指明文件类型与格式,允许文件具有存取权限
FTP适合在异构网络中任意计算机间传送文件
1、FTP基本工作原理
(1)主动模式
- FTP客户向FTP服务器建立命令通道:FTP客户随机选择一个临时端口号与FTP服务器的熟知端口号21建立TCP连接,该连接用于传送FTP相关控制命令
- FTP服务器向FTP客户建立数据通道:当有数据要传送,FTP客户通过命令通道告知FTP服务器,在其熟知端口号20来与自己的另一临时端口建立tcp连接,该连接用于传输数据
- 控制连接在整个会话期间一直保持打开
- 数据连接只有在每次传输文件时才打开,传输完就关闭
(2)被动模式
和主动模式的不同在于:当有数据要传输时,FTP客户通过命令通道告知FTP服务器开启某个临时端口,被动等待FTP客户的TCP连接
四、电子邮件
1、概述
电子邮件系统采用C/S方式
由三个主要组成部分:用户代理、邮件服务器、电子邮件所需的协议
- 用户代理:是用户与电子邮件的接口,又称电子邮件客户端软件
- 邮件服务器:功能是发送和接收邮件,维护用户邮箱(eg:qq邮箱,谷歌邮箱)
- 协议:包括邮件发送协议(SMTP)和邮件读取协议(POP3、IMAP)
2、SMTP——邮件发送协议
(1)SMTP基本工作原理
- 发送方邮件服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,则发送方邮件服务器中有SMTP客户,与接收方邮件服务器的SMTP服务器进行TCP连接(熟知端口号25)
- 发送方邮件服务器可通过该连接发送SMTP命令,接收方邮件服务器可通过该连接发送SMTP应答
- TCP连接成功建立后,SMTP服务器会主动推送服务就绪应答给SMTP客户,应答代码220后可能跟有描述信息
- SMTP客户收到该应答后,向服务器表面身份,告知自己的SMTP服务器域名
- 如果SMTP服务器认为身份有效,发应答代码250,否则发其他代码,例如421表示服务不可用
- SMTP客户使用命令MAIL FROM告诉服务器邮件来自何方
- 如果SMTP服务器认为合理返回应答代码250,否则返回其他错误代码
- SMTP客户使用命令RCPT TO告诉服务器邮件去往何地
- 如果SMTP服务器认为合理返回应答代码250,否则返回其他错误代码
- SMTP客户使用DATA命令告诉服务器邮件内容
- 如果SMTP服务器准备好接收,返回应答代码354,否则返回其他错误代码
- SMTP客户发送邮件内容,接着发送结束符
- 如果SMTP服务器收件成功返回应答代码250,否则返回其他错误代码
- SMTP客户使用QUIT命令向服务器请求断开连接
- SMTP服务器认为合理返回应答代码221表示接受请求并主动断开连接
(2)SMTP特点
- SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象
- SMTP不能传送多媒体邮件,许多其他非英语国家的文字也无法用SMTP传送
3、POP3邮局协议——邮件读取协议
- 用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件,不允许用户在邮件服务器上管理自己的邮件
- 采用基于TCP连接的C/S服务器方式
- 采用熟知端口110
4、IMAP因特网邮件访问协议——邮件读取协议
- IMAP是一个联机协议,用户在自己的计算机上就可以操控邮件服务的邮箱
- 采用基于TCP连接的C/S服务器方式
- 采用熟知端口143
五、DNS:因特网的目录服务
1、DNS概述
用于标识主机有:
- 域名,给用户识别——www.google.com
- IP地址,数据报寻址——121.7.106.83
将域名与IP地址通过DNS系统进行映射
DNS(域名系统)是一种能进行主机名(域名)到IP地址转换的目录服务
DNS协议运行在UDP之上,使用53号端口
2、DNS提供的服务
(1)DNS特点:
一个由分层的DNS服务器实现的分布式数据库
一个使得主机能够查询分布式数据库的应用层协议
(2)获取www.someschool.edu的IP地址过程
- 同一台用户主机运行DNS应用的客户端
- 浏览器从URL抽取主机名www.someschool.edu,并将该主机名传给DNS应用的客户端
- DNS客户向DNS服务器发送一个包含主机名的请求
- DNS客户最终收到一份回答报文,其中含有对应该主机的IP地址
- 浏览器收到IP地址,它将向位于该IP地址80端口的HTTP服务器发起TCP连接
(3)DNS提供的服务
- 主机名到IP地址的翻译
- 获得主机别名对应的主机规范名以及IP地址
- 邮件服务器别名
- 负载分配:繁忙站点被冗余分布在多台服务器上,每台服务器均运行在不同端系统上,多个IP地址与同一个规范主机名相联系。DNS数据库中存着这些IP地址的集合。因为客户机通常向IP地址排在前面的服务器发送HTTP请求报文,DNS就循环分配IP地址(第一个人给第一个IP地址,第二个人给第二个IP地址……把用户分散在不同的服务器上)
3、DNS工作机理概述
(1)为什么不用集中化DNS?
- 单点故障:如果一方瘫痪,整个因特网均崩溃
- 通信负载:单个DNS服务器处理所有DNS查询
- 延迟极高
- 维护困难
(2)分布式层次数据库
根DNS服务器
- 有400多个根服务器遍及全世界
- 根服务器提供TLD的IP地址
顶级域服务器(TLD)
- 对于每个顶级域(如com、org、net、edu、gov)和所有国家的顶级域(如uk、fr、ca、jp),都有TLD服务器(或服务器集群)
- TLD服务器提供权威DNS服务器的IP地址
权威DNS服务器
- 一个单位的域名服务器
本地DNS服务器(LNS)
- 一个本地的DNS服务器并不属于该服务器的层次结构
- 每个ISP都有一台本地DNS服务器,当主机发出DNS请求,该请求将发往本地DNS服务器中,LNS起代理作用,并将请求转发到DNS服务器层次结构中
(3)DNS缓存
- 当某DNS接到一个DNS回答(例如,包含某主机名到IP地址的映射),它能将映射缓存在本地存储器中,另一个对相同主机名的查询到达该DNS服务器时,该DNS服务器能立刻提供所要求的IP地址
- 改善时延性能,并减少在因特网传输的DNS报文数量
4、DNS记录和报文
(1)概述
资源记录——RR,提供了主机名到IP地址的映射
每个DNS报文包含一条或多条资源记录
资源记录是包含下列字段的4元组【Name,Value,Type,TTL】
TTL决定RR应当从缓存中删除的时间
Name和Value的值取决于Type:
- Type=A,Name是主机名,Value是该主机名对应的IP地址——类型为A的RR提供规范主机名到IP地址的映射
- Type=NS,Name是一个域,Value是一个知道如何获得该域中主机IP地址的权威DNS服务器的主机名
- Type=CNAME,Value是一个别名为Name的主机对应的规范主机名
- Type=MX,Value是一个别名为Name的邮件服务器的规范主机名
- 如果一台DNS服务器是权威DNS服务器,该服务器会包含一条用于该主机名的类型A记录
- 如果不是权威DNS服务器,该服务器将包含一条NS类型记录和一条A类型记录(NS知道权威DNS的主机名,A知道NS所知道权威DNS主机名对应的IP地址)
5、P2P文件分发