1. 程式人生 > 實用技巧 >網路模型、scoket套接字、udp概念及程式碼實現、tcp概念及程式碼實現

網路模型、scoket套接字、udp概念及程式碼實現、tcp概念及程式碼實現

網路模型的概念

  OSI七層模型(應表會傳網數物)

    7.應用層
    6.表示層
    5.會話層
    4.傳輸層
    3.網路層
    2.資料鏈路層
    1.物理層

  TCP/IP五層模型(將OSI七層模型的應用層, 表示層, 會話層抽象為一層)

    5.應用層
    4.傳輸層
    3.網路層
    2.資料鏈路層
    1.物理層

  TCP/IP四層模型(將TCP/IP五層模型中的資料鏈路層和物理層合併為網路介面層(資料鏈路層))

    4.應用層
    3.傳輸層
    2.網路層
    1.網路介面層(資料鏈路層)

  模型各層的作用:

    應用層:與網路相關的程式通過網路與其他程式通訊使用的資料格式規範

    傳輸層:解決諸如端到端可靠性(資料是否已經到達目的地)和保證資料按照正確的

        順序到達這樣的問題。TCP、UDP都是傳輸層協議

    網路層:解決在一個單一網路上傳輸資料包的問題

    資料鏈路層:它是資料包從一個裝置的網路層傳輸到另外一個裝置的網路層遵循的規範

      

socket語法格式介紹:

  import socket

  socket.socket(AddressFamily, Type)

  說明:函式 socket.socket建立一個socket,該函式帶有兩個引數

    Address Family:可以選擇 AF_INET(用於 Internet 程序間通訊) 或者 AF_UNIX(用於同一臺機器程序間通訊),實際工作中常用AF_INET

    Type:套接字型別,可以是 SOCK_STREAM(流式套接字,主要用於 TCP 協議)或者 SOCK_DGRAM(資料報套接字,主要用於 UDP 協議)

  建立一個udp socket(udp套接字)

    

  建立一個tcp socket(tcp套接字)

    

  總結:

    套接字使用流程 與 檔案的使用流程很類似:

      建立套接字

      使用套接字收/發資料

      關閉套接字

udp套接字:

  傳送:sendto()

  socket基本使用: 

    

  傳送任意資料:

    

  迴圈傳送資料:

    

  帶有退出迴圈功能的傳送:

    

  接收:

    

  繫結埠用來接收資料:

    

  解析接收到的資料:

    

  迴圈接收並顯示資料:

    

  繫結埠傳送資料:

    

總結:

  建立socket套接字

    

  傳送資料:

    

  接收資料:

    

udp完成一個聊天

  使用udp完成一個能夠收發訊息的套接字

    

  udp聊天

    

  udp聊天升級

    

tcp套接字

  tcp套接字的概念

    TCP協議,傳輸控制協議(英語:Transmission Control Protocol,縮寫為TCP)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。

    TCP通訊需要經過建立連線、資料傳送、終止連線三個步驟

    tcp通訊模型,需要在通訊開始前,建立相關的連結,類似於現實生活中的打電話。

  tcp的特點:

    面向連線:通訊雙方必須先建立連線才能進行資料的傳輸,雙方都必須為該連線分配必要的系統核心資源,以管理連線的狀態和連線上的傳輸。

          雙方間的資料傳輸都可以通過這一個連線進行。完成資料交換後,雙方必須斷開此連線,以釋放系統資源。

          (一對一、TCP不適用於廣播的應用程式,基於廣播的應用程式請使用UDP協議)

    可靠傳輸:①tcp採用傳送應答機制②超時重傳③錯誤校④流量控制和阻塞管理

  udp的特點

    udp通訊模型中,在通訊開始之前,不需要建立相關的連結

  tcp與udp的不同點

    面向連線(確認有建立三方交握,連線已建立才作傳輸。)

    有序資料傳輸

    重發丟失的資料包

    捨棄重複的資料包

    無差錯的資料傳輸

    阻塞/流量控制

  tcp嚴格區分客服端與服務端

    客戶端

      建立套接字(SOCK_STREAM)

      連結伺服器

      傳送資料/接收資料

      關閉套接字

      

    服務端

      建立套接字(買個手機)

      繫結本地資訊(插入手機卡)

      設定監聽(設計手機響鈴模式)

      等待客戶連結(等待別人的電話)

      接收客服請求

      傳送資訊

      關閉套接字(兩個)

      

    迴圈為多個客戶端服務

      

    迴圈為多個客戶端服務且多次服務一個客戶端

      

  總結: