网络应用进程通信

来源:互联网 发布:申请淘宝达人网址 编辑:程序博客网 时间:2024/06/09 07:00

1 网络应用的基础:进程间通信

进程:主机上运行的程序。
    
    
同一主机上运行的进程之间如何通信?

  • 进程间通信机制
  • 操作系统提供
         

不同主机上运行的进程间如何通信?

  • 消息交换
      

客户机进程: 发起通信的进程。

服务器进程: 等待通信请求的进程。

采用P2P架构的应用是否存在客户机进程/服务器进程之分?当然存在。

2 套接字:Socket

进程间通信利用socket发送/接收消息实现

类似于寄信

  • 发送方将消息送到门外邮箱
  • 发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外
  • 接收方从门外获取消息
        

传输基础设施向进程提供API

  • 传输协议的选择
  • 参数的设置

这里写图片描述

3 如何寻址进程?

不同主机上的进程间通信,那么每个进程必须拥有标识符。

如何寻址主机? ——IP地址。

Q: 主机有了IP地址后,是否足以定位进程?
A: 否。同一主机上可能同时有多个进程需要通信。

端口号/Port number

  • 为主机上每个需要通信的进程分配一个端口号
    • HTTP Server: 80
    • Mail Server:25
                

进程的标识符

  • IP地址+端口号
      

可以使用netstat -ano查看当前已经建立TCP或者UDP连接。

这里写图片描述

4 应用层协议

网络应用需遵循应用层协议。

公开协议

  • 由RFC(Request For Comments)定义
  • 允许互操作
  • HTTP, SMTP, ……
         

私有协议

  • 多数P2P文件共享应用

5 应用层协议的内容

消息的类型(type)

  • 请求消息
  • 响应消息
      

消息的语法(syntax)/格式

  • 消息中有哪些字段(field)?
  • 每个字段如何描述
      

字段的语义(semantics)

  • 字段中信息的含义
      

规则(rules)

  • 进程何时发送/响应消息
  • 进程如何发送/响应消息

这里写图片描述

原创粉丝点击