Java--網路程式設計

curry库-04049發表於2024-08-31

目錄
  • 計算機網路定義
  • 網路程式設計定義
  • 網路體系結構
    • OSI 七層參考模型
    • TCP/IP 四層協議
    • TCP/IP 協議族
        • TCP/IP 協議關係
    • 常見網路協議
        • IP 協議
        • TCP 協議
        • UDP 協議
        • TCP 與 UDP 區別
        • HTTP 協議
        • Socket 套接字
        • 網路通訊五要素
        • Socket 通訊模型
        • Socket 客戶端程式設計
        • Socket 伺服器端程式設計

計算機網路定義

計算機網路是透過傳輸介質、通訊設施和網路通訊協議,把分散在不同地點的計算機裝置互連起來,實現資源共享和資料傳輸的系統

網路程式設計定義

網路程式設計就是編寫程式使聯網的兩個(或多個)裝置(例如計算機)之間進行資料傳輸。Java 語言對網路程式設計提供了良好的支援,透過其提供的介面我們可以很方便地進行網路程式設計

網路體系結構

計算機網路體系結構是計算機網路層次和協議的集合,網路體系結構對計算機網路實現的功能,以及網路協議、層次、介面和服務進行了描述,但並不涉及具體的實現

OSI 七層參考模型

  • 應用層:應用層為OSI的最高層,是直接為應用程序提供服務的。
  • 表示層:表示層功能是把應用層提供的資訊變換為能夠共同理解的形式
  • 會話層:會話層的主要功能是負責應用程式之間建立、維持和中斷會話
  • 傳輸層:傳輸層起著承上啟下的作用,涉及源端節點到目的端節點之間可靠的資訊傳輸
  • 網路層:網路層涉及源主機節點到目的主機節點之間可靠的網路傳輸
  • 資料鏈路層:資料鏈路層的功能是實現計算機網路中相鄰節點之間的可靠傳輸
  • 物理層:資料鏈路層的功能是實現計算機網路中相鄰節點之間的可靠傳輸
    目錄
    • 計算機網路定義
    • 網路程式設計定義
    • 網路體系結構
      • OSI 七層參考模型
      • TCP/IP 四層協議
      • TCP/IP 協議族
          • TCP/IP 協議關係
      • 常見網路協議
          • IP 協議
          • TCP 協議
          • UDP 協議
          • TCP 與 UDP 區別
          • HTTP 協議
          • Socket 套接字
          • 網路通訊五要素
          • Socket 通訊模型
          • Socket 客戶端程式設計
          • Socket 伺服器端程式設計

TCP/IP 四層協議

TCP/IP參考模型採用 4 層的層級結構,每一層都呼叫它的下一層所提供的協議來完成自己的需求

  • 應用層:應用層為 Internet 中的各種網路應用提供服務
  • 傳輸層:傳輸層負責在應用程序之間建立端到端的連線和可靠通訊,它只存在與端節點中
  • 網路層:網路層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網路或主機
  • 網路介面層:TCP/IP協議對網路介面層沒有給出具體的描述,網路介面層對應著OSI參考模型的物理層和資料鏈路層

TCP/IP 協議族

image-20210803110246364

TCP/IP 協議關係

image-20210803110308915

  • 上層協議依賴下層協議提供的支援與服務
  • 不同協議提供不同的服務以滿足不同的網路需求

常見網路協議

IP 協議

IP 協議的作用在於把計算機網路中各種裝置終端的資料包準備無誤的傳遞給對方

  • IP 地址:IP 地址也叫邏輯地址或動態,由網路層路由器為計算機網路上的每一臺主機分配的 32 位數字組成的地址,該地址可以動態修改,如 192.168.229.11
  • MAC 地址:MAC 地址也叫實體地址或硬體地址,由 48 位元長的 16 進位制數字組成,由裝置廠家分配全球唯一且不能修改,如 44-45-53-54-00-00
TCP 協議

TCP(傳輸控制協議)是面向連線的協議,它的作用是為不同主機的應用層之間建立可靠的、像管道一樣的連線,以確保不同主機之間能夠相互通訊

TCP 的三次握手與四次揮手

image-20210803110454430

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料

  • 第一次握手(客戶端傳送請求):客戶機傳送連線請求報文段到伺服器,並進入SYN_SENT狀態,等待伺服器確認。
  • 第二次握手(服務端回傳確認):伺服器收到客戶端連線請求報文,如果同意建立連線,向客戶機發回確認報文段(ACK)應答,併為該TCP連線分配TCP快取和變數。
  • 第三次握手(客戶端回傳確認):客戶機收到伺服器的確認報文段後,向伺服器給出確認報文段(ACK),並且也要給該連線分配快取和變數。此包傳送完畢,客戶端和伺服器進入ESTABLISHED(TCP連線成功)狀態,完成三次握手。
UDP 協議

UDP(使用者資料包協議),它是 TCP/IP 協議簇中無連線的傳輸層協議,提供快速但不一定可靠的傳輸服務

image-20210803110622021

UDP協議由兩部分組成:首部和資料。首部僅有8個位元組,包括源埠和目的埠、長度(UDP用於資料包的長度)、校驗和

TCP 與 UDP 區別

image-20210803110648147

HTTP 協議

HTTP(超文字傳輸協議),是一種為分散式、合作式、多媒體資訊系統服務,面向應用層的協議,是 Internet 上目前使用最廣泛的應用層協議,它基於傳輸層的 TCP 協議進行通訊,HTTP 協議是通用的、無狀態的協議。

image-20210803110719558

Socket 套接字

Socket 套接字,實際上是對 TCP/IP 協議的封裝,Socket 本身並不是協議,而是一個呼叫介面(API),透過 Socket,我們才能使用 TCP/IP 協議。

  • Socket 是通訊的基石,是支援 TCP/IP 協議的網路通訊的基本操作單元
  • TCP/IP 只是一個協議棧,就像作業系統的執行機制一樣,必須要具體實現,同時還要提供對外的操作介面。TCP/IP 也要提供可供程式設計師做網路開發所用的介面,這就是 Socket 程式設計介面(支援 TCP 或者 UDP 程式設計介面)
  • Java 網路程式設計主要涉及到的內容是 Socket 套接字程式設計
網路通訊五要素

image-20210803110904049

Socket 通訊模型

Socket 程式設計 = Socket 客戶端程式設計(Client) + Socket 伺服器端程式設計(Server)

image-20210803110949122

Socket 客戶端程式設計
  • 步驟一:建立 Socket 套接字例項(繫結伺服器端 IP 地址和埠號)

    Socket socket = new Socket(“127.0.0.1”, 9999 );
    
  • 步驟二:建立網路輸入/輸出流

    InputStream inputStream    = socket.getInputStream();
    OutputSteam outputStream = socket.getOutputStream()
    
  • 步驟三:關閉 Socket 連線

    socket.close();
    
Socket 伺服器端程式設計
  • 步驟一:建立 ServerSocket 套接字例項(繫結監聽埠號)

    ServerSocket serverSocket = new ServerSocket( 9999 );
    
  • 步驟二:監聽來自客戶端的網路連線

    Socket socket = serverSocket.accept();
    
  • 步驟三:建立網路輸入/輸出流

    InputStream inputStream    = serverSocket.getInputStream();
    OutputSteam outputStream = serverSocket.getOutputStream()
    
  • 步驟四:關閉 Socket 連線 和 ServerSocket 連線

    socket.close();
    serverSocket.close();
    

相關文章