Java網路程式設計 -- 網路協議
阿新 • • 發佈:2019-08-14
OSI網路七層協議
為使不同計算機廠家的計算機能夠互相通訊,以便在更大的範圍內建立計算機網路,有必要建立一個國際範圍的網路體系結構標準。OSI網路七層協議就是在這個基礎上制定出來的,其從最底層開始依次是物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層。
各層主要功能
物理層:使原始的資料位元流能在物理介質上傳輸
資料鏈路層:通過校驗,確認和反饋重發等手段,形成穩定的資料鏈路
網路層:進行路由選擇和流量控制(IP協議)
傳輸層:提供可靠的埠到埠的資料傳輸服務(TCP/UDP協議)
會話層:負責建立,管理和終止程序之間的會話和資料交換
表示層:負責資料格式轉換,資料加密和解密,壓縮與解壓縮等
傳輸控制協議TCP
傳輸控制協議TCP是網路中一個重要的傳輸層協議。TCP提供面向連線的,可靠,有序的位元組流傳輸服務。應用程式在使用TCP之前,需要通過三次握手建立TCP連線。連線結束後需要通過四次揮手斷開連線。
TCP握手機制
建立連線時三次握手:
斷開連線時四次揮手:
使用者資料報協議UDP
使用者資料報協議UDP是網路中一個重要的傳輸層協議。提供無連線的,不可靠的資料報盡力傳輸服務。由於UDP無需建立連線,首部開銷小,協議格式也更簡潔。
TCP和UDP的比較
TCP | UDP |
---|---|
面向連線 | 無連線 |
提供可靠保證 | 不可靠 |
相對較慢 | 相對較快 |
佔用資源多 | 佔用資源少 |
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()等方法。