2 应用层
2.1 基本原理
2.1.1 网络应用的体系结构
-
客户机/服务器结构(Client-Server, C/S)
服务器:7*24小时提供服务;永久性访问地址/域名;利用大量服务器实现可扩展性
客户机:与服务器通信,使用服务器提供的服务;间歇性接入网络;可能使用动态IP地址;不会与其他客户机直接通信
Web应用
-
点对点结构(Peer-to-peer, P2P)
没有永远在线的服务器,任意端系统/节点之间可以直接通讯,节点间歇性接入网络,节点可能改变IP地址
优点在于高度可伸缩,缺点在于难于管理
文件传输应用
-
混合结构(Hybrid)
文件传输使用P2P结构,文件的搜索采用C/S结构——集中式
每个节点向中央服务器登记自己的内容,而在查找感兴趣的内容时向中央服务器提交查询请求
Napster
2.1.2 网络应用进程通信
同一主机上运行的进程之间由操作系统提供进程间通信机制
不同主机上运行的进程间靠消息交换通信,进程间通信利用socket发送/接收消息实现
-
进程寻址:通过标识符(IP地址+端口号)在不同主机上的进程间通信
-
使用IP地址对主机寻址
-
为主机上每个需要通信的进程分配一个端口号,使用端口号对主机上的进程寻址
- HTTP Server: 80
- Mail Server:25
-
-
应用层协议:网络应用需遵循应用层协议
- 公开协议:由RFC定义的,允许互操作的协议(HTTP、SMTP)
-
私有协议:多数P2P文件共享应用
-
应用层协议内容
- 消息的类型(type):请求消息、响应消息
- 消息的语法(syntax)/格式:消息中有哪些字段(field)、每个字段如何描述
- 字段的语义(semantics):字段中信息的含义
- 规则(rules):进程何时发送/响应消息、进程如何发送/响应消息
2.1.3 网络应用的服务需求
- 数据丢失(data loss)/可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失:网络电话
- 某些网络应用要求100%可靠的数据传输:文件传输,telnet
- 时间(timing)/延迟(delay)
- 有些应用只有在延迟足够低时才“有效”,如:网络电话/网络游戏
- 带宽(bandwidth)
- 某些应用只有在带宽达到最低要求时才“有效”:网络视频
- 某些应用能够适应任何带宽——弹性应用:email
TCP服务 | UDP服务 | |
---|---|---|
连接 | 面向连接: 客户机/服务器进程间需要建立连接 | 无连接 |
传输 | 可靠的传输 | 不可靠的数据传输 |
流量控制 | 发送方不会发送速度过快,超过接收方的处理能力 | 不提供 |
拥塞控制 | 当网络负载过重时能够限制发送方的发送速度 | 不提供 |
时间/延迟保障 | 不提供 | 不提供 |
带宽保障 | 不提供最小带宽保障 | 不提供 |
2.2 web应用
2.2.1 HTTP连接
-
HTTP连接使用TCP传输服务:
-
服务器在80端口等待客户的请求
-
浏览器发起到服务器的TCP连接(创建套接字Socket)
-
服务器接受来自浏览器的TCP连接
-
浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
-
关闭TCP连接
-
-
HTTP协议是无状态的,服务器不维护任何有关客户端过去所发请求的信息。
有协议的更复杂,需要维护每个用户的历史信息状态,而且当客户或者服务器失效会产生状态的不一致,解决这种不一致代价高
HTTP1.0 | HTTP1.1 | </
---|