网络应用的基础:进程之间通信
进程:
- 主机上运行的程序
同一主机上运行的进程之间如何通信?
- 进程间通信机制
- 操作系统提供
不同主机上运行的进程之间如何通信?
- 消息交换
- 客户机进程:发起通信的进程
- 服务器进程:等待通信请求的进程
套接字:Socket
- 进程间通信利用Socket发送/接受消息实现
- 类似于寄信
- 发送方将消息送到门外邮箱
- 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
- 接收方从门外获取消息
- 传输基础设施向进程提供API
- 传输协议的选择
- 参数的设置
- 开发网络应用,网络应用的开发:Socket编程
如何寻址进程?(IP地址加端口号)
- 不同主机上的进程间通信,那么每个进程必须拥有标识符:
- 如何寻址主机?——IP地址标志主机
- Q:主机有了IP地址之后,是否足以定位进程?
- A:否。同一主机上可能同时有多个进程需要通信。
- 端口号/Port number
- 为主机上每个需要通信的进程分配一个端口号
- HTTP Server:80
- Mail Server:25
- 进程的标识符
- IP地址+端口号
应用层协议:
- 网络应用需遵循应用层协议
- 公开协议
- 由RFC(文档,文档号查询相关协议)定义
- 允许互操作:所有软件统一使用一种,标准化
- HTTP,SMTP
- 私有协议
- 多数P2P文件共享应用
应用层协议的内容:
- 消息的类型
- 请求消息
- 响应消息
- 消息的语法/格式
- 消息中有哪些字段
- 每个字段是如何描述的
- 字段的语义
- 字段中信息的含义
- 规则
- 进程何时发送/响应消息
- 进程如何发送/响应消息