第一章 網絡基礎知識
計算機網絡根據規模可以分為:廣域網(WAN: Wide Area Network)和局域網(LAN: Local Area Network)
協議的標准化:
- 國際標准化組織(ISO: International Organization for Standards)制定了一個國際標准開放式通信系統互聯參考模型(OSI: Open Systems Interconnection),對通信系統進行了標准化
- TCP/IP 通信協議是由 IETF(Internet Engineering Task Force) 所建議的一種協議
OSI 將通信分為 7 層,上下層之間交互遵循的約定叫 “接口”,同一層之間遵循的約定叫 “協議”。
OSI 僅是一個模型,定義了各層的作用,並沒有對接口和協議進行詳細的定義。
OSI 參考模型各層作用
- 7 應用層:針對特定應用的協議,如:電子郵件、遠程登錄、文件傳輸等
- 6 表示層:設備固有數據格式和網絡標准傳輸格式的轉換,如:統一傳輸過程的文字、圖片、聲音的編碼等
- 5 會話層:控制連接、數據分割,如:建立斷開連接、規定連接保持多久
- 4 傳輸層:確保數據可靠傳輸(這層在通信雙發節點處理無需再路由器上處理),如:當數據丟失告知源主機重新發送
- 3 網絡層:將數據傳輸到目標地址(目標地址可以是多個網路通過路由器連接而形成的某一個地址),如:進行地址管理與路由選擇
- 2 數據鏈路層:傳輸介質互連的設備間的數據處理,如:將 0,1 數據划分為有意義的數據幀,傳輸和識別數據幀
- 1 物理層:0,1 數據與電壓和脈沖光的互換
傳輸方式分類
連接類型:有連接、無連接
通信方式:電路交換、分組交換
接收端數量:單播(Unicast)、廣播(Broadcast)、多播(Muticast)、任播(Anycast)
地址
在網絡通信中每層協議使用的地址都不盡相同,如在 TCP/IP 中使用 MAC 地址、IP 地址、端口號等信息作為地址的標識,應用層將電子郵件地址地址等作為網絡通信地址。
地址應具有唯一性、層次性
網絡構成的要素
設備 | 作用 |
---|---|
網卡 / 網絡接口卡(NIC) | 使計算機聯網(Network Interface) |
中繼器(Repeater) | 從物理層延長網絡 |
網橋(Bridge)/ 2 層交換機 | 從數據鏈路層延長網絡 |
路由器(Router)/ 3 層交換機 | 通過網絡層轉發分組數據 |
4 - 7 層交換機 | 處理傳輸層以上各層網絡傳輸的設備 |
網關(Getaway) | 轉換協議的設備 |
第二章 TCP/IP 基礎知識
TCP: Transmission Control Protocol
IP: Internet Protocol
很多情況下 TCP/IP 指利用 IP 通信時所用到的協議族的統稱
TCP/IP 協議的特點是開放性和實用性
TCP/IP 協議由 IETF 討論制定,需要標准化的協議被列入 RFC(Request For Comment,官網 » RFC Editor)文檔並在互聯網公布
互聯網中的每個網絡都是由骨干網和末端網組成的,每個網絡之間通過 NOC(Network Operation Center) 相連。互聯網是眾多異構網絡通過 IX(Internet Exchange)互聯的一個巨型網絡。
連接互聯網需要向 ISP 或區域網提出申請
TCP/IP 協議族
- 應用協議:HTTP, SMTP, FTP, TELNET, SNMP
- 傳輸協議:TCP, UDP
- 網際協議:IP, ICMP, ARP
- 路由控制協議:RIP, OSPF, BGP
TCP/IP 與 OSI 參考模型
OSI 參考模型 | TCP/IP 分層模型 |
---|---|
應用層 | 應用層 |
表示層 | 應用層 |
會話層 | 應用層 |
傳輸層 | 傳輸層 |
網絡層 | 互聯網層 |
數據鏈路層 | 網絡通信層(網絡接口層) |
物理層 | 網絡通信層(硬件層) |
應用層協議:
- HTTP:客戶端與服務器通信
- SMTP:電子郵件
- FTP:文件傳輸,進行文件傳輸會建立兩個 TCP 連接,一個用於控制傳輸請求,另一個用於實際傳輸數據
- SSH 和 TELNET:遠程登錄
- SNMP:網絡管理,用於管理服務器、路由和交換機
例:TCP/IP 通信的過程
以發送電子郵件為例
- 發送端應用程序處理:輸入電子郵件內容,然后點擊發送(應用層),這時會進行編碼(UTP-8 或 GBK 等)處理(表示層),然后在合適的時機建立會話和發送數據(會話層)
- 發送端 TCP 模塊處理:TCP 根據應用層的指示建立連接、發送數據、發送數據時會在數據前加上 TCP 首部(傳輸層)
- 發送端 IP 模塊處理:IP 將 TCP 傳來的數據加上 IP 首部,然后根據路由控制表將數據發給目標路由器或主機(網絡層)
- 發送端網絡接口(以太網驅動)的處理:接收 IP 包加上以太網首部並通過物理層發送給接收端(數據鏈路層)
- 接收端網絡接口(以太網驅動)的處理:根據首部 MAC 地址判斷是否為發送給自己的包,然后根據首部的上一層協議類型(這里是 IP)將數傳給處理這種協議(這里是 IP)的程序(數據鏈路層)
- 接收端 IP 模塊處理:根據首部 IP 地址判斷是否為發送給自己的包,然后傳給上一層(這里是 TCP)的程序(網絡層)
- 接收端 TCP 模塊處理:數據被完整接收后會傳遞給端口號識別的應用程序(傳輸層)
- 接收端應用程序處理:在合適的時機建立會話和接收電子郵件數據(會話層),進行編碼(表示層),然后進行驗證和展示(應用層)
每個包首部都至少包括:1 發送端接收端地址,2 上一層協議類型
第三章 數據鏈路
數據鏈路可以視為網絡傳輸中的最小單位,可以稱互聯網為” 數據鏈路的集合 “。
MAC 地址
MAC 地址用於識別數據鏈路中互連的節點,使用網卡(NIC)的情況下,MAC 地址一般會被燒入到 ROM 中。
無論哪個協議成員通信設備設計前提都是 MAC 地址唯一。
交換機自學原理:交換機從源 MAC 地址學習到主機(MAC 地址)對應的交換機的端口,並在該主機(MAC 地址)作為目標時直接通過記錄的端口發送。(如果未找到記錄的主機(MAC 地址)則對所有未知主機(MAC 地址)的端口發送)
環路檢測:生成樹協議、源路由法
VLAN:不用修改網絡布線,只用修改網絡配置就可以實現網段的划分。
以太網(Ethernet)
我們平時用的網線、光纖連接的網絡
無線通信
使用電磁波、紅外線、激光等方式進行數據傳播。包括:藍牙(PAN)、WI-FI(LAN)、3G 和 4G(WAN)等等
PPP
點對點連接計算機的協議:Point-to-Point Protocol
公共網絡
- 模擬電話線路:使用電話線路進行通信,需要一個將數字信號轉換為模擬信號的調制解調器(“貓”)
- FTTH(FIber To The Home):光纖到戶
- VPN:虛擬專用網絡
- 公共無線 LAN:公開使用的 Wi-Fi
第四章 IP 協議
IP(IPv4、IPv6)相當於 OSI 參考模型中的第 3 層網絡層,網絡層的主要作用是 “實現終端節點之間的通信”。
IP 大致分為三大作用模塊:IP 尋址、路由、以及 IP 分包和組包。
路由控制表:為了將數據包發給目標主機,所有主機都維護着一張路由控制表(Routing Table)。該表記錄 IP 數據在下一步應該發給那個路由器。
不同數據鏈路的最大區別是她們的最大傳輸單位(MTU:Maximum Transmission Unit)不同,IP 可以將這種區別抽象化。
IP 屬於面向無連接型,在發包之前無需建立連接。這樣一是可以簡化,二是可以提速。(IP 只會盡力做好發送數據的工作,TCP 屬於面向有鏈接型會保證通信的可靠性)
IP 地址的基礎知識
IPv4 地址由 32 位正整數表示(32bit),2^32 大約為 43 億,IP 地址分為網絡標識和主機標識,這樣一算實際上能連接到網絡的計算機個數不是很多。
查看 IP:
- windows
ipconfig
- unix
ifconfig
IP 地址分類:
- A 類:IP 地址為 0 開頭,前 8 位為網絡標識,后 24 位為主機標識
- B 類:IP 地址為 10 開頭,前 16 位為網絡標識,后 16 位為主機標識
- C 類:IP 地址為 110 開頭,前 24 位為網絡標識,后 8 位為主機標識
- D 類:IP 地址為 1110 開頭,前 32 位為網絡標識,沒有主機標識(經常用作多播)
IP 主機標識全為 0 表示 IP 地址不可知的情況,全為 1 通常作為廣播地址,在分配過程中應該去除這兩種情況。
子網掩碼:因為用 IP 地址分類會造成浪費且不靈活,所以人們引入了子網掩碼,自定義網絡標識的長度,如需要 26 位的網絡標識:
IP: 172.20.100.52
子網掩碼: 255.255.255.192
或
172.20.100.52/26
私有 IP 和全局 IP:
- 私用 IP:10/8、172.16/12、192.168/16、0/8、127/8,這些 IP 可以用在局域網防止沖突
- 全局 IP(公網 IP):其他的地址,由 ICANN(Internet Corporation for Assigned Names and Numbers)進行管理
IP 報文的分片與重組:路由器會做分片但不會重組,重組在目標主機上進行。使用路徑 MTU 發現可以緩存 MTU 的值讓分片只在一開始進行一次。
IPv6:長度為 IPv4 的 4 倍(128bit),16bit 為一組分成 8 組
IPv4 和 IPv6 包首部:版本、源地址、目標地址、總長度、跳數限制、片偏移、數據等
第五章 IP 協議相關技術
DNS
DNS(Domain Name System)將域名裝換成 IP 地址。
使用nslookup 主機名
會返回對應的 IP 地址。
域名具有分層結構,根(.)-> 一級域名(例如:com, cn 等)-> 二級域名(例如:baidu, zjffun 等)-> 三級域名(例如:www, blog 等)。。。
DNS 查詢:解析器先從自己的數據庫中找域名對應的 IP,找不到就向上一層進行查找
DNS 記錄類型:
類型 | 內容 |
---|---|
A | 主機名的 IP 地址(IPv4) |
CNAME | 主機別名 |
PTR | IP 地址反向解析 |
等等。。。 |
ARP
ARP(Address Resolution Protocol)通過目標 IP 定位下一個接收數據分包的網絡設備對應的 MAC 地址。
RARP(Reverse Address Resolution Protocol)根據 MAC 地址定位 IP 的協議,用於打印機等小型嵌入式設備接入網絡。
ICMP
ICMP(Internet Control Message Protocol)用於網絡診斷,包括確認 IP 包是否送達、通知 IP 包被廢棄的原因、改善網絡設置等。
顯示經過的路由器:
Unix: traceroute 目標主機地址
Windows: tracert 目標主機地址
數據包是否送達成功:ping 目標主機地址
DHCP
DHCP(Dynamic Host Configuration Protocol)用於自動設置 IP 地址,自動化了對接入的物理設備分配 IP 的步驟。
NAT
NAT(Network Address Transfer)用於在本地網絡使用私用地址,連接互聯網時使用全局 IP 地址。
路由器讓連接到她的設備在內網間使用私用地址互相通信,需要連接到互聯網時通過一個 ip 訪問外網。(這樣只能設備主動去連接外網建立連接,外網無法主動訪問這個 ip 對應的設備,因為這個 ip 會對應很多設備)。
NAPT(Network Address Ports Transfer)技術通過轉換端口可以讓外網主動與多個設備通信。
IP 隧道
IP 首部后面還是 IP 首部(網絡層首部后面繼續追加網絡層首部)的情況,主要用於讓不支持 IPv6 的路由器將整個 IPv6 包作為數據發送出去。
第六章 TCP 與 UDP
-
傳輸層:處理數據發送和接收數據的去向。
-
TCP(Transmission Control Protocol):提供順序控制,重發控制機制,此外還有流量控制,擁塞控制、提高網絡利用率等功能。
-
UDP(User Datagram Protocol):可以確保消息的大小,但不能保證消息一定送達(應用層有時會根據自己的需要進行重發處理)。
-
套接字(socket)API:進行網絡通信的 API,提供
send()
,recv()
等接口。 -
端口號:用來區分一台計算機中的不同應用程序。
-
TCP/IP 和 UDP/IP 常用源 IP、目標 IP、協議號、源端口、目標端口這 5 個信息來識別一個通信。
UDP
UDP 不提供復雜的控制機制,利用 IP 提供簡單的無連接服務。
TCP
TCP 是一種面向有鏈接的協議,只有確認通信雙方存在才發送數據。
TCP 通過校驗和、序列號、確認應答、重發控制、鏈接管理以及窗口控制等機制實現可靠的傳輸。
序列號、確認應答、重發控制
為了丟棄因為網絡原因重復的數據包需要用序列號識別是否已經接收過。
TCP 中當發送端數據到達接收主機時並且數據正常,接收端主機會返回一個已接收到消息的通知,叫做 ACK(Positive Acknowledgement),數據異常會返回否請確認應答 NACK(Negative Acknowledge)。
重發后收不到應答會增加等待時間,但不會無限重發,達到一定次數后會強制關閉連接。
鏈接管理
TCP 連接建立與斷開正常需要來回發 7 個包才能完成(3 次握手,4 次揮手)。
建立:
客戶端 服務端
1 -- SYN(請求建立連接)-->
2 <-- ACK(針對SYN的確認應答)--
SYN(請求建立連接)
3 -- ACK(針對SYN的確認應答)-->
我的一些理解:雙方都要知道自己能連通對方,如果服務端接收到客戶端的數據就建立連接,之后發現自己發送給客戶端信息她收不到就尷尬了。
發送數據。。。
斷開
客戶端 服務端
4 -- FIN(請求切斷連接)-->
5 <-- ACK(針對FIN的確認應答)--
6 <--FIN(請求切斷連接)--
7 -- ACK(針對FIN的確認應答)-->
我的一些理解:因為確認切斷連接后服務端可能還有一些事要處理,所以會分成兩次發。
窗口控制
建立 TCP 連接時可以確定發送數據包的長度,成為最大消息長度 MSS(Maximum Segment Size)。
TCP 以段為單位,每發一個段進行一次確認的缺點是往返時間越長,通信性能越低。為了解決這個問題引入了窗口控制以提高速度。
窗口內的數據即使沒有收到確認也可以發送出去,如果數據丟失則重發丟失的部分。(還是每個段都有確認,不過可以多個一起進行了)
其他傳輸層協議
UDP-Lite
SCTP
DCCP
UDP 首部
源端口號、目標端口號、包長度、校驗和。
TCP 首部
源端口號、目標端口號、序列號、確認應答號、數據偏移、保留、控制位、窗口大小、校驗和、緊急指針、選項、填充。
TCP 中沒有表示包長度和數據長度的字段。可由 IP 層獲知 TCP 的包長度,進而計算數據長度。
第七章 路由協議
路由器根據路由控制表(Routing Table)轉發數據包。
路由控制分為靜態和動態兩種類型。
動態路由的相鄰的路由器會發送自己已知的網絡連接信息。
根據路由控制范圍常使用 IGP(Interior Gateway Protocol)和 EGP(External Gateway Protocol)兩種協議。(他們的關系和 IP 和的網絡部分和主機部分類似)
路由算法
路由算法分為距離向量(Distance-Vector)算法和鏈路狀態(Link-State)算法。
距離向量
路由器之間交換目標網絡的方向和距離的信息,然后根據這些信息決定目標網絡或主機。
鏈路狀態
在了解網絡整體的狀態的基礎上生成路由控制表的方法。
RIP(Routing Information Protocol)
距離向量型的路由協議,廣泛用於 LAN。
OSPF(Open Shorttest Path First)
鏈路狀態型的路由協議,即使網絡有環路也可以進行穩定的路由。
BGP(Border Gateway Protocol)
距離向量型的路由協議,屬於外部網關協議,主要用於 ISP 之間連接的部分。
BGP 會根據進過的 AS(自治系統:Autonomous System)的個數進行路由控制。
MPLS(Multi Protocol Label Switching)
如今,轉發 IP 數據包除了使用路由技術,還使用標記交換機技術。標記交換機技術最具代表性的就是 MPLS。
在 MPLS 網絡入口處附加標記,然后通過這個標記進行轉發,在 MPLS 網絡出口處將這個標記刪除。
第八章 應用協議
- TELNET:常用於登錄路由器或者高性能交換機等網絡設備進行設置。
- SSH:加密的遠程登錄系統。
- FTP:文件傳輸。(需要兩個 TCP 連接,一個用來控制,一個用來傳輸數據)
- SMTP:發送電子郵件。
- POP:請求接收、接收電子郵件,郵件在客戶端管理。
- IMAP:也是接收電子郵件的協議,郵件在服務器管理。
- MIME:(6 表示層)規定應用消息格式。
- URI:Uniform Resource Identifier 用於標識任何資源。
- URL:用於標識互聯網資源。
- HTTP:超文本傳輸協議
- CGI:Common Gateway Interface,Web 服務器調用外部程序時使用的一種服務端應用規范。(一般 Web 通信返回靜態信息,CGI 用來返回動態信息)
- SNMP:網絡管理。
- H.323:音頻視頻傳輸。
- SIP:比 H.323 簡單的音頻視頻傳輸。
- RTP:Real-Time Protocol,在 UDP 基礎上為報文添加時間戳和序列號(UDP 實現多媒體通訊需要這些信息)。
- RTCP:通過丟包率等路線質量的管理,對 RTP 的數據傳輸率進行控制。
- P2P:Peer To Peer,1 對 1 通信。
- LDAP:訪問目錄服務。
第九章 網絡安全
構成
- 防火牆
- IDS 入侵檢測系統
- 反病毒 / 個人防火牆
加密技術
- 對稱加密:加密和解密用相同的密鑰,挑戰是傳遞安全密鑰。使用 AES、DES 等加密算法。
- 非對稱加密:加密和解密用不同的密鑰,加密和解密花費時間長。使用 RSA、DH、橢圓曲線等加密算法。
安全協議
IPsec 與 VPN
構建 VPN 時最常用的是 IPsec。
IPsec 指在 IP 首部后追加 ESP 和 AH,從而對此后的數據加密。
TSL/SSL 與 HTTPS
- TSL/SSL:Transport Layer Security / Secure Sockets Layer
- HTTPS:使用 TSL/SSL 的通信。
- 確認公鑰是否正確主要使用認證中心(CA)簽發的證書,主要認證中心的信息已經嵌入到瀏覽器的出場設置中。
IEEE802.1X
LAN 和無線 LAN 接入的用戶認證技術。