文件传送协议FTP
是因特网上使用最广泛的文件传送协议
- FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)
- 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
在因特网发展的早期阶段,用FTP传送文件约占整个因特网的通信的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP产生的通信量。
FTP的应用
- 常见用途是在计算机之间传输文件,尤其是用于批量传输文件。
- 另一个用途是让网站设计者将构成网站内容的大量文件批量上传到他们的web服务器。
FTP的基本工作原理
主动模式
- 控制连接在整个会话期间一直保持打开,用于传送FTP相关控制命令
- 数据连接用于文件传输,在每次文件传输时才建立,传输结束就关闭
- ③ 有数据传输时,FTP客户通过命令通道告知FTP服务器来与自己的另一个临时端口号建立TCP连接,建立数据通道
被动模式
- 与主动模式的不同点:③ 有数据传输时,FTP客户通过命令通道告知FTP服务器开启某个临时端口被动等待TCP连接
电子邮件
传统电话属于实时通信,主要两个缺点:
- 主叫和被叫双方必须同时在场
- 不紧要的电话常不必要打断工作和休息
电子邮件和邮政系统的寄信相似
- 发件人→邮件服务器:发件人将邮件发送到自己使用的邮件服务器
- 服务器→收件人邮箱:发件人的邮件服务器将收到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱
- 收件人收到:收件人在方便的时候访问收件人邮件服务器中主机的邮箱,获取收到的电子邮件
电子邮件:使用方便、传递迅速、费用低廉,可文字,声音,图像。
采用的方式:客户/服务器方式
电子邮件系统的三个主要组成构件:用户代理,邮件服务器以及电子邮件所需的协议
- 用户代理是用户与电子邮件系统的接口,又称为电子邮件客户端软件
- 邮件服务器是电子邮件系统的基础设施。因特网上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
- 协议包括邮件发送协议(SMTP)和邮件读取协议(POP3,IMAP)
邮件发送和接收的过程
简单邮件传送协议SMTP
基本工作原理:
- 发送方服务器周期性对邮件缓存进行扫描,发现是否有待转发的邮件。有的话,与接收方建立连接
- 通过命令/应答的方式,失陷SMTP客户发送邮件给SMTP服务器
- 应答代码一般都有简单的描述信息
- 不同的SMTP服务器给出的相同应答代码的描述信息可能不同
电子邮件的信息
- 格式不是由SMTP定义,而是RFC定义。一个电子邮件 = 信封 + 内容,内容 = 首部 + 主体
- 首部主体信息都需要用户来填写
- 首部包含关键字
SMTP的不足
- SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或其他的二进制对象。
- SMTP不能满足传送多媒体邮件,比如视频等,很多非由国家也无法SMTP传送
解决方法:提出了 多用途因特网邮件扩展MIME
- 增加了五个新的邮件首部字段,提供了有关邮件主题的信息
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
- 不仅用于SMTP,也用于同样面向ASCII字符的HTTP
邮件读取协议
- 都采用TCP连接 的 客户/服务器方式
- POP3使用熟知端口号110,IMAP4采用143
邮局协议POP
- 简单,功能有限
- POP3,因特网正式标准
- 用户只能下载删除或下载并保留的方式从邮件服务器下载邮件到计算机。
- 不允许用户在邮件服务器上管理自己的邮件
- 例如创建文件夹,对邮件进行分类管理等
因特网邮件访问协议IMAP
- IMAP4是因特网建议标准
- 功能较强
- 用户在自己的计算机就可操纵邮件服务器中的邮箱,就像在本地操控一样,因此是一个联机协议
基于万维网的电子邮件
- 通过浏览器登录(QQ邮箱)邮件服务器万维网站,用户无需安装代理程序,只需万维网浏览器
- 可以在网站上管理和处理自己的邮件,而不需下载到本地
过程中协议的使用
万维网
- 万维网WWW并非某种特殊的计算机网络,它是一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
- 万维网利用网页之间的超链接的不同网站的网页链接成一张逻辑上的信息网。
浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对网页内容进行解析和显示
- 不同的浏览器内核对网页内容的解析有所不同,因此同一网页在不同内核浏览器里的显示效果可能不同。
- 网页编写者需要在不同内核的浏览器中测试网页显示效果
万维网WWW
- 为了方便地访问世界范围,万维网使用统一资源定位符URL来指明因特网上任何种类资源的位置。
- URL一般由以下四个部分组成:<协议>://<主机>:<端口>/<路径>
万维网文档
- 新文本标记语言HTML:使用多种标签来描述网页的结构和内容
- CSS:样式
- js:脚本语言,控制网页的行为
超文本传输协议HTTP
- 定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。
举例说明
看出是主机的客户进程 与 服务器中的服务器进程 进行沟通
- 浏览器发起与服务器的TCP连接,熟知端口号80
- 基于这条连接,浏览器 向 服务器进程发送HTTP请求报文
- 服务器受到后,执行相应操作,然后给浏览器进程发送HTTP响应报文
HTTP1.0
- 采用非持续连接方式,在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到相应后就立即关闭连接。
- 每请求一个文档就要有两倍的RTT开销,若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需花费2RTT的时间
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这大量占用万维网服务器资源,特别是万维网服务器往往要同时服务于大量客户的请求,使负担很重。
HTTP1.1
- 采用持续连接方式,该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传后续的HTTP请求报文和响应报文,这并不局限于传送同一个页面上的引用对象,而是只要这些文档在同一个服务器上就行
- 为提高效率,还可使用流水线方式
- 持续连接方式的话 Connection:keep-alive
- 非持续连接的话 Connection: Close
HTTP报文格式
面向文本,报文中每一个字段都是ASII码串,并每个字段的长度都是不确定的
- Get:请求行,指明方法GET,URL 和 HTTP版本
- Host:首部行的开始:指明服务器域名
- Connection:close :告诉服务器发送完请求的文档后就可以释放连接
- User-Agent:告诉服务器浏览器的类型以及版本
- Accept-Language:告诉服务器希望优先得到的语言文档
HTTP支持以下方法:
HTTP响应报文的格式
- 只有状态行和HTTP的请求行不一样,除此之外都一样
状态行的状态码
常见的状态行
使用Cookie在服务器上记录用户信息
- 早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态文档。因此HTTP被设计为一种无状态的协议,这样可以简化服务器的设计。
- 现在,用户可通过万维网实现各种复杂的应用,如网上购物,电子商务等。这些应用往往需要万维网服务器能够识别用户。
- Cookie提供了一种机制使得万维网服务器能够记住用户,而无需用户主动提供用户标识信息,也就是说,Cookie是一种无状态的HTTP进行状态化的技术。
Cookie的工作原理
- ① 浏览器初次向服务器发送HTTP报文
- ② 服务器进程就会为其产生一个唯一Cookie识别码,并以此为索引在服务器后端数据库中创建一个项目,原来记录该用户访问该网站的各种信息
- ③ HTTP响应报文中,包含一个首部字段为Set-Cookie的首部行,字段取值为Cookie识别码
- ④ 浏览器收到响应报文,将Cookie信息存入文件中
- ⑤ 用户再次使用浏览器访问网站时,每发送一个HTTP请求报文,浏览器都会从Cookie文件中取出该网站的Cookie识别码,并放到HTTP请求报文的Cookie的首部行中
- ⑦ 服务器根据Cookie识别码就可以识别出用户
- ⑧ 服务器发送HTTP响应,返回该用户的个性化网页
万维网缓存与代理服务器
- 万维网中还可以使用缓存机制以提高万维网的效率
- 万维网缓存又称为Web缓存,可位于客户机,也可位于中间系统上,位于中间系统上的Web缓存又称为代理服务器。
- web缓存吧最近的一些请求和响应暂存在本地磁盘。当请求到达时,若发现这个请求与暂时存放的请求相同,就返回缓存的响应,而不需按URL的地址再去因特网访问该资源
校园网某主机 访问 原始服务器:
- ① 主机向代理服务器 发送请求
- ② 代理服务器存放有请求的对象,向主机发回包含请求对象的响应;否则,向因特网上的原始服务器发送请求
- ③ 原始服务器将包含对象的响应发回代理服务器
- ④ 代理服务器将该响应存入Web缓存,然后发给主机
原始服务器的文档更改 但是 代理服务器的没有更改,怎么解决这种冲突呢?
- 原始服务器会为每个响应对象设置 一个修改时间字段 和 一个有效日期字段,当校园网中的某台主机要请求原始服务器中的该文档时,首先向代理服务器发送请求,文档未过期,发回主机,未过期,则向原始服务器请求。
- 请求报文中有一个首部字段为 if-modified-since首部行,就是该文档的修改日期,根据修改日期,判断是否一致。一致,则给代理服务器发送不包含实体主体的响应,状态码 304,短语为Not Modefied,代理服务器重新更新该文档的有效日期 ;不一致,给代理发送封装有该文档的响应报文,代理服务器更新文档。
例题