1. 程式人生 > >對網路應用層的理解(三)

對網路應用層的理解(三)

這篇部落格來進行應用層模組的最後一部分總結,內容是socket程式設計。

socket程式設計

socket程式設計,也叫做應用程式設計介面(API),先來簡單介紹一下什麼叫做應用程式設計介面(API)。下圖是兩主機之間的網路通訊,在功能上都可以看做有這麼五個層次。應用程式介面主要就是應用層和傳輸層之間的通訊問題。

這裡寫圖片描述

網路應用程式事實上就是在應用層執行的一些應用程序上的通訊問題,這些應用層遵循應用層協議,定義了應用程序之間如何互動。而兩主機應用程序之間的通訊並不是直接進行互動,而是通過底層一層一層進行處理然後經過網路到目的主機在經過底層處理到目的應用程序的。應用層由應用程序控制,底層由作業系統控制。所以在應用層和底層之間需要一個橋樑作用的部分,用來傳輸資訊,通過這個橋樑將應用程序的資料交給傳輸層,或者傳輸層交給應用程序,這個橋樑就是應用程式設計介面(API),具體如下圖。

這裡寫圖片描述

應用程式設計介面型別

  • 套接字(socket)
  • WINSOCK(Windows Socket Interface)
  • TLI(Transport Layer Interface)

我們明白socket是最讓我們熟知的一種應用程式設計介面,也是網路應用最典型的API介面,是對應用程序間通訊的抽象機制。

這裡寫圖片描述

來解釋一下上圖含義:客戶主機的應用層有工作的客戶應用程序,伺服器主機應用層有很多伺服器的應用程序,有提供web服務的,也有郵件服務的等等。上面說過應用層和傳輸層之間有一層應用程式設計介面,為了對其中的應用程序加以區分,設定了16位整數的埠號來標識程序。有了IP地址,可以知道套接字對應的哪一個主機上執行的某一個程序的套接字,進一步有了埠號,也可以明確具體是哪一個套接字。所以這樣來標識套接字:

  • 對外:IP地址+埠號
  • 對內:套接字描述符

TCP協議下socket流程

1.確定伺服器IP地址與埠號

2.建立套接字

3.分配本地端點地址(IP地址+埠號)

4.連線伺服器(套接字)

5.遵循應用層協議進行通訊

5.關閉/釋放連線