应用层之进程通信
目录
文章目录
- 应用层之进程通信
- 目录
- 进程和计算机网络之间的接口
- 套接字
- 进程寻址(Addressing Processes)
- 端口号(port number)
不同主机之间的应用是如何通信的呢?
这句话有点不准确!因为在操作系统的术语中,应用和进程是不同的,进程是running的应用。所以我们研究不同主机之间应用的通信,其实就是研究不同主机之间进程是如何通信的!
所以我们来研究进程是如何通信的!
当两个进程在同一个主机上的时候,直接在主机操作系统的指挥下进行通信就可以了!
我们现在研究的是不同主机上的进程如何通信!
答案是:通过交换报文(message) across the computer network
发送进程创建报文,然后将报文发送到网络中。
接收进程收到报文,可能会回复个报文作为应答。
说了个大概,下面我们具体看:
首先,网络应用包括了成对的通过网络彼此发送报文的进程。
- 在Web应用中,浏览器进程和Web服务器进程交换报文。
- 在P2P文件共享系统中,一个文件从一个peer的进程被传送到另一个peer上的进程。
对每一对正在通信的进程,我们通常把一个进程标记为client,一个标记为server. (注意这里的标记和网络应用体系结构无关)
- 在Web 中,一个浏览器就是一个client process, 一个Web 服务器就是一个服务器进程。
- 在P2P文件共享中,正在下载文件的peer被标记为client, 正在上传文件的peer被标记为server.
你可能注意到了在一些应用中,例如P2P文件共享,一个进程既可以是client,也可以是server。确实,在P2P文件共享的系统的进程既可以上传文件,也可以下载文件。然而,在任何给定的一对进程的会话中,我们仍然是智能标记为一个进程是client,一个进程是server. 也就是说,在任意一个会话中,client只有一个,server只有一个。
好了,下面给出了一个标准的定义:
最初发起通信会话的进程标记为client, 等待着被联系开始会话的进程就是server.
好了,我们接着举Web的例子
在Web中,浏览器进程initializes contact with a Web server process; 所以浏览器进程是client, Web服务器进程是server.
在p2p文件共享中,当peer A asks peer B to send a specific file, peer a is the client, peer B is the server in the context of this specific communication session.
进程和计算机网络之间的接口
前面我们提到了发送进程发送报文给计算机网络,接收进程从计算机网络中接收报文。那么发送进程和计算机网络之间的软件接口是什么呢?套接字
套接字
如果说进程是个房子,那么套接字就是这个房子的门。看下面这个图就明白了
套接字
- 是同一个主机中应用层和传输层的接口
- 应用和网络之间的
应用编程接口(API)
(端系统为应用程序提供了应用程序编程接口)
套接字是应用进程和传输层协议的接口。发送端的应用pushed messages through the socket。 在接收端应用的socket, 传输层有责任get the messages to the socket of the receiving process.
应用程序开发者可以控制套接字在应用层一端的一切,但是几乎无法控制套接字在传输层端的东西。
应用程序开发者可以对套接字的传输层端控制以下东西
- 传输层使用的什么协议?是TCP 还是 UDP? 一旦应用开发者选定了传输层使用的协议,应用就建立在由那个传输层协议提供的传输层服务之上
- 固定部分传输层的参数,例如最大缓存,最大报文段大小
进程寻址(Addressing Processes)
接收报文的进程的地址是多少?
为了表示接收进程,两个信息必须要确定
- 接收进程所在主机的地址
- 接收进程在目的地主机中的标识符
在因特网中,主机由它的IP地址所标识。 IP地址是一个32位的二进制串
OK第一个问题解决
第二个问题:接收进程在目的地主机中的标识符
端口号(port number)
一些popular的应用已近被赋予了特定的端口号,举个例子。
Web服务器:80
邮件服务器进程(使用SMTP协议):25