网络应用的体系结构
客户机/服务器结构(C/S)
服务器:
1.7*24小时提供服务
2.永久性访问地址/域名
3.利用大量服务器实现可扩展性
客户机:
1.与服务器通信,使用给服务器提供的服务
2.间歇性接入网络
3.可能使用动态IP地址
4.不会与其他客户直接通信
点对点结构(P2P)
没有永远在线的服务器
任意端系统/结点之间可以直接通讯
结点间歇性接入网络
结点可能改变IP地址
优点:高度可伸缩
缺点:难于管理
混合结构
如: Napster
文件传输使用P2P结构;
文件搜索采用C/S结构——集中式;
每个结点向中央服务器登记自己的内容;
每个结点向中央服务器提交查询请求,查找感兴趣的内容。
网络进程通信
网络应用的基础:进程间通信
进程:主机上运行的程序
同一主机上运行的进程之间通信依赖进程间通信机制,由操作系统提供。
不同主机上运行的进程间通信通过消息交换完成。
客户机进程:发起通信的进程。
服务器进程:等待通信请求的进程。
采用P2P架构的应用是否存在客户机进程/服务器进程之分?——存在。
套接字:Socket
进程间通信利用socket发送/接收消息。
类比于寄信:
发送方将消息送到门外邮箱,依赖传输设施将消息传送到接收方的门外,接收方从门外获取消息。
传输设施即向进程提供API——socket编程,能够选择传输协议,设置参数等。
如何寻址进程?
不同主机上的进程间通信,每个进程必须拥有标识符。
如何寻址主机?——IP地址
but!一个主机上同时存在多个进程。
端口号/Port number
为每个主机上每个需要通信的进程分配一个端口号;
(某些服务固定端口号) HTTP Server:80 Mail Server:25
进程的标识符:IP地址+端口号
应用层协议
网络应用需要遵循应用层协议(不止遵循它)
公开协议:由RFC定义;允许互操作(如HTTP,SMTP...
私有协议:多数P2P文件共享应用
协议内容:
消息类型:请求消息、响应消息
消息的语法/格式:哪些字段、字段如何描述
字段语义:字段含义
规则:进程何时/如何发送/相应消息
网络应用需求与传输层服务
数据丢失/可靠性
- 能够容忍一定的数据丢失:网络电话
- 要求100%可靠数据传输:文件传输、Email
时间/延迟
要求延迟足够低:网络电话、网络游戏
带宽:
- 要求带宽达到某一要求:网络视频
- 能够适应任何带宽:弹性应用如e-mail
Internet提供的传输服务
TCP
面向连接:客户机/服务器进程间需要建立连接(全双工)
可靠传输
流量控制:发送速度不超过接收方的处理能力
拥塞控制:网络负载过重时限制发送速度
不提供时间/延迟保障
不提供最小带宽保障
UDP
不连接
不可靠
啥也没有,看起来鸡肋,但是给了用户“自由”