應用程序跨越網絡的通信
- 系統調用和應用接口程式設計
- 大多數作業系統使用系統調用(System call)的機制在應用程式和作業系統之間傳遞控制權。又稱之為應用程式設計接口API
-
socket -
socket
- 當應用程序(客戶或者伺服器)需要使用網絡通信的時候,必須首先發出socket系統調用,請求作業系統為其創造一個套接字,這個調用的實際過程是請求作業系統把網絡通信所需要的一切資源(存儲空間,CPU時間,網絡帶寬等等)配置設定給該應用程序。作業系統為這些資源的總和用一個叫做套接字描述(socket descriptor)的号碼,然後把該号碼傳回給應用程序。
- socket階段:
-
socket
- 連接配接建立階段:當套接字被建立後,它的端口号和IP位址都是空的,是以應用程序需要綁定套接字的本地端口号和IP位址,在調用綁定之後,還必須要調用監聽把套接字設定為被動方式,以便于随時都能夠用接受客戶的服務請求。伺服器接着就調用接受,以便把遠地的客戶程序發送過來的連接配接請求提取出來,,由于接受要完成的動作很多,這是因為一個伺服器必須能夠同時處理多個連接配接,這種伺服器通常稱為并發方式的工作伺服器。然後指明對方的IP位址和端口号,就可以建立連接配接了。
- 用戶端和服務端都在TCP上使用發送系統調用傳送資料。以及使用接收系統調用接收資料。
- 在使用者端與伺服器端建立連接配接之前,伺服器端一直處于監聽模式下,後面的資料發送,接收等操作并不會執行,直到有用戶端連接配接,才會執行資料的發送或者接收。這個等待操作就叫做阻塞。
- 連接配接釋放:一旦用戶端或者伺服器端結束使用套接字,就把套接字撤銷。這時候調用close釋放連接配接和撤銷套接字。
-
socket - UDP使用者隻提供無連接配接服務,是以不能使用監聽和接受系統調用。
-