网络应用层概述
网络应用的基本原理
网络应用的体系结构
CS结构
客户机-服务器结构(Client-Server , CS)
P2P结构
点对点结构(Peer-to-Peer , P2P)
混合结构
CS和P2P的混合结构
网络应用的进程通信
进程间通信
网络应用的基础:进程间通信
进程:主机上运行的程序
同一主机上运行的进程间通信:
- 进程间的通信机制
- 操作系统提供
不同主机上运行的进程间通信:
- 消息交换(报文交换)
- 不同主机上运行的进程可分为:
- 客户机进程:发起通信请求的进程
- 服务器进程:等待通信请求的进程
P2P结构的应用也存在客户机进程/服务器进程之分,因为P2P也是有请求方和响应方之分
Socket套接字
不同主机上的进程间通信依靠Socket机制来实现,这是操作系统提供的一种抽象,它把网络的硬件基础设施和网络协议栈抽象为Socket。
进程通过Socket这个抽象来使用下层(链路层、网络层、传输层)网络协议栈,进程间通信利用socket发送/接受消息来实现
不同主机上的进程间通信类似于寄信:
- Socket相当于一个门
- 发送方将消息送到门外邮箱
- 发送方依赖(门外的)传输基础设施将消息传输到接收方所在主机,并送到接收方的门外
- 接收方从门外获取消息
不同主机上的进程间通信依赖传输基础设施,传输基础设施由网络协议栈构成,
Socket相当于操作系统提供的网络编程API,网络应用开发也称为Socket编程
Socket向进程提供的API功能包括:
- 消息传输(报文传输)
- 传输协议的选择
- 参数的设置
寻址进程
在进行不同主机上的进程间通信时,为了让消息能够正确的传输到目的主机上的目的进程(即寻址进程),需要对进程进行标识,即不同主机上的进程间通信时,每个进程必须拥有标识符
为了寻址进程,先要寻址主机;为了寻址主机,先要标识主机;如何标识主机?——IP地址
主机有了IP地址后,还不足以寻址进程。因为同一主机上可能同时又多个进程需要通信。
如何标识进程?——端口号(Port number)
- 主机上每个需要通信的进程都会被分配一个端口号
- HTTP Server : 80
- Mail Server : 25
不同主机上的进程的标识符:
- IP地址 + 端口号
应用层协议
规定消息交换中的格式、顺序
网络应用应遵循应用层协议
应用层协议类型:
- 公开协议
- 由RFC(Request For Comments)定义,RFC文档是由IETF(Internet Engineering Task Force)组织发布和维护的。
- 允许互操作
- HTTP、SMTP,······
- 私有协议
- 多数P2P文件共享应用
应用层协议的内容:
- 以HTTP协议为例:
- 规定消息的类型(type)
- 请求消息
- 响应消息
- 规定消息的语法/格式(syntax)
- 消息中有哪些字段?
- 每个字段如何描述?
- 规定字段的语义(semantics)
- 字段中信息的含义
- 规定一些规则
- 进程何时发送/响应消息
- 进程如何发送/响应消息
网络应用的需求
不同网络应用对消息交换的需求不同。
网络应用的需求类型:
- 数据丢失(data loss)和可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失:网络电话,在线视频
- 某些应用要求100%可靠的数据传输:网上银行
- 时间(timing)/时延(delay)
- 某些网络应用只有在延迟足够低时才”有效“:网络电话、网络游戏
- 带宽(bandwidth)
- 某些网络应用只有在带宽达到最低要求时才”有效“:网络视频
- 某些网络应用能够适应任何带宽:email
底层(传输层及以下层)为应用层提供什么服务:
总结
网络应用依靠的是相同的应用层协议来正确的进行不同主机的进程间消息交换。
消息交换并非由应用层独自来实现,而是由传输层、网络层、数据链路层、物理层共同提供传输服务。
Web应用
概述
万维网WWW是World Wide Web的简称,也称为Web、3W等。WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点。这样一来彻底摆脱了以前查询工具只能按特定路径一步步地查找信息的限制
web的构成:
- 网页
- 网页之间互相链接
网页的构成:
- 网页(Web Page)包含多个对象(objects)
- 基本HTML文件:包含对其他对象引用的链接
- 对象:HTML文件、JPEG图片、视频文件、动态脚本等
对象的寻址(addressing):
- URL(U你form Resource Locator):统一资源定位符——RFC1738
- URL:Scheme://host:port/path
- 意义:互联网上所有的资源都有唯一的标识符
web应用层遵循的协议:HTTP协议
- HyperText Transfer Protocol(超文本传输协议)
- C/S结构
- 版本:
- 1.0——RFC 1945
- 1.1——RFC 2068
- 无状态(stateless):服务器不维护任何有关客户端过去所发请求的信息(不记录客户的历史行为)
- 传输层协议:TCP协议
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建Socket套接字)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
- 关闭TCP连接
- 总结:web应用层遵循HTTP协议,传输层遵循TCP协议
HTTP连接类型
HTTP对下层TCP的使用有两种不同的方法:
非持久性连接
持久性连接
HTTP消息格式
HTTP请求消息
在TCP连接成功建立后,客户端发送HTTP请求消息
请求消息采用ASCII编码,人直接可读
例:
HTTP响应消息