1. 程式人生 > 其它 >2021-2022-1-diocs-Unix/Linux系統程式設計第十二週學習筆記

2021-2022-1-diocs-Unix/Linux系統程式設計第十二週學習筆記

20191218 2021-2022-1-diocs-TCP/IP和網路程式設計

思維導圖

知識總結

  1. 論述TCP/IP協議及其應用,具體包括TCP/IP棧、IP地址、主機名、DNS、IP資料包和路由器;
  2. 介紹TCP/IP網路中的UDP和TCP協議埠號資料流;
  3. 闡述伺服器—客戶機計算模型套接字程式設計介面;
  4. 介紹Web和CGI程式設計,解釋HTTP程式設計模型、Web頁面和Web瀏覽器;
  5. 展示如何配置Linux HTTPD伺服器來支援使用者Web頁面、PHP和CGI程式設計;
  6. 闡釋客戶機和伺服器端動態Web頁面。

網路程式設計基礎

  • TCP/IP協議

TCP/IP協議包括ICMP、IP、telnet、udp等協議,是利用IP進行通訊時所必須用到的協議群的統稱。

資料流路徑

  • IP主機和IP地址

    • 主機

      主機是支援TCP/IP協議的計算機或裝置。

      每個主機由一個32位的IP地址來標識。為方便起見,32位的IP地址號通常用點記法(點分十進位制)表示,例如:134.121.64.1,其中各個位元組用點號分開。主機也可以用主機名來表示,如dns1.eec.wsu.edu。

    • IP地址
      分為兩部分,即NetworkID欄位HostID欄位
      根據劃分,IP地址分為A~E類。例如,一個B類P地址被劃分為一個16位NetworkID,其中前2位是10,然後是一個16位的HostID欄位。發往P地址的資料包首先被髮送到具有相同networkID 的路由器。路由器將通過HostID將資料包轉發到網路中的特定主機。

      每個主機都有一個本地主機名localhost,預設P地址為127.0.0.1。本地主機的鏈路層是一個回送虛擬裝置,它將每個資料包路由回同一個 localhost。

  • IP協議
    用於在IP主機之間傳送/接收資料包。IP盡最大努力執行。IP主機只向接收主機發送資料包,但它不能保證資料包會被髮送到它們的目的地,也不能保證按順序傳送。

  • IP資料包

    IP頭傳送方地址接收方IP地址以及資料組成。

    IP資料包格式

    每個資料包的大小最大為64KB。IP頭包含有關資料包的更多資訊,例如資料包的總長度、資料包使用TCP還是UDP、生存時間(TTL)計數、錯誤檢測的校驗和等。

  • 路由器

    接收和轉發資料包的特殊IP主機。

    一個IP資料包可能會經過許多路由器,或者跳躍到達某個目的地。每個IP包在IP報頭中都有一個8位生存時間(TTL)計數,其最大值為255。在每個路由器上,TTL會減小1。如果TTL減小到0,而包仍然沒有到達目的地,則會直接丟棄它。這可以防止任何資料包在IP網路中無限迴圈

  • UDP

    在IP上執行,用於傳送/接收資料報。

    與IP類似,UDP不能保證可靠性,但是快速高效
    如ping是一個向目標主機發送帶時間戳UDP包的應用程式。接收到一個pinging資料包後,目標主機將帶有時間戳的UDP包回送給傳送者,讓傳送者可以計算和顯示往返時間。
    如果目標主機不存在或宕機,當TTL減小為0時,路由器將會丟棄pinging UDP資料包。在這種情況下,使用者會發現目標主機沒有任何響應。使用者可以嘗試再次ping,或者斷定目標主機宕機。

  • TCP

    一種面向連線的協議,用於傳送/接收資料流。

    TCP也可在IP上執行,但它保證了可靠的資料傳輸。通常,UDP類似於傳送郵件的USPS,而TCP類似於電話連線

  • 埠編號

    埠號是分配給應用程式的唯一無符號短整數

    要想使用UDP或TCP,應用程式(程序)必須先選擇或獲取一個埠號。前1024個埠號已被預留。其他埠號可供一般使用。應用程式可以選擇一個可用埠號,也可以讓作業系統核心分配埠號。

    應用程式 = (主機IP, 協議, 埠號)

  • 網路和主機位元組序
    計算機可以使用大端位元組序,也可以使用小端位元組序。在網際網路上,資料始終按網路序排列,這是大端。在小端機器上,例如基於Intel x86的PC,htons()、htonl()、ntohs()、ntohl()等庫函式,可在主機序和網路序之間轉換資料。

  • TCP/IP網路中的資料流