TCP/IP 分層
分層結構如下:
- 應用層:負責處理特定的應用程序細節。包括:Telnet (遠程登錄)、FTP (文件傳輸協議)、SMTP (簡單郵件傳輸協議)、SNTP (簡單網絡管理協議);
- 傳輸層:主要功能爲兩臺主機上的應用程序提供端到端的通信,通過端口號識別兩臺主機上相對應程序之間進行通信。主要包括:TCP (傳輸控制協議)、UDP (用戶數據報協議);
- TCP 協議:是一種面向連接的傳輸層協議,確保兩臺主機提供高可靠性的數據通信。它的任務是把來自應用程序的數據分成合適的小塊交給下面的網絡層,確認接收到數據的分組。爲數據塊設置超時時鐘,一旦超過該時間就重新發送數據;
- UDP 協議:是一種面向無連接的傳輸層協議,爲應用程序發送和接收數據報,只是將數據報的分組從一臺主機發送到另一臺主機,但並不保證數據報能夠到達另一端,任何必須的可靠性都由應用程序提供。UDP 協議常用於分組數據較少或多播、廣播通信以及視頻通信等多媒體領域;
- 網絡層:處理分組在網絡中的活動,例如分組的選路。主要包括:IP 協議(網際協議)、ICMP 協議(Internet 互聯網控制報文協議)、IGMP 協議(Internet 組管理協議);
- IP 協議:負責基於 IP 地址轉發數據包,不具有重發機制,是一種不可靠、無連接的傳輸協議,整個互聯網能夠通過把 IP 地址的作爲主機標識,跨越網絡傳送和接收數據包;
- ICMP 協議:是 IP 協議的附屬協議,IP 層用它來與其他主機或路由器交換錯誤報文或其他重要信息。IP 數據包在發送過程中發生異常導致無法到達目的端,則使用 ICMP 協議給發送端發送一個異常消息通知,該協議也可用來檢查網絡的健康狀態;
- IGMP 協議:它用來把一個 UDP 數據報多播到多個主機;
- 鏈路層:處理與傳輸媒介相關的物理接口細節。主要包括:操作系統的設備驅動程序、計算機中對應的網絡接口卡;
互聯網的地址
按 IP 地址格式分類
互聯網上的每個接口必須有一個唯一的 IP 地址, IP 地址長度 32 bit,,即 4 個字節,每個 IP 地址都由 標識位、網絡號 和 主機號三部分組成。32 位二進制數地址通常寫成四個十進制數, 每個十進制整數對應一個字節,這就是“點分十進制表示法”。 第一個十進制整數即可區分 IP 地址類型:0 ~ 127 A類,128 ~ 191 B類,192 ~ 223 C類, 224 ~ 239 D類, 240 ~ 225 E類;下面是五類不同的 IP 地址的結構:
A類地址:
- 十進制取值範圍 :0.0.0.0 ~ 127.255.255.255;
- 二進制取值範圍 :0(標識位) 0000000(網絡號) 00000000 00000000 00000000(主機號) ~ 0(標識位) 1111111(網絡號) 11111111 11111111 11111111(主機號);
- 十進制取值範圍 : 128.0.0.0 ~ 191.255.255.255;
- 二進制取值範圍 :10(標識位) 000000 00000000(網絡號) 00000000 00000000(主機號) ~ 10(標識位) 111111(網絡號) 11111111 11111111 11111111(主機號);
- 十進制取值範圍 : 192.0.0.0 ~ 223.255.255.255;
- 二進制取值範圍 :110(標識位) 00000 00000000 00000000(網絡號) 00000000(主機號) ~ 110(標識位) 11111 11111111 11111111(網絡號) 11111111(主機號);
- 十進制取值範圍 : 224.0.0.0 ~ 239.255.255.255;
- 二進制取值範圍 : 1110(標識位) 0000 00000000 00000000 00000000 00000000(多播組號) ~ 1110(標識位) 1111 11111111 11111111 11111111(多播組號);
- 十進制取值範圍 :240.0.0.0 ~ 255.255.255.255;
- 二進制取值範圍 :11110(標識位) 000 00000000 00000000 00000000(保留位) ~ 11110(標識位) 111 11111111 11111111 11111111(保留位);
按照目的地址分類
IP 地址按目的地址分類:
- 單播地址:目的端爲單個主機;
- 廣播地址:目的端是給定網絡的所有主機;
- 多播地址:目的端是同一組的所有主機;
域名系統
儘管可以通過 IP 地址識別主機上的網絡接口,進而訪問主機,但是我們習慣於使用便於記憶的主機名。域名系統(DNS)可以提供 IP 地址和主機名之間的映射信息,它是一個分佈的數據庫。所以在應用程序中可以調用系統函數實現 IP 地址和主機名之間的轉換。
封裝
當應用程序使用 TCP 傳輸數據時,數據被送入到協議棧中,然後逐個通過每一層直到被當作一串比特流送入網絡。其中每一層都要增加一些首部信息,因爲方便根據這些首部信息確認數據屬於哪一層或哪個協議,下面是應用程序使用 TCP 傳輸數據的過程:
分用
分用: 目的主機在鏈路層接收到以太網數據幀時, 該數據就開始從協議棧中由底向上逐層上升,在每層都去掉該層的首部信息,並校驗首部信息是否正確,該過程就是分用;
發送數據:從應用層到鏈路層逐層加數據包是封裝;接收數據:從鏈路層到應用層逐層解包是分用;
端口號
端口號是在運輸層配合 TCP 或 UDP 協議使用的,使 TCP 或 UDP 能識別主機應用程序,脫離這兩個協議端口號將毫無用處;
數據相關概念
- 包 :TCP / IP 協議中,每一層的數據都可以成爲包;
- 幀 (以太網數據幀):鏈路層包的單位;
- 數據包 (IP數據報):網絡層以上包的單位,IP 給鏈路層的數據包稱爲 IP 數據報 (IP datagram);
- 段 (TCP 報文段) : TCP 數據包,TCP 傳遞給 IP 的數據包成爲 TCP 報文段 (TCP segment);
- 消息: 應用層的數據包;