规定如何在各种端系统上组织应用程序,由研发者设计
服务器:对外提供服务的一系列硬件和软件
客户机:使用服务器提供的服务
服务器
客户机
常见:文件分发,因特网电话
优点:高度可伸缩
缺点:难于管理
Napster
文件传输使用P2P结构
文件的搜索采用C/S结构——集中式
每个节点向中央服务器登记自己的内容
每个节点向中央服务器提交查询请求,
查找感兴趣的内容
*进程(process):*主机上运行的程序
同一个主机上运行的进程通信方式:
不同主机上运行的进程间通信方式:
客户机进程:发起通信的进程
服务器进程:等待通信请求的进程
Socket=(IP地址:端口号)
同一台主机内应用层与运输层之间的接口。
也叫应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口。
类似于寄信
传输基础设施向进程提供API
根据进程识别信息找到对应进程
不同主机上的进程间通信,每个进程必须拥有标识符
使用IP地址寻址主机
使用端口号Port
为每个主机上需要通信的进程分配一个端口号
HTTP Server:80
Mail Server:25
进程的标识符
IP地址+端口号 用于唯一标识一个网络上的进程
是用户与网络应用程序之间的接口。
如:
Web应用的用户代理:是一些浏览器软件。
一个通过套接字收发报文,并提供用户接口的进程。
电子邮件应用程序用户代理:是“邮件阅读器”。
允许用户进行邮件的撰写和阅读。
定义运行在不同端系统上的应用程序进程间传递报文的格式和方式。
公开协议
私有协议
消息的类型(type)
请求响应
响应消息
消息的语法(syntax)/格式
消息中具有的字段(field)
每个字段的描述
字段的语义(semantics)
字段中信息的含义
规则(rules)
进程何时发送/响应消息
进程如何发送/响应消息
某些网络应用能够容忍一定的数据丢失:网络电话
某些网络应用要求100%可靠的数据传输:文件传输,telnet
TCP服务 | UDP服务 | ||
---|---|---|---|
面向连接 | 划分三阶段 建立连接(握手过程): 客户机程序和服务器程序之间互相交换控制信息,在两个进程的套接字之间建立一个TCP连接。 *传输报文:*连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。 拆除连接: 应用程序报文发送结束。 |
无连接 | |
可靠的传输 | 通信进程可以无差错,按适当顺序交付发送的数据。无数据丢失和重复 | 不可靠的传输服务 | 不保证报文能够被接收,或收到的报文是乱序到达。 |
流量控制 | 发送方不会发送速度过快,超过接收方的处理能力 | 没有拥塞控制机制 | 发送进程可以任何速率发送数据 |
拥塞控制 | 当网络负载过重时能够限制发送方的发送速度 | 不提供时延保证 | |
无时间/延迟保障 | 数据传输的时间不确定。 | ||
不提供最小带宽保障 | 发送进程受拥塞控制机制制约。 | ||
特点 | TCP协议能保证交付所有的数据,但并不保证这些数据传输的速率以及期待的传输时延。 | 适于实时应用。 |
World Wide Web:Tim Berners - Lee
网页且网页相互连接
Web Page 包含多个对象(objects)
对象的寻址(addressing)
URL(Uniform Resoure Locator):统一资源定位器
Scheme://host:port/path
格式记牢
超文本传输协议 HyperText Transfer Protocol
无状态(stateless)
服务器不维护任何有关客户端过去所发请求的信息
C/S结构
有状态协议更复杂:
使用TCP传输服务
RTT(Round Trip Time)
客户端发送一个很小的数据包到服务器并返回所经历的时间
响应时间(Respone time)
- 发起、建立TCP连接:1个RTT
- 发送HTTP请求消息到HTTP响应消息的前几个字节到达:1个RTT
- 响应消息中所含的文件/对象传输时间
Total = 2RTT + 文件发送时间
非持久性连接的问题 | 持久性连接 | 带有流水机制的持久性连接 |
---|---|---|
*每一个对象的传输时延长:*每个对象需要2个RTT | 发送响应后,服务器保持TCP连接的打开 | HTTP 1.1的默认选项 |
*服务器负担重:*操作系统需要为每个TCP连接开销资源(overhead) | 后续的HTTP消息可以通过这个连接发送 | 客户端只要遇到一个引用对象就尽快发出请求 |
理想情况下,收到所有的引用对象只需耗时约1个RTT | ||
浏览器做法 | 无流水(pipelining)的持久性连接 | |
打开多个并行的TCP连接以获取网页所需对象 | 客户端只有收到前一个响应后才发送新的请求 | |
每个被引用的对象耗时1个RTT |
HTTP/1.0 | HTTP/1.1 | ||
---|---|---|---|
GET | 请求一个对象。实体主体为空。 | GET,POST,HEAD | |
POST | 将实体信息交给服务器,用于提交表单 | PUT | 向服务器URL指定的路径上载实体中的文件。 |
HEAD | 请Server不要将所有请求的对象放入响应消息中 | DELETE | 删除服务器URL指定的文件。 |
ASCII:人直接可读
上传输入的方法
200 OK
301 Moved Permanently
400 Bad Request
404 Not Found
505 HTTP Version Not Supported
HTTP协议无状态
很多应用需要服务器掌握客户端的状态
某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
隐私问题
目标:在不访问服务器的前提下满足客户端的HTTP请求
Web缓存器(Web cache):也叫代理服务器。
代表起始服务器来满足HTTP请求的网络实体。
保存最近请求过的对象的副本。
可在客户机或服务器工作,也可在中间系统工作。
起始(原始)服务器(origin server):对象最初存放并始终保持其拷贝的服务器。
Web缓存/代理服务器
用户设定浏览器通过缓存进行Web访问
浏览器向缓存/代理服务器发送所有的HTTP请求
如果所请求对象在缓存中,缓存返回对象
否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象
缓存既充当客户端,也充当服务器
一般由ISP架设
减少机构内部网络与因特网连接链路上的通信量:
降低开销,改善各种应用的性能。
本地主机上的用户,向远程主机上传或者下载文件。
文件传送协议FTP:用于从一台主机到另一台主机传送文件的协议。
用户通过一个FTP用户代理与FTP服务器交互。
建立TCP连接:用户提供远程主机的主机名或者IP地址。在FTP客户机进程与FTP服务器进程之间建立。
身份认证:输入用户名和口令。向FTP服务器传送。
服务器验证成功:进行文件传送(双向)
将本地文件系统中的文件传送到远程文件系统(上传)
或从远程文件系统中得到文件(下载)
作用:用于在两主机间传输控制信息。如用户名、口令;上载或下载文件命令等。
控制连接由客户先发起,建立后一直保持:
FTP会话开始前,FTP的客户机与服务器在21号端口上建立。
FTP的客户机通过该连接发送用户名和口令,或改变远程目录命令、上载或下载文件命令。
作用:用于准确传输文件。
服务器收到一个文件传输的命令:上载或下载
在20端口建立一个到客户机的数据连接。
在该数据连接上传送一个文件并关闭连接
每个数据连接只传一个文件,每个文件都要建立和释放数据连接。
FTP | HTTP | |||
---|---|---|---|---|
控制信息 | 带外传送(out-of-band) | 使用分离的控制连接。 | 带内传输(in-band) | 请求和响应都是在传输文件的TCP连接中发送。 |
状态 | 有状态 | FTP服务器对每个活动用户会话的状态进行追踪,并保留;限制同时会话的总数。 | 无状态 | 不对用户状态进行追踪 |
电子邮件快速、多方接收,包含附件、超链接、图像、声音、视频等。
邮件阅读器。允许用户阅读、回复、发送、保存和撰写报文。
邮箱:发送给用户的报文。
报文队列:用户要发出的邮件报文。
邮件发送主要过程:
邮件保存到发送方输出报文队列
通过SMTP协议转发到接收方邮件服务器,保存到相应邮箱中
若投递失败仍保存,以后每30分钟发送一次,若几天后仍未成功,将该报文删除,并通知发送方。
用户访问自己邮箱时,邮件服务器对其身份进行验证(用户名和口令)
简单邮件传送协议
从发送方的邮件服务器向接收方的邮件服务器发送邮件。
每个邮件服务器上都有SMTP的客户机端和服务器端。
应用层协议。
使用TCP可靠数据传输服务。
包括两部分:
客户机端:在发送方邮件服务器上运行;
服务器端:在接收方邮件服务器上运行。
客户使用TCP来可靠传输邮件报文到服务器端口号25
建立TCP连接
握手:指明收发双方的邮件地址
邮件报文的传送
结束:关闭TCP连接
SMTP不使用中间邮件服务器发送邮件,TCP连接是发送方到接收方的直接连接
若接收方的邮件服务器未开机,该邮件仍然保存在发送方的邮件服务器上,并在关机后进行再次传送
邮件不会在某个中间邮件服务器上停留
HTTP | STMP | ||
---|---|---|---|
相同点 | 都从一台主机向另一台主机传送文件 | 从Web服务器想Web客户机(浏览器)传送文件(对象) | 从一个邮件服务器向另一个服邮件服务器传送文件(电子邮件报文) |
都使用持久连接 | |||
不同点 | 拉协议; | 推协议; | |
用户使用HTTP协议从服务器 拉取信息。 | 发送邮件服务器吧文件推向接受有加你服务器; | ||
TCP连接由想获取文件的机器发起 | TCP连接是由 要发送文件的机器发起 | ||
数据传送方式 | 无限制 | 使用7位ASCII码格式;对包含非7位ASCII字符的报文或二进制数据(如图片、声音),需要按照7位ASCII码进行编码(MIME实现) ,再传送。在接收方需要解码还原为原有报文。 | |
对含有文本和图形 (或其他媒体类型)的文档: | 把每个对象封装在它各自的HTTP响应报文中发送。 | 所有报文对象放在一个报文中。 |
多用途因特网邮件扩展
用于非ASCII数据传输
STMP:
MIME:
MIME是SMTP的一个扩展,不能替代SMTP
Content-Transfer-Encoding:告诉接收用户代理,该报文主体采用了ASCII码及相应编码类型,并以此还原成非ASCII码。
常用编码:
Content-Type:告诉接收用户代理报文类型及应采取的动作。
如jpeg:要对jpeg文件解压缩。
用户代理从接收方邮件服务器上读取邮件。
发送方:
接收方:
通过其用户代理使用一个邮件访问协议,从其邮件服务器上取回邮件。
取邮件是一个拉操作,而SMTP协议是一个推协议。
第三版邮局协议
简单,功能有限
读取邮件过程:
建立TCP连接:服务器通过110端口侦听TCP请求,与客户机建立TCP连接。
开始POP3会话读取邮件,分为3个步骤。
*特许阶段:*用户代理发送用户名和口令获得下载邮件的特许。(身份认证)
*事务处理阶段:*用户代理取回报文,可对邮件进行某些操作。
如:下载并保留,下载并删除等。
更新阶段:邮件服务器删除带有删除标记的报文,结束POP会话。
因特网邮件访问协议
功能强
在用户机上运行IMAP客户程序,并与邮件服务器上的IMAP服务器程序建立TCP连接。
用户在自己的PC机上就可以操作邮件服务器的邮箱,就如同本地操纵一样,是一个联机协议。
如:建立文件夹,查询,移动邮件等。
未发出删除命令前,一直保存在邮件服务器。
实现复杂
用户使用浏览器收发电子邮件。
1995年12月Hotmail 引入该技术。
用户代理是普通的浏览器,用户和其远程邮箱之间的通信通过HTTP进行:
发件人使用HTTP 将电子邮件报文从其浏览器发送到其邮件服务器上。
收件人使用HTTP从其邮箱中取一个报文到浏览器。
邮件服务之间发送和接收邮件时,使用SMTP
用户可以再远程服务器上以层次目录方式组织报文。
域名系统(Domain Name System):进程主机名到IP地址的转换。
DNS
DNS服务器 | 是运行BIND软件的UNIX机器 |
---|---|
DNS协议 | 运行在UDP之上,使用53号端口 |
DNS | 直接由其他的应用层协议 (包括HTTP、SMTP 和FTP)使用,以将用户提供的主机名解析为IP地址。 |
用户只是间接使用 |
标识主机的两种方式:
报文在网络中传输,使用IP地址。
主机名 | IP地址 |
---|---|
由不定长的字母和数字组成。 | 由4个字节组成,有严格的层次结构 |
便于记忆。路由器处理困难。 | 路由器容易处理。 |
用户主机上运行DNS客户机端。
浏览器从URL中解析出主机地址,传给DNS客户机端
DNS客户机向DNS服务器发送一个包含主机名的请求
DNS客户机收到含有对应主机名的IP地址的回答报文
浏览器向该IP地址指定的HTTP服务器发起一个TCP连接。
1234称为域名解析
增加一定时延
主机名到IP地址的转换
主机别名和规范名的转换:通过DNS可以得到主机别名对应的规范主机名和IP地址
规范名:主机真正的名字。如host1.njust.edu.cn
别名:主机上运行的某种应用服务。如 www.njust.edu.cn 表示Web服务器
同一台主机可运行多个应用,多个别名与一台主机联系。如 ftp.njust.edu.cn 表示FTP服务器
邮件服务器别名和规范名转换
负载均衡:Web服务器
被查询服务器返回域名解析服务器的名字,逐个查找。
请求主机向本地DNS服务器发送请求,向连接的DNS服务器查找所需要的IP地址,没有则返回本地域名服务器,再向其他DNS服务器发出请求
请求主机向本地DNS服务器发送请求,若没有则直接向其他域名服务器发出请求直到查找到依次返回到本地DNS服务器,最终响应请求。
位于网络边缘的PC机(对等方peer)互相之间可以直接获取对象
从单个源向大量对等方分发文件
Client-Server | P2P文件分发 |
---|---|
服务器向每个对等方发送该文件的副本,负担重。 | 每个对等方都能够重新分发其所有文件的任何部分,协助服务器分发。 |
当一个对等方收到文件数据时,用其上载能力重新将数据分发给其他对等方。下载同时上载 |
BitTorrent协议
Torrent:洪流。参与一个特定文件分发的所有对等方的集合。
tracker追踪器
跟踪洪流中的对等方
一个新对等方加入洪流时,追踪器从中随机选择一些对等方,并发送含有IP地址的对等方列表给新加入的对等方。
新对等方依次与列表中的对等方建立TCP连接,连接成功即获取相关文件块;
可以从多个对等方获取文件的各个块;
下载完成后,组装还原为一个完整的文件。
对等方之间共享文件
每个参与的对等方既是内容的消费者也是内容的发布者(下载同时也向其他用户上载)
源于Napster公司(第一家世界范围内从事MP3对等应用程序)设计。
目录服务器(大型服务器或服务器场):提供目录服务。
收集可共享的对象,建立集中式的动态数据库(对象名称到IP地址的映射)。
属于客户机/服务器与P2P的混合结构。
建立在Gnutella协议基础上:一个公共域文件共享应用程序协议。
全分布方式:无中心服务器。
许多Gnutella客户机实现协议:运行在对等方。
对等方先形成一个抽象的逻辑网络(覆盖网络)
通过洪泛查询,找到所需对象:
如,某个对等方Alice想得到一个对象。
限范围的洪泛查询:
在“查询报文”中设置一个对等方计数字段,并给定一个特定值。
可能减少对等方数量。
与Gnutella类似,*无专用服务器,但对等方地位不平等。*如KaZaA。
对等方根据通信关系划分若干组,组成层次结构。
每组包括若干组员,一个组长
组长追踪其所有子节点上的内容
对等方确定某个特定对象。
应用广泛
提供PC到PC、PC到电话、电话到PC电话服务
PC 到PC视频会议服务。
属于即时通讯IM(Instant Messaging)
集中式和分布式结合。