网络应用层的基本原理
# 网络应用层的基本原理
课件
- 网络应用的体系结构
- 网络应用进程间通信
# 网络应用的体系结构
# 客户机-服务器结构(Client-Server, C/S)
C/S 结构示意图
# 服务器
- 7*24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
# 客户机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不会与其他客户机直接通信
示例: Web
# 纯P2P结构
P2P结构示意图
特点
- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
与 C/S 结构相比的优缺点
- 优点:高度可伸缩
- 缺点:难于管理
# 混合结构
napster 结构示意图
Napster
- 文件传输使用P2P结构
- 文件的搜索采用C/S结构——集中式
- 每个节点向中央服务器登记自己的内容
- 每个节点向中央服务器提交查询请求,查找感兴趣的内容
# 网络应用进程通信
进程
- 主机上运行的程序
同一主机上运行的进程之间如何通信?
- 进程间通信机制
- 由操作系统提供
不同主机上运行的进程间如何通信?
- 消息交换
- 客户机进程
- 发起通信的进程
- 服务器进程
- 等待通信请求的进程
# 套接字
- Socket
- 进程间通信利用socket发送/接收消息实现
示意图
类似于寄信
- 发送方将消息送到门外邮箱
- 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
- 接收方从门外获取消息
传输基础设施向进程提供API
- 传输协议的选择
- 参数的设置
# 如何寻址进程
- 同主机上的进程间通信,那么每个进程必须拥有标识符
如何寻址主机?——IP地址
- 同一主机上可能同时有多个进程需要通信,因此只有 IP 地址不足以定位进程
端口号/Port number
- 为主机上每个需要通信的进程分配一个端口号 (0 ~ 65536)
- 特定的端口号用于特定的网络应用
- HTTP Server: 80
- Mail Server:25
# 应用层协议
网络应用需遵循应用层协议
# 公开协议
- 由 RFC (opens new window)(Request For Comments)定义
- 目的是为了允许互操作
- HTTP, SMTP, ……
# 私有协议
- 多数P2P文件共享应用
# 应用层协议的内容
消息的类型(type)
- 请求消息
- 响应消息
消息的语法(syntax)/格式
- 消息中有哪些字段(field)?
- 每个字段如何描述
字段的语义(semantics)
- 字段中信息的含义
规则(rules)
- 进程何时发送/响应消息
- 进程如何发送/响应消息
HTTP 请求消息的格式
# 网络应用的需求
数据丢失(data loss)/可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失
- 网络电话
- 某些网络应用要求100%可靠的数据传输
- 文件传输,telnet
时间(timing)/延迟(delay)
- 有些应用只有在延迟足够低时才“有效”
- 网络电话/网络游戏
带宽(bandwidth)
- 某些应用只有在带宽达到最低要求时才“有效”
- 网络视频
- 某些应用能够适应任何带宽——弹性应用
网络应用的需求示例
# 传输层服务
# TCP服务
- 面向连接: 客户机/服务器进程间, 需要建立连接
- 可靠的传输
- 流量控制: 发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制: 当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
# UDP 服务
- 无连接
- 不可靠的数据传输
- 不提供
- 可靠性保障
- 流量控制
- 拥塞控制
- 延迟保障
- 带宽保障
常见网络应用所采用的运输协议
编辑 (opens new window)