应用层之进程通信

目录


文章目录

  • 应用层之进程通信
  • 目录
  • 进程和计算机网络之间的接口
  • 套接字
  • 进程寻址(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.

进程和计算机网络之间的接口

前面我们提到了发送进程发送报文给计算机网络,接收进程从计算机网络中接收报文。那么发送进程和计算机网络之间的软件接口是什么呢?套接字

套接字

如果说进程是个房子,那么套接字就是这个房子的门。看下面这个图就明白了

架构中应用层与技术层合并层_Web


套接字

  • 是同一个主机中应用层和传输层的接口
  • 应用和网络之间的应用编程接口(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