儘管網絡應用品種繁多是有許多彼此交錯的部件,其軟件卻幾乎總處於核心地位。網絡應用的軟件分佈於兩個或以上的端系統(即主機)。例如,Web應用包括彼此通信的兩部分軟件:運行在用戶的主機(PC機、MAC機、工作站等)中的瀏覽器軟件,以及運行在Web服務器上的Web服務器軟件。Telnet應用同樣由分別運行於本地主機和遠程主機中的兩部分軟件構成。至於多方視頻會議,參與會議的每臺主機上都運行着一部分軟件。
用操作系統的行話來說,彼此通信的實際上不是軟件部件(即程序)本身,而是進程。我們可以把進程看成是在端系統中運行着的程序。運行在同一個端系統上的進程彼此間通過使用進程間通信手段通信。進程間通信的具體規則由端系統的操作系統決定。本文不關心同一臺主機內的進程間通信,而關心運行在不同主機(操作系統也可能不一樣)的進程間的通信。運行在不同端系統上的進程通過網絡交換消息彼此通信。發送進程創建消息並將之傳入網絡;接收進程收取這些消息,並可能發送消息作爲響應,如下圖所示。每個網絡應用都有各自的應用層協議,它定義在進程間交流的消息的格式和順序,以及在送出或收到消息時採取的行動。
圖1:彼此通信的應用
應用層是我們着手研究協議的好地方。我們已經熟悉依賴於協議的許多應用。這將給我們一種似曾相識的感覺,知道協議的目的所在,有助於我們瞭解以後學習傳輸層協議、網絡層協議和數據鏈路層協議時會碰到的許多同樣的問題。