電腦之間的溝通方式 Internet Processes Communicating


我們能瀏覽網頁,上傳資料,下載檔案,聽網路音樂等,簡單來說,是藉由本地電腦(source host)的Process提供我們服務,並與遠端電腦(destination host)中的Process溝通及傳送或取得資料。

Interprocess Communication (IPC)

那麼Processes之間是怎麼溝通的?

電腦中不同Processes的溝通主要有兩種方式,一是Shared Memory,二是Message Passing。這些都是Interprocess Communication的方式。跨電腦的不同 Processes若要溝通,因為Processes不在相同的記憶體空間,因此使用第二種方式。

我們常聽到的Client以及Server, 其實說的是Client和Server Process,前者開始溝通並向後者連接和索取資料,後者等待前者連接並提供服務,這也是區分Client以及Server的方式,他們的關係是相對的。

Process 和 電腦網路之間的介面

一台電腦中的Processes之間溝通與兩台不同的電腦之間的溝通不同,需要經過電腦網路,跨過數個網路設備,才能使訊息傳遞到對方。不同網路設備各自有所需要的訊息,才能順利幫助不同電腦的Processes相互溝通。

標準化溝通的訊息是相當重要的,也因此出現了網際網路協議棧,常聽到的有TCP/IP協議棧模型以及OSI協議棧模型,但我們可以簡單分成五層,由最底層至最上層依序為:實體層(Physical Layer)、連結層(Link Layer)、網路層(Network Layer)、傳輸層(Transport Layer)以及應用層(Application Layer)。各層為上層提供服務,其下層為自己提供服務。Processes之間溝通的方式屬於應用層,提供應用層服務的是傳輸層。

好在我們一般不用處理傳輸層以下的事情,作業系統會協助我們完成。但至少Process要委託電腦進行網路溝通,其方式是透過Socket這個介面。Socket是藉由應用層和傳輸層的Application Programming Interface (API), 透過呼叫Socket 這個API,我們得以簡單在不同電腦之間進行Processes的溝通。

一般Process的開發者能透過Socket影響傳輸層的有:選擇傳輸層協議(TCP, UDP), 調整一些傳輸層Header(maximum buffer, maximum segment sizes)。另外為使資料順利到達遠端電腦,需要告訴Socket目的地的IP以及Port。


See also