网络应用体系结构
常见的网络应用:百度 邮件 支付宝 qq 微信 百度云(云存储)淘宝
网络应用的特点:需要一部分基础环境(硬件和软件), 一部分软件跑在本地,另一部分 跑在服务器上, 二者进行交互
-
客户机/服务器结构(Client-Server,C/S)
-
服务器——对外提供服务
7*24小时提供服务 ;永久性访问地址/域名 ;利用大量服务器实现可扩展性
-
客户机——使用服务器提供的服务
与服务器通信,使用服务器提供的服务 ;间歇性接入网络 ;可能使用动态IP地址 ;不会与其他客户机直接通信
例子:web
-
-
点对点结构(Peer-to-Peer,P2P)
任何端系统都是平等的,可以直接通信。
没有永远在线的服务器 ;任意端系统/节点之间可以直接通讯 ;节点间歇性接入网络;节点可能改变IP地址
与C/S相比:优点高度可伸缩,缺点难于管理
-
混合结构
利用两者的优点同时规避两者的缺点
eg:Napster
文件传输使用P2P结构,文件搜索采用C/S结构——集中式
C/S:DNS SMTP FTP Web
P2P 支持文件共享类Napster BitTorrent服务协议,支持多媒体传 输类Skype服务的协议
网络应用进程通信
网络应用的基础——进程间通信
同一主机上运行的进程之间通过操作系统提供的进程间通信机制通信
不同主机上运行的进程间通过信息交换/报文交换进行通信
进程间通信利用socket发送/接收消息 实现
-
定义:
-
进程:主机上运行的程序
-
客户机进程:发起通信的 进程
-
服务器进程:等待通信请 求的进程
P2P架构的应有也有客户机进程和服务器进程之分
-
-
套接字:Socket
Socket是操作系统的一种抽象,进程间通信利用socket发送/接收消息实现 。类似于寄信,发送方将消息送到门外邮箱;发送方依赖(门外的)传输基础设施将消 息传到接收方所在主机,并送到接收方的 门外;接收方从门外获取消息 。
传输基础设施向进程提供API ,可以选择传输协议及参数
-
如何进行进程寻址
每个进程有自己的标识符
主机IP地址+端口号。
HTTP server端口号为80;Mail server端口号为25
-
应用层协议
网络应用需遵循应用层协议 。包括公开协议和私有协议。公开协议由RFC(Request For Comments)定义 ,允许互操作,例如HTTP, SMTP, ……,要详细地研究某个协议可以去RFC查看文档。私有协议,比如多数P2P文件共享应用。当我们开发网络应用时,可以准守原有的协议, 也可以自行设计新的协议。
-
应用层协议的内容:
- 类型:请求/响应消息
- 语法:消息中有哪些字段,每个字段怎么描述(例如HTTP协议),也叫格式
- 语义:字段中信息的含义
- 规则:进程何时发送/响应消息;进程如何发送/响应消息
总结:
网络应用的基础:进程间通信
网络应用不同进程之间依靠的是进程之间的消息交换;
对进程进行寻址,需要IP地址和端口号;
消息的具体交换运用的是应用层协议;
协议包含:消息的内容、语法、语义、规则
网络应用的服务需求
计算机网络应用,依靠不同进程间进行消息交换,依靠遵循相同的应用层协议,然后正确进行消息交换 消息交换是传输层及传输层之下共同提供的服务 不同的需求需要不同的传输层服务
- 数据丢失(data loss)/可靠性(reliability) :网络电话可以容忍丢失:但是文件传输、telnet需要100%可靠的数据传输
- 时间(timing)/延迟(delay):有些应用只有在延迟足够低时才“有效” ,比如网络电话、游戏
- 带宽(bandwidth):某些应用只有在带宽达到最低要求时才“有效”:网络视频 ;某些应用能够适应任何带宽——弹性应用:email
Internet传输层服务模型
-
TCP服务
面向连接: 客户机/服务器进程间 需要建立连接
可靠的传输
流量控制: 发送方不会发送速度过 快,超过接收方的处理能力
拥塞控制: 当网络负载过重时能够 限制发送方的发送速度
不提供时间/延迟保障
不提供最小带宽保障
TCP支持的协议主要有:
HTTP(超文本传输协议)、 Telnet(远程登录)、 FTP(文件传输协议)、 SMTP(简单邮件传输协议)等;
-
UDP服务
无连接 不可靠的数据传输
不提供: •可靠性保障 •流量控制 •拥塞控制 •延迟保障 •带宽保障
UDP支持的应用层协议主要有:
NFS(网络文件系统)、 SNMP(简单网络管理协议)、 DNS(主域名称系统)、 TFTP(通用文件传输协议)、 NTP(网络时间协议)等。
特定网络应用及协议
WEB应用
World Wide Web: Tim Berners-Lee 万维网
对象寻址:URL((Uniform Resoure Locator) 统一资源定位器 Scheme://host:port/path
万维网遵循 HTTP协议(HyperText Transfer Protocol )
C/S结构:客户——Brower:请求、接受、展示WEB对象 ; 服务器——Web Server:响应客户的请求,发送对象
HTTP版本:1.0 1.1
HTTP连接的两种类型
- 非持久性连接:每个TCP连接最多允许传输一个 对象,HTTP 1.0版本使用非持久性连接
- 持久性连接:每个TCP连接允许传输多个对象,HTTP 1.1版本默认使用持久性连接
非持久性连接响应时间分析
RTT:Round Trip Time,从客户端发送一个很小的数据包到服务器 并返回所经历的时间 。
发起、建立TCP连接:1个RTT ;发送HTTP请求消息到HTTP响应消息的前 几个字节到达:1个RTT ;响应消息中所含的文件/对象传输时间;Total=2RTT +文件发送时间。
持久性HTTP
发送响应后,服务器保持TCP连 接的打开;后续的HTTP消息可以通过这个连 接发送
- 无流水(pipelining)的持久性连 接 :客户端只有收到前一个响应后才 发送新的请求;每个被引用的对象耗时1个RTT
- 带有流水机制的持久性连接 :HTTP 1.1的默认选项;客户端只要遇到一个引用对象就 尽快发出请求;理想情况下,收到所有的引用对 象只需耗时约1个RTT
HTTP消息格式
类型:request,response
-
请求消息:ASCII人直接可读
格式:
GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed)
上传输入的方法:POST,网页中填写的表格(form),通过请求消息的消息体上传。 GET,输入信息通过request行的URL字 段上传
方法:HTTP/1.0 : GET POST HEAD(请Server不要将所请求的对象放入响 应消息中)
HTTP/1.1 : GET POST DELETE
-
响应消息:
响应状态代码:位于响应消息的第一行
格式:
HTTP/1.1 200 OK Connection: close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ..