Table of Contents
網絡模型
OSI 七層模型
+----------+ +----------+
| 應用層 |<----------------------------------------------------------->| 應用層 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 表示層 |<----------------------------------------------------------->| 表示層 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 會話層 |<----------------------------------------------------------->| 會話層 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 傳輸層 |<----------------------------------------------------------->| 傳輸層 |
+----+-----+ +----+-----+
| +------------------------------------------+ |
+----+-----+ | +----------+ +----------+ | +----+-----+
| 網絡層 |<-----+-->| 網絡層 |<--------->| 網絡層 |<---+---------->| 網絡層 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 數據鏈路 |<-----+-->| 數據鏈路 |<--------->| 數據鏈路 |<---+---------->| 數據鏈路 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | 內部子網 | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 物理層 |<-----+-->| 物理層 |<--------->| 物理層 |<---+---------->| 物理層 |
+----------+ | +----------+ +----------+ | +----------+
+------------------------------------------+
七層的基本原則
- 應該在需要一個不同抽象體的地方創建一層
- 每一層都應該執行一個明確定義的功能
- 每一層功能的選擇應該向定義國際標准化協議的目標看齊
- 層與層邊界的選擇應該使跨越接口的信息流最小
- 層數應該足夠多,保證不同的功能不會被混雜在同一層中,但同時層數不能太多,以免體系變得過於龐大
不同層的功能
- 物理層 :關注於信道上傳輸的原始比特,問題集中在如何通信,物理接口,以及傳輸介質等.實現傳輸方法.
- 數據鏈路層 :關注差錯檢測,流量控制,介質訪問控制等.實現數據的傳遞.
- 網絡層 :主要控制子網運行,將數據包從源端路由到接收方,處理擁塞,關注服務質量.實現主機間的通信.
- 傳輸層 :必要時將上層數據分成小單元,高效實現上下隔離以防止下層變化導致上層協議不可用,實現主機間進程與進程的通信.
- 會話層 :允許用戶建立會話,並提供各種服務.
- 表示層 :將下層的數據轉化為信息.
- 應用層 :最高層應用之間交換數據的標准,
TCP/IP 五層模型
+----------+ +----------+
| 應用層 |<----------------------------------------------------------->| 應用層 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 傳輸層 |<----------------------------------------------------------->| 傳輸層 |
+----+-----+ +----+-----+
| +------------------------------------------+ |
+----+-----+ | +----------+ +----------+ | +----+-----+
|internet層|<-----+-->|internet層 |<--------->|internet層|<---+---------->|internet層 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | 內部子網 | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 鏈路層 |<-----+-->| 鏈路層 |<--------->| 鏈路層 |<---+---------->| 鏈路層 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 物理層 |<-----+-->| 物理層 |<--------->| 物理層 |<---+---------->| 物理層 |
+----------+ | +----------+ +----------+ | +----------+
+------------------------------------------+
不同層的功能
- 物理層 :和 OSI 中相同
- 鏈路層 :對應 OSI 數據鏈路層,模型選擇數據包交換網絡,是主機與傳輸線路的接口.傳輸單位為幀.
- internet 層 :對應 OSI 網絡層,允許主機將數據包注入任何網絡,並讓數據包獨立到達接收方,同時還要考慮擁塞控制.
傳輸單位為包. - 傳輸層 :對應 OSI 傳輸層,有兩個協議,TCP 與 UDP,前者是一個可靠的面向連接的協議,后者是一個不可靠無連接的協議.
- 應用層 :對應 OSI 應用層,會話層與表示層對大多數應用來說並沒有太大用處.
ip 地址
ip 協議采用"網絡號.主機號"的形式編址.ip 地址總長 32 位,當網絡號占的位數多時,可存在的子網也會變多,相應的每個子網所能擁
有的主機數就少.
ip 地址的分類
通常根據網絡號,我們將網絡地址分為 5 類.
將地址轉為 2 進制:
以 0 開頭的地址 | 從 1.0.0.0 到 127.255.255.255 | A 類地址 | 前 8 位代表網絡號,可以有 28 個網絡 | 后 24 位代表主機號,最大支持 224-2 台主機 |
以 10 開頭的地址 | 從 128.0.0.0 到 191.255.255.255 | B 類地址 | 前 16 位代表網絡號,可以有 216 個網絡 | 后 16 位代表主機號,最大支持 216-2 台主機 |
以 110 開頭的地址 | 從 191.0.0.0 到 223.255.255.255 | C 類地址 | 前 24 位代表網絡號,可以有 224 個網絡 | 后 8 位代表主機號,最大支持 28-2 台主機 |
以 1110 開頭的地址 | 從 224.0.0.0 到 239.255.255.255 | D 類地址 | 廣播地址 | |
以 11110 開頭的地址 | 從 240.0.0.0 到 255.255.255.255 | E 類地址 | 保留的地址 |
子網掩碼
- 根據 ip 地址的分類,我們可看出,A 類地址的一個網段的主機數最多為 16777214 個,而 C 類地址的主機只能有 254 個.
而現實情況是 A 類地址,很少有要用到一個網段這么多主機的情況,而 C 類地址一個網段能容納的主機太少了. - 所以出現了 VLSM 的編址方案:
- 將大的網段地址拆分成小的網段,這種小的網段叫子網
- 將小的網段地址合並為大的網段,這種城合並的網段叫超網
傳輸層協議
主要分為 TCP 和 UDP:
- TCP 可靠,但存在頭部開銷,有 3 次握手
- UDP 不可靠,TCP 實時性不如 UDP
TCP
-
全稱:Transmission Control Protocol,傳輸控制協議
-
TCP 提供面向連接的,可靠的傳輸服務
-
TCP 頭部中較重要的字段:
- 源端口,目的端口 :用於明確兩邊的服務訪問點
- 順序號 :TCP 在發送數據時,通常會將數據分段,順序號可以讓接收方正確組合數據
- 偏置值 :明確 TCP 頭的大小
- 標志字段 :用於表示控制信息
- 窗口 :用於流控
- 校驗和 :判斷傳輸是否有誤
-
TCP 的三次握手和四次揮手
+----------+ +-----------+ | Client | | Server | +----+-----+ +----+------+ | SYN,seq=x | listen syn- |---------------------------------------------------->| sent | | | SYN,ACK,ack=x+1,seq=y | syn- |<----------------------------------------------------| rcvd estab-| | lished| ACK,DATA,ack=y+1,seq=x+1 | |---------------------------------------------------->| | | estab- | ... | lished | ... | | ... | | | fin- | FIN,ack=n,seq=z | wait-1 |---------------------------------------------------->| | | | | close- | DATA,ACK....... | wait fin- |<----------------------------------------------------| wait-2| ....... | | | | FIN | |<----------------------------------------------------| | | | | last- time- | ACK | ack wait |---------------------------------------------------->| | | | | close | |
UDP
- 全稱:User Datagram Protocol,用戶數據報協議
- UDP,面向無連接
- UDP 頭部中較重要的字段:
- 源端口,目的端口 :用於明確兩邊的服務訪問點
- 段長 :表示整個 UDP 的大小
- 校驗和 :判斷傳輸是否有誤
linux 上 IP 配置方法
命令即時生效
-
ifconfig
ifconfig 網絡設備名 IP/掩碼 ifconfig 網絡設備名 IP netmask 點分掩碼
例如:
# centos7 ifconfig enp0s3 192.168.0.50/24 ifconfig enp0s3 192.168.0.50 netmask 255.255.255.0 # centos6 ifconfig eth0 192.168.0.51/24 ifconfig eth0 192.168.0.51 netmask 255.255.255.0
-
ip
這個命令可以為網卡分配多個 ip# 增加IP ip address add IP/掩碼 dev 設備名 # 刪除IP ip address del IP/掩碼 dev 設備名
例子:
# 增加IP ip address add 192.168.0.58/24 dev enp0s3 # centos7 ip address add 192.168.0.59/24 dev eht1 # centos6 # 刪除IP ip address del 192.168.0.20 dev enp0s3 ip address del 192.168.0.22 dev eth1
命令保存配置:僅 centos7 以后
可用 nmcli 命令,這個命令可以直接將更改內容保存為配置.
nmcli connection modify DEV ipv4.addresses IP/MASK
nmcli connection modify enp0s3 ipv4.addresses 192.168.10.5/24 ipv4.method manual
更改配置文件
/etc/sysconfig/network-script/ifcfg-設備名
將文件中的兩個字段更改:
BOOTPROTO=static
IPADDR=192.168.10.7
PREFIX=255.255.255.0
其中 BOOTPROTO 代表 IP 的獲取方法,這里用手動,IPADDR 后面跟 IP 地址,PREFIX后面接掩碼.