1. 程式人生 > >Java網路程式設計 -- 網路協議

Java網路程式設計 -- 網路協議

OSI網路七層協議

為使不同計算機廠家的計算機能夠互相通訊,以便在更大的範圍內建立計算機網路,有必要建立一個國際範圍的網路體系結構標準。OSI網路七層協議就是在這個基礎上制定出來的,其從最底層開始依次是物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層。

各層主要功能

物理層:使原始的資料位元流能在物理介質上傳輸
資料鏈路層:通過校驗,確認和反饋重發等手段,形成穩定的資料鏈路
網路層:進行路由選擇和流量控制(IP協議)
傳輸層:提供可靠的埠到埠的資料傳輸服務(TCP/UDP協議)
會話層:負責建立,管理和終止程序之間的會話和資料交換
表示層:負責資料格式轉換,資料加密和解密,壓縮與解壓縮等

應用層:為使用者的應用程序提供網路服務

傳輸控制協議TCP

傳輸控制協議TCP是網路中一個重要的傳輸層協議。TCP提供面向連線的,可靠,有序的位元組流傳輸服務。應用程式在使用TCP之前,需要通過三次握手建立TCP連線。連線結束後需要通過四次揮手斷開連線。

TCP握手機制

建立連線時三次握手:

斷開連線時四次揮手:

使用者資料報協議UDP

使用者資料報協議UDP是網路中一個重要的傳輸層協議。提供無連線的,不可靠的資料報盡力傳輸服務。由於UDP無需建立連線,首部開銷小,協議格式也更簡潔。

TCP和UDP的比較

TCPUDP
面向連線 無連線
提供可靠保證 不可靠
相對較慢 相對較快
佔用資源多 佔用資源少

Socket程式設計

Socket程式設計是網路中應用最廣泛的網路應用程式設計介面,實現了三種底層協議介面

  • 資料報型別套接字SOCK_DGRAM (面向UDP介面)
  • 流式套接字SOCK_STREAM(面向TCP介面 )
  • 原始套接字SOCK_RAW(面向網路層協議介面IP,ICMP等)

主要Socket API及其呼叫過程:

Socket API核心方法
只能用於服務端的listen(), accept()方法,只能用於客戶端的connecty()方法,還有socket(), bind(), send(), recv(), sendTo(), recvFrom(), close()等方法。