# 電腦網路筆記 # 認識網際網路 ## 網際網路 * **ISP(Internet Service Production)** 由封包交換器與通訊連結構成,將終端系統連接在一起。 較高層級的ISP是由高速路由器所構成;較低層級的ISP通過較高層級ISP彼此相連,也可利用對等相連(不須付費)。每個ISP,無論高低層,都是獨立經營管理,依循IP協定運作,並遵循特定的命名及定址規範。 * **終端系統(end system)** 包括桌上型電腦、伺服器、行動裝置等等,也被稱為主機(host)。藉由通訊連結與封包交換器所構成的網路相連在一起,有多種形態,由不同類型的實體媒介所構成,包括同軸電纜、銅線、光纖以及無線電頻譜等等。不同連結能以不同速率傳送訊息,連結的資料傳輸率以每秒位元數為計算單位。 * **封包(packets)** 當終端系統傳遞資料時,傳送端會將資料切分為區段,並且在每個區段前加上標頭位元組,其通過的一連串通訊連結及交換器,稱為路由(route)或路徑(path) * **協定(protocol)** 網際網路的所有元件,都會執行在網際網路中,控制資訊傳送與接收的協定。例如網際網路協定(IP)規定了在路由器和終端系統間傳送的封包格式。傳輸控制協定(TCP)及網際網路協定(IP)是網際網路的主要協定,統稱 TCP/IP。 * **網際網路標準(Internet Standard)** 由網際網路工程工作小組(IETF)所開發,負責解決網際網路所面臨的網路與協定設計問題,定義了諸如TCP、IP、HTTP、SMTP等協定。 * **socket介面(socket interface)** 是一組傳送端軟體必須遵循的規則,以便網際網路能夠遞送資料給目的軟體組件。 * **連線網路(access network)** 路徑上的第一具路由器(邊際路由器)與終端的實體連結。 ## 家用連線:DSL、纜線、FTTH、撥接與衛星、乙太網路與WiFi * **數位用戶迴路(DSL)** 用戶的地方電信業者也是其網際網路供應商(ISP)。電話線路會以不同的頻率來編碼,同時帶有資料和傳統的電話信號。在用戶端,由一台分歧器將資料與電話信號分開,並轉送資料至DSL數據機;在中央機房(CO),由數位用戶迴路連線加工器(DSLAM)將資料與電話信號分開,將資料傳入網際網路。 DSL數據機會將數位資料轉換為高頻率的音訊,透過電話線路傳到中央機房(CO),由CO內的數位用戶迴路連線加工器(DSLAM)將類比訊號轉換回數位格式。 DSL標準為不對稱連線,最大速率會局限於家庭和中央機房(CO)之間的距離、雙絞線的等級和電器干擾的程度。 | 下傳傳輸率 | 上傳傳輸率 | 定義於 | | -------- | -------- | -------- | | 12Mbps | 1.8Mbps | ITU 1999 | | 55Mbps | 15Mbps | ITU 2006 | * **纜線網際網路連線(cable Internet access)** 利用有線電視公司現有的有線電視基礎設施,使用光纖連接到街區層級匯聚點的電纜頭端,在電纜頭端,纜線數據機終端系統(CMTS),會將類比訊號轉回數位格式,再由同軸電纜抵達個別的住家或公寓,由纜線數據機(cable modem)透過乙太網路埠連到家用電腦。此稱作混合光纖同軸(hybrid fiber coax,HFC)。 因為纜線是一種共用的媒介需要分散式的多重存取協定避免碰撞。CMTS會將HFC切分成一個下傳通道,一個上傳通道(非對稱),並依照DOCSIS2.0標準定義最高下傳42.8Mbps,上傳30.7Mbps。 * **光纖到府(fiber to the home,FTTH)** 分為主動式光纖網路(active optical network,AON)及被動式光纖網路(passive optical network,PON)。 AON為交換式的乙太網路,PON則使用在Verizon的FIOS服務,每戶家庭由一具光纖網路終端機(ONT),透過專屬的光纖連到街區的分歧器,再由分歧器結合成單一共用的光纖,連接到CO中的光纖線路終端機(OLT),OLT會將光學訊號轉換為電子訊號,連接到業者的路由器。 光纖到府的優點:不容易被竊聽、不會受電磁波干擾、訊號衰減低。 * **衛星連結** 擁有超過1Mbps的速度,較適合鄉村地區使用。 使用同步衛星或低軌道衛星(LEO)等非導引式衛星,並使用中繼器重建原始訊號。 * **撥接** 使用傳統電話線路(與DSL一樣),擁有低於56kbps的速率。 * **乙太網路** 乙太網路使用雙絞銅線對連接到乙太網路交換器,一般使用者速率為100Mbps或1Gbps,伺服器為1Gbps或10Gbps。 * **WiFi** WiFi為基於IEEE802.11的無線LAN,有超過100Mbps的共用傳輸速率,走無線電通道(非導引式)。無線LAN使用者從位於存取點數十公尺內接收、傳送封包,該存取點則連到固線式乙太網路。 ## 封包交換 * **交換速率** > 傳輸率為 Rbps 的連結送出一個長度為 L 的封包,需 L/R 秒。 大部分封包交換器會在輸入端使用儲存轉送傳輸,交換器必須先接收到整個封包,才能開始傳輸。 > 有儲存轉送傳輸,整體延遲會變為 2L/R 。 > 三個封包經過儲存轉送傳輸,延遲變為4L/R 傳送一個封包,其路徑為 N條連結構成,來源端和目的端之間有N-1個路由器。 > 假設速率皆為R,端點到端點的延遲為N*L/R * **封包遺失(packet loss)** 封包交換器都會有一個輸出緩衝區(也稱輸出佇列),封包會遭遇緩衝區的佇列延遲,時間取決於網路壅塞的程度。如果緩衝區被占滿,就會發生封包遺失。 * **轉送表** 來源端會把目的端的IP寫入封包的標頭處,再由路由器依照轉送表傳輸。轉送表可透過繞送協定自動設定。 * **電路交換** 電路交換與封包交換不同,會將通路處理行程的資源保留,如電話網路。這個保持連通的連線稱為迴路,保持固定的傳輸速率。迴路可利用分頻多工(FDM)或分時多工(TDM)來實作。 | 分頻多工(FDM) | 分配專屬的頻帶給每筆連線,通常頻寬為4kHz | |:-----------------:|:--------------------------------------------------------------------------------------------- | | 分時多工(TDM) | 將時間切分為固定長度的時框(frame),再切分為固定數目的時槽,每筆迴路會週期性的取得所有頻寬 | * **封包交換與電路交換** 電路交換會有沉靜期的浪費問題,且實作成本較高較複雜;封包交換因延遲不固定,不適用於即時服務。 * **封包交換延遲** | 總節點延遲 | 處理延遲+佇列延遲+傳輸延遲+傳播延遲(主要) | | ---------- | ----------------------------------------- | | 處理延遲|處理封包標頭,判斷導向| | 佇列延遲|封包在佇列等候傳輸| | 傳輸延遲|儲存轉送延遲(L/R)| | 傳播延遲|取決於連結的實體媒介(距離/傳播速率)| ## 分層 * **TCP/IP協定分層與ISO-OSI參考模型** | TCP/IP | OSI模型 | 功能 | |:------:|:-------:|:------------------------------------------------------------------------:| |應用|應用|處理應用程式,提供網路應用服務| ||呈現|讓應用程式得以互相解讀(資料壓縮、加密、解密) | ||會談|資料交換界線標示與同步(建立檢查點及回復)| |傳輸|傳輸|負責電腦整體的資料傳輸及控制 | |網路|網路|定義網路路由及定址功能,讓資料能夠在網路間傳遞。| |連結|連結|在網路之間建立邏輯連結,處理流量控制及錯誤偵測,讓資料傳送與接收更穩定。 | |實體|實體|定義網路裝置之間的位元資料傳輸| * **訊息的移動** 應用層取得訊息→在傳輸層加上傳輸資訊及錯誤偵測位元等等標頭資訊,構成傳輸層區段→在網路層加上IP位址等標頭資訊,形成網路層資料報→在連結層加上連結存取控制等標頭,構成連結層訊框→在實體層由實際傳輸媒介傳到網路元件。 ## 惡意軟體(malware) * **Virus 電腦病毒** 會變更或刪除你的檔案。依附於其他程式活動,以便從這台電腦傳播到另一台電腦。像人類病毒一樣,電腦病毒也有百百種,特別要提的是病毒本身是無法散播的,人們通常在不知情下散播病毒,例如透過 email 傳送感染的檔案。 * **Worm 電腦蠕蟲** 跟病毒很像但不會變更您的檔案/資料,另外不同的是它無需人為操作,可以自行傳播並有能力自我複製並執行,所以你電腦不會只有一隻蠕蟲而是可能上千隻複製蠕蟲。這麼多蠕蟲會大量消耗系統記憶體,導致網站或電腦當機,蠕蟲也可以設計入侵你系統並控制你電腦。 * **Trojan Horse 木馬** 不是病毒,它偽裝成正常的程式也不進行自我複製,但同樣具有破壞性,可以在你電腦留一個入口讓惡意程式存取你的系統盜取你的資料。 * **Spyware 間諜軟體** 在電腦上安裝元件竊取資訊 ,在你不知情狀況下追蹤你的操作並將結果送給別人(主要以行銷為目的,但也有可能是密碼、信用卡資訊)。 * **Botnets 殭屍網路** 受害電腦一旦被植入可遠端操控該電腦的惡意程式,即會像傀儡一般任人擺佈執行各種惡意行為,犯罪者最常使用來從事詐欺與竊盜的主要管道。由於感染殭屍病毒多數沒有徵兆,一般受害者通常並不知道電腦已經遭受遠端控制。 * **Phishing 網路釣魚** 網路釣魚通常是指企圖透過電子郵件、通訊軟體來獲得你個人資訊以竊取你的身份認證,它們看起來就像是來自銀行、信用卡公司、信譽良好的公私立機構的正式通知,通常在訊息中會夾帶惡意連結,引導收件者至看起來與官方極為相似的山寨網站,要求提供帳號密碼等資訊。 * **Pharming 網址轉嫁 / DNS poisoning** Pharming 跟釣魚網站 (Phishing) 有相似之處,Pharming 也是透過攻擊讓使用者的連線轉至另一個惡意網站,但比 Phishing 高明的是,這種攻擊多半是透過入侵 DNS 主機直接修改 DNS 指向,所以一般使用者根本無法發現錯誤,釣魚網站或許還能從網址列發現問題,Pharming 則會顯示正常的網域名稱,除非網頁內容有瑕疵被發現,不然必須採用https 加密認證或 DNSSEC才能避免此問題發生。 * **Ransomware 勒索病毒** 將您電腦鎖住,讓您無法使用電腦也無法存取檔案以向您勒索贖金的一種惡意程式,您可能被迫必須交出密碼或錢財給不知名的歹徒。 * **Social Engineering 社交工程** 社交工程攻擊首先取得一個攻擊目標的背景資訊,透過交談與受害人建立信任,然後向受害人要求資訊,再利用這些資訊向其他或更高層人員欺騙,不斷重覆這些步驟,以達成最後目標。 * **DDOS 分散式服務阻斷攻擊** 利用大量的互聯網流量使目標伺服器或其周圍的基礎設施不堪重負,從而阻斷目標伺服器、服務或網路的正常流量。 DDoS 攻擊的常見類型: **1.應用程式層攻擊** 攻擊的目標是伺服器上回應 HTTP 請求而生成並交付網頁的層。在用戶端執行單一 HTTP 請求僅消耗少量計算資源,但目標伺服器上做出回應需要消耗較多資源,因為伺服器往往要載入多個檔並運行資料庫查詢才能創建一個頁面。第 7 層攻擊難以防禦,因為惡意流量和合法流量可能很難區分開來。 **2.HTTP 洪水攻擊** 較簡單的做法可能是存取一個具有相同的攻擊 IP 位址範圍、查閱者和使用者代理程式的 URL。複雜的版本可能是使用大量攻擊 IP 位址,並使用隨機查閱者和使用者代理程式,以隨機 URL 作為目標。 **3.通訊協定攻擊** 又稱狀態耗盡攻擊,通過過度消耗伺服器資源和/或網路設備資源(如防火牆和負載平衡器)的資源來導致服務中斷。 **4.SYN 洪水攻擊** 這一攻擊利用 TCP 握手(兩台電腦建立網路連接的通信序列),向目標發送大量帶有欺騙性源 IP 位址的 TCP “首次連接請求” SYN 資料包。目標機器回應各個連線要求,然後等待交握最後一步,此步驟從來不會出現,這樣便耗費了目標在此流程中的資源。 **5.巨流量攻擊** 消耗目標與較大網際網路之間的所有可用頻寬,嘗試造成壅塞。透過使用一種放大形式或建立大量流量的另一種方式 (例如來自殭屍網路的要求) ,將大量資料傳送至目標。 **6.DNS 放大** 通過向某個公共 DNS 伺服器發送帶有欺騙性 IP 位址(受害者的 IP 位址)的請求,目標 IP 位址將收到來自該伺服器的回應。 ## 防火牆Firewall ### 封包過濾防火牆 * 第一代防火牆 * 根據網路級協議標頭值做出訪問決策,並配置ACL規定允許進出特定網路的流量類型。 * 根據IP、port、Protocol、inbound和outbound流量方向做出訪問決策。 * 缺點: * 無法阻止特定應用程式漏洞或功能的攻擊 * 日誌紀錄功能有限 * 大多數不支持高級用戶身分驗證方案 * 大多數無法檢測欺騙地址 * 可能無法檢測數據包碎片攻擊 ### 狀態檢測防火牆 * 防火牆會調查所有數據包的元素(所有標頭、有效負載和尾部),並將有關特定連接的所有必要訊息都存儲在狀態表中(源和目標IP地址、源和目標端口、協議類型、標頭標誌、序列號、時間戳等)。 * 特性: * 維護一個跟蹤每個通信會話的狀態表 * 提供高度安全性,並且不會引入應用代理防火牆引入的性能損失 * 可擴展且對用戶透明 * 為跟蹤吳連接協議(如UDP和ICMP)提供數據 * 存儲和更新數據包中數據的狀態和上下文 ### Proxy * 轉發代理(forwarding Proxy) 一種允許客戶端指定他想要通訊的服務器的代理,開放代理及匿名開放代理都是屬於轉發代理。 * 反向代理(Reverse Proxy) 向用戶端顯示為原始伺服器,實際上反向代理像實際服務器發出請求,並為客戶端提供響應。 * 電級層級代理(circuit-level proxy) 在會話層工作,會在兩個通信系統之間創建電路,並基於網路的視圖監控流量。此類型代理不能查看數據包內容,只根據可用的協議頭和會話訊息做出訪問決策。 * 應用層級代理(Application-level proxies) * 將數據包作為一個整體來理解,並可以根據數據包的內容做出訪問決策。 * 每個協議(FTP、NTP、SMTP、HTTP等)都需要一個代理,但不意味著每個服務都需要一個代理防火牆,而是防火牆產品的一部分專門用於了解特定協議的工作原理及如何正確過濾。 * 特點: * 具有廣泛的日誌記錄功能 * 能直接對用戶進行身分認證 * 可以應對欺騙攻擊和其他複雜的攻擊 * 不太適合高帶寬或實時應用 * 支持新網路應用程式和協一方面往往受到限制 * 由於每個數據包的必要處理要求,會產生性能問題 ### 常見防火牆規則 * 靜默規則(silent rule):不響應不重要的數據包來減少日誌大小 * 隱密規則(stealth rule):禁止未經授權的系統訪問防火牆軟件 * 清除規則(cleanup rule):規則庫中的最後一條規則,丟棄並記錄任何不符合前面規則的流量 * 否定規則(negate rule):代替寬泛而寬鬆的「任何規則」,通過指定可以訪問的系統及方式來提供更嚴格的權限。 * ** # 應用層 ## 網際網路應用程式 * **網際網路應用分類** 1. **用戶端-伺服器架構** 有一台永遠開啟的主機(伺服器),並有一個固定的、眾所皆知的位址(IP位址)。用戶端彼此之間不會直接通訊。 2. **點對點(P2P)架構** 利用對等點的主機之間進行直接通訊,對於伺服器只有最低需求。 * **應用程式通訊方式** 進行通訊的並不是程式,而是行程(progress),行程會透過socket從網路傳送及接收訊息。 為了識別接收端行程,需要指定兩份資訊: 1. 主機名稱或位址(IP位址) 2. 目的端主機中代表接收端行程的識別碼(埠號) > socket是主機中位於應用層和傳輸層之間的介面,也稱為應用程式設計介面(API)。應用程式開發者對於socket應用層這端的所有事物都有控制權,但對於socket傳輸層那端只有極少的控制權(選擇傳輸協定&修正少數參數) ## 應用層協定 * 應用層協定定義:訊息類型、訊息語法、訊息語意及何時傳送、回應訊息。有些公共領域的應用層協定,被詳載於RFC中。 | 應用程式 | 協定 | 定義於 | | -------- | -------- | -------- | | 電子郵件 | SMTP | RFC5321 | | 遠端存取 | Telnet | RFC854 | | 網頁 | HTTP | RFC2616、RFC1945| | 檔案傳輸 | RIP | RFC959 | | 網際網路電話 | SIP、RTP | RFC3261、RFC3550 | ### 超文件傳輸協定(HTTP) * 由用戶端程式及伺服端程式實作,傳送檔案後,不會儲存用戶端的狀態資訊,稱為**無狀態協定**。 * HTTP會使用**cookie[RFC6265]** 來追蹤使用者。當使用者造訪網站時,會提供一份使用者識別資料,讓cookie在之後的會談中傳送cookie標頭給伺服器識別。cookie包含4個元件: 1. HTTP回應訊息中的cookie標頭行 2. HTTP請求訊息中的cookie標頭行 3. 使用者瀏覽器管理的cookie檔 4. 網站上的後端資料庫 * cookie雖然能簡化使用者的網路體驗,但也因cookie提供給網站大量的使用者資料,備受爭議。 * **HTTP的非永久性連線及永久性連線** 1.非永久性連線 每筆**TCP連線**都會在伺服器送出物件後關閉,不會繼續服務其他物件,只傳送一筆請求與一筆回應。 2.永久性連線(預設) 會保持該筆**TCP連線**,後續的請求和回應都由同一筆連線傳送。 * **HTTP的請求訊息格式** 使用**ASCII**撰寫,每行末尾都有一個歸位和一個換行字元,最後一行會多跟隨一對歸位和換行。 > GET /somedir/page.html HTTP/1.1 > Host: www.someschool.edu →主機位址 > Connection:close →非永久性連線 > user-agent:Mozilla/5.0 →使用者代理程式為Mozilla/5.0 > Accept-language:fr→如有法文版則回傳法文,沒有則回傳預設版本 方法包含GET、POST、HEAD、PUT、DELETE 使用GET時,資料主體為空 POST通常用於填寫表單 HEAD通常用於除錯 PUT用來上傳物件 DELETE用於刪除 * **HTTP的回應訊息格式** > HTTP/1.1 200 OK > Connection:close > Daate:Tue,18 Aug 2015 15:44:04 GMT > Server:Apache/2.2.3(centos) > Last-Modified:Tue,18 Aug 2015 15:11:03 GMT > Content-Length:6821 > Cotent-Type:text/html > (data.....) 常見的狀態代碼: 200 OK :請求成功 301 Moved Permanently :請求的物件已永久移除 400 Bad Request :伺服器無法理解該請求 404 Not Found :文件不存在於伺服器上 505 HTTP Version Not Supported :伺服器不支援所請求的HTTP版本 * **HTTP上的動態自適應串流(DASH)** 影音視訊會被編碼為不同的版本,用以相應不同的位元品質,當用戶端可用頻寬較高時,可選擇較高效率版本的片段;較低時,也能以較低品質取得。 * **網頁快取(代理伺服器 proxy server)** 一種能代替原始的網頁伺服器,來滿足HTTP請求的網路實體。網頁快取有自己的磁碟儲存空間,會在其儲存空間中保存最近被請求的物件副本。 網頁快取能顯著降低用戶端請求的回應時間,並減少機構到網際網路連線連結上的資料流,大幅減少網際網路整體流量,提升效能,減少成本。 >瀏覽器建立一筆TCP連線到網頁快取,並送出該物件的HTTP請求。網頁快取會檢查是否有儲存在本機上的副本,如果有,則將該物件放在HTTP回應訊息裡,傳回用戶端伺服器;如果沒有,則開啟一筆TCP連線到原伺服器,傳送HTTP請求。 * **有條件的GET** HTTP提供有條件的GET,讓快取能確認物件的最新版本。只有在指定日期後有被修改的物件,才需要由伺服器傳送。 有條件的GET必須包含兩個條件: 1. 使用GET方法 2. 包含If-Modified-Since:標頭行 * **HTTPS** HTTPS 以保密為標的研發,簡單講是 HTTP 的安全版。全稱 Hypertext Transfer Protocol over Secure Socket Layer。這個協定的最初研發由網景公司進行,提供了身份驗證與加密通訊方法,現在它被廣泛用於網際網路上安全敏感的通訊,例如交易支付方面。HTTPS 其安全基礎是 SSL 協定,SSL 是一網頁伺服器和瀏覽器之間以加解密方式溝通的安全技術標準,這個溝通過程確保了所有在伺服器與瀏覽器之間通過資料的私密性與完整性,是一個企業級標準,它被數百萬個網站用來保護他們與客戶的線上交易資訊。 ### SMTP [RFC5321][RFC5322] * 網際網路電子郵件的主要應用層協定,限制郵件訊息都必須使用7位元的ASCII。 * 每一台郵件伺服器都會同時執行SMTP的用戶端和伺服端。 * 電子郵件系統基本操作方式: 1.寄件者呼叫他的電子郵件使用者代理程式,提供收件者電子郵件位址,並指示使用者代理程式送出其撰寫好的訊息。 2.使用者代理程式會將訊息放到使用者的郵件伺服器中的訊息佇列中 3.在使用者伺服端上執行的SMTP用戶端會開啟一筆TCP連線到收件者的郵件伺服器上執行的SMTP伺服端的埠號25。 4.收件者的SMTP伺服端收到後,將訊息放入郵件伺服器的信箱。 5.收件者可隨時呼叫他的使用者代理程式來讀取訊息。 * SMTP通常不會使用中介的郵件伺服器,如果收件者的郵件伺服器無法運作時,訊息會存放在寄件者的郵件伺服器中等待。 ### HTTP與SMTP的比較 1. HTTP屬於取得式協定(pull protocol),TCP連線由想取得檔案的主機開啟;SMTP屬於送出式協定(push protocol),TCP連線由想傳送檔案的主機開啟。 2. SMTP要求每筆訊息的主體(包含標頭)都必須以7位元的ACSII編碼,HTTP則無限制。 3. HTTP會將每份物件封裝在各自的HTTP訊息中;SMTP則會將所有物件存放在同一份訊息中。 ### POP3(Post Office Protocol-Version 3)[RFC1939] * 一種極簡的郵件存取協定,當使用者代理程式(用戶端)開啟一筆TCP連線到郵件伺服器(伺服端)的埠號110時,POP3會開始運作三個階段:認證、交易處理及更新。 1.認證:使用者代理程式明文送出使用者名稱和密碼以認證使用者。 2.交易處理:使用者代理程式取回訊息,並可對訊息標記是否刪除。 3.更新:用戶端quit後,結束POP3會談並刪除標記刪除的郵件。 * POP3的使用者代理程式通常可以由使用者設定為「下載並刪除」或「下載並保留」。 > 在下載並刪除模式中,使用者代理程式會發出list、retr、dele命令,先要求郵件伺服器列出每一筆儲存訊息的大小,然後取回訊息,並刪除每一筆訊息,這些命令定義於RFC1939中。 > 在下載並保留模式中,使用者代理程式下載訊息後,仍會將訊息保留在郵件伺服器中,使收件者可重複讀取。 ### 網際網路郵件存取協定 (IMAP)[RFC3501] * 讓使用者能夠搜尋遠端資料夾中符合特定條件的訊息,不同於POP3,IMAP伺服器會在不同的IMAP會談間維護使用者的狀態資訊。 * IMAP提供使用者代理程式能取得訊息部分元件的命令,當使用者代理程式和郵件伺服器之間只有低頻寬的連線,使用者可能不想下載所有的訊息。 ### 網頁電子郵件 * 使用者代理程式就是一般的網頁瀏覽器,透過HTTP與遠端的信箱進行通訊,電子郵件也是利用HTTP協定,從收件者的郵件伺服器傳送給收件者的瀏覽器,而非IMAP或POP3。 ### 網域名稱系統(Domain Name System,DNS)[RFC1034][RFC1035] * **DNS提供的服務** 1.實作成DNS伺服器階層架構的分散式資料庫 2.一種讓主機可以查詢此分散式資料庫的應用層協定 3.主機別名、郵件伺服器別名、負載分配 4.DNS快取 * **DNS轉譯IP流程** 1. 同一台使用者主機執行DNS應用的用戶端 2. 瀏覽器將主機名稱轉交給DNS應用的用戶端 3. DNS用戶端傳送一筆包含該主機名稱的查詢訊息給DNS伺服器 4. DNS傳送一筆查詢訊息到網路中,將查詢及回復訊息放到UDP資料報,傳給埠號53。 5. DNS用戶端最後會收到一份包含主機名稱的IP位址的回覆。 6. 一旦瀏覽器收到來自DNS的IP位址,便可開啟一筆TCP連線到該IP位址埠號80上的HTTP伺服器行程。 * **主機別名及郵件伺服器別名** 名稱很複雜的主機可以擁有一或多個別名,應用程式可以呼叫DNS,提供主機的別名,來取得該正規主機名稱和IP位址。 * **負載分配** 忙碌的網站會使用多台重複的伺服器,在不同的終端上執行,並各自擁有不同的IP位址。當用戶端使用對應到一組位址的主機名稱發出DNS查詢時,伺服器會回應整組IP位址,但每次回覆都會輪流改變其中位址的順序 > DNS集中的缺點: 1. 單點失效 2. 大量的網路流量 3. 無法靠近所有查詢的用戶端 4. 維護困難 * **DNS快取** 用以改善效能延遲,DNS伺服器每隔一段時間(約兩天)丟棄快取資訊。 * **分散式、階層式的資料庫** * 根DNS→高階網域DNS→官方DNS >* 根伺服器:全球共有超過400個根伺服器分散在各地,由13個不同的組織管理,負責提供TLD(高階網域)伺服器的IP位址。 >* 高階網域(TLD)伺服器:如com、org、edu、gov及國家級(uk、fr、jp...),為官方DNS伺服器提供IP位址。 >* 官方DNS:只要在網路上有供大眾使用的主機,就必須提供大眾存取的DNS紀錄,以將這些主機名稱對應到IP位址。 * 用戶會先聯繫其中一台根伺服器,由根伺服器傳回高階網域的TLD伺服器IP位址,用戶端會接著聯繫這些TLD的其中一台,傳回官方伺服器,傳回主機名稱的IP位址。 * 區域伺服器(預設域名伺服器) 不屬於伺服器階層架構,每家ISP都有一台,當主機連線到ISP時,ISP會提供他其中一台或多台區域DNS伺服器的IP(通常透過DHCP) * **DNS可能的被攻擊方式** 1.DDOS 2.中間人攻擊 3.DNS毒害 * **域名系統安全擴充(DNSSEC)** DNSSEC旨在保護應用程式免受偽造或不當操縱的DNS數據所造成的影響(例如域名伺服器快取污染的數據)。來自DNSSEC保護區的所有答案都經過數位簽章。通過檢驗數位簽章,DNS解析器可以核查資訊是否與區域所有者發布的資訊相同,並確係實際負責的DNS伺服器所提供。DNSSEC還可以保護DNS中發布的其他任何數據:包括文字記錄(TXT)和郵件交換記錄(MX),並可用於引導發布參照儲存在DNS中的加密憑證的其他安全系統:例如憑證記錄(CERT記錄,RFC 4398),SSH指紋(SSHFP,RFC 4255),IPSec公鑰(IPSECKEY,RFC 4025)和TLS信任錨(TLSA,RFC 6698)。 ### 點對點應用(P2P)協定-BitTorrent * 所有參與傳布特定檔案的對等點稱為奔流(torrent),奔流中的對等點會向彼此下載固定大小的檔案片段(chunk)。 * 每組奔流都會有一個基礎節點,稱為追蹤者(tracker),當對等點加入奔流時,會像追蹤者註冊自己,並週期性的告知追蹤者,自己仍在奔流中。 * **稀有者優先** 使用者會以相鄰點中最為稀有的未取得片段先請求。 * **以德報德的鼓勵性機制** 對等點會持續量測相鄰點中收到位元的速率,並每10秒傳送片段給四個最高速率的相鄰點,我們稱此相鄰點為**無阻的**;並每30秒隨機選擇一個額外的相鄰點給片段,此相鄰點稱為**樂觀無阻的**。 * P2P使用分散式雜湊表(DHT)作為資料庫紀錄。 # 傳輸層 ## 傳輸層協定 * 資料能完整的傳送到接收端,則此協定提供**可靠的資料傳輸**。有些可容忍遺失的應用(例如傳統音訊)不需可靠的資料傳輸協定,稱為**彈性應用**,會依據當時可用的產出率傳輸;有產出率需求的應用則稱為**頻寬敏感性應用**。 * 傳輸層協定也能提供時程的保障,對於網路電話、多人遊戲等,需要嚴格的時程限制,使應用感受度較高;傳輸協定也提供安全性服務,包括機密性、完整性及端點認證。 ### TCP與UDP * TCP及UDP最基本的責任,就是將IP所提供的兩具終端間的投遞服務,延伸為兩筆行程的投遞服務—傳輸層多工、解多工。 >在來源端主機上,向不同的socket收集資料片段,將每份資料片段與標頭封裝以建立區段,再將區段交給網路層,稱為多工(multiplexing)。 >在接收端,傳輸層檢查識別欄位,辨識應接收的socket,然後將區段交給該socket,稱為解多工(demultiplexing)。 * **TCP與UDP的比較** | | TCP | UDP | | :--------: | :--------: | :--------: | | 可靠性 | 可靠 | 不可靠 | | 連接性 | 握手 | 無握手 | | 效率 | 低 | 高 | | 雙工 | 全雙工 | 一對一、一對多、多對一、多對多 | | 流量控制 | 有 | 無 | | 壅塞控制 | 有 | 無 | * **安全socket層級(SSL)** * 不管是TCP或是UDP都沒有提供加密,於是開發了TCP的補強—SSL。SSL包括加密、資料完整性及端點認證。 * 想使用SSL,需將SSL的程式碼同時納入用戶端及伺服端。傳送端行程會將明文資料傳給SSL socket,由傳送端SSL加密,再將加密後的資料交給TCP socket,傳送到接收端TCP socket,再由接收端TCP將資料交給接收端SSL。 > SSL並非一種傳輸層協定,而是在應用層實作的TCP補強。 ### 使用者資料報協定(UDP)[RFC768] * UDP只做傳輸協定非做不可的事,除了多工/解多工,及一些錯誤偵測,沒有多加別的功能到IP上。UDP從應用程式取得訊息,加上來源端及目的端埠號欄位及兩個小欄位,最後將所得的區段交給網路層。由於傳送端及接收端的傳輸層實體在送出區段前並不會握手,因此UDP稱為無連線傳輸。 * **使用UDP的應用協定實例** * DNS(較無延遲) * 網路管理應用(SNMP)(因為網路管理應用一定是經常在網路於緊張狀態時執行,通常是可靠的、受壅塞控制的資料傳輸難以抵達目的端時。) * 網際網路電話(可接受遺失) * **使用UDP的優點** 1.對於即時性應用,不希望有太長的延遲,也可以容忍遺失。 2.UDP無須維護連線狀態,也不用追蹤參數,通常可以支援較多用戶端。 3.較小的封包標頭負擔(TCP20位元組,UDP8位元組) * UDP缺乏壅塞控制,會造成高遺失率且會排擠TCP會談,但應用程式還是可以將可靠性內建在應用程式,如google Chrome的QUIC協定。 * **UDP的區段結構** * 來源端埠號&目的端埠號(16位元) * 長度欄位(16位元):指出UDP區段中位元組的數目。 * 檢查和(16位元):用來檢查UDP區段在移動過程中,位元是否有遭到更改。 * 應用程式資料(訊息) ### 傳輸控制協定(TCP)[RFC793][RFC1122][RFC1323][RFC2018][RFC2581] * **TCP全雙工服務** 當有應用層資料從用戶端行程流向伺服端行程,另一筆應用層資料也可以同時從伺服端行程流向用戶端行程。 * **無法使用群播** TCP連線永遠是點到點的,群播是在單次傳送操作下,將資料從單一傳送端送給多個接收端,因此無法由TCP運作。 * **開啟連線的行程為用戶端行程,進行三次握手** 用戶端應用程式會先告知用戶端的傳輸層,他想要與伺服器的行程建立連線,接著,用戶端TCP會與伺服器的TCP建立一筆連線。用戶端會先送出一筆特殊的TCP區段,伺服端再以第二段特殊的TCP區段回應,最後,用戶端再回應以第三份特殊的區段(可能帶有應用層資料)。 * **訊框大小** 當TCP在另一端收到區段時,區段的資料會被放入TCP連線的接收緩衝區,讓應用程式在方便時讀取資料。可以從緩衝區取出並放入區段的最大資料量,受限於最大區段大小(MSS),設定MSS時,會先判斷本地傳送端主機能夠傳送的最大連結層訊框長度,又稱最大傳輸單位(MTU),以確保一個TCP區段再加上TCP/IP標頭(典型值為40位元組)可以塞入單一一個連結層訊框中。 >Ethernet和PPP連結層協定的MTU均為1500位元組,因此MSS的典型值為1460位元組。 >注意!MSS是區段中應用層資料量的最大上限,而非TCP區段包含標頭的最大長度上限。 * **TCP的區段結構** * 來源端埠號&目的端埠號(16位元) * 序列號碼&確認號碼(32位元):用來實作可靠的資料傳輸 >TCP將資料視為無結構但有序的位元組串流,TCP會將資料串流中的每個位元組加以編號,並插入適當的TCP區域標頭的序列號碼欄位中。 >主機A放在區段中的確認編號,會是主機A預期從主機B收到的下一個位元組序號,當TCP傳給主機不正確順序的區段,接收端可能立即拋棄或保留脫序的位元,等待補上缺漏。 * 接收窗格(16位元):用來進行流量控制 * 標頭長度(4位元):標記TCP標頭長度(通常為20位元組) * 旗標欄位(6位元): * ACK:表示確認欄位的數值有效 * SYN&FIN:用來進行連線的建立與中斷,只有前兩次握手SYN會設為1,其餘皆為0。 * RST&CWR&ECE:用來顯示壅塞通知 * RSH:指示接收端立刻將資料交給上層 * URG:用來表示緊急的資料,並用16位元的緊急資料指標標示。 * 網際網路檢查和(16位元):用來檢查TCP區段在移動過程中,位元是否有遭到更改。 * 緊急資料指標(16位元) * 可選擇欄位(長度不固定):協調MSS或用作窗格縮放 * TCP會使用**逾時/重送機制**以復原遺失的區段,也使用**管線化傳輸**。 * **使用TCP的實例—Telnet** Telnet定義於RFC854中,是一種常用的遠端登入應用層協定,使用者在用戶端所鍵入的每個字元都會被傳送給遠端主機,遠端主機也會傳回每個字元的副本,並顯示在Telnet使用者的螢幕上。這種「迴響」是用來確保Telnet使用者所看到的字元,都已經被收到並加以處理。 > 現在大多使用者偏好使用SSH協定,因為Telnet的資料是未加密的。 > 大多數應用都是使用TCP,例如SMTP、HTTP、RIP(檔案傳輸)等等 * **安全外殼協定(SSH)** * 一種加密的網路傳輸協定,可在不安全的網路中為網路服務提供安全的傳輸環境。SSH通過在網路中建立安全隧道來實現SSH客戶端與伺服器之間的連接。SSH最常見的用途是遠端登入系統,人們通常利用SSH來傳輸命令列介面和遠端執行命令。 * SSH協定框架中最主要的部分是三個協定: 1. **傳輸層協定**:傳輸層協定提供伺服器認證,資料機密性,資訊完整性等的支援。 2. **使用者認證協定**:使用者認證協定為伺服器提供客戶端的身分鑑別。 3. **連接協定**:連接協定將加密的資訊隧道復用成若干個邏輯通道,提供給更高層的應用協定使用。 # 網路層(分為資料層及控制層) ## 網路層的主要任務 * 網際網路的網路層只提供盡力而為的服務,不會保證投遞,也不保障最低延遲和頻寬,及安全有序的封包。但可以靠別種網路架構提供服務,如ATM網路架構、Intserv架構[RFC1633] ### 轉送(fowarding)及繞送(routing) * 轉送(在資料層):當封包抵達路由器的輸入連結時,路由器將這份封包移動到適當的輸出連結。 * 繞送(在控制層):網路層用繞送演算法判斷封包從傳送端流向接收端時所採取的路由。 ### 控制層的SDN法 * 傳統繞送方法是由每個路由器的繞送元件溝通聯絡。SDN(軟體定義網路)則是將控制層的繞送功能與路由器分開,繞送裝置只負責轉送,遠端控制器計算及分送演算表。 * 遠端控制器可能是在具高可靠性及冗餘的遠端資料中心實作。 ### 匹配加上行動 * 在網路中,會執行一般廣泛的匹配加上行動的抽象概念。在廣義的轉送中,每個封包交換器都包含一個遠端控制器計算和分發的匹配加行動表,其中包括: 1. 一組標頭欄位的值:傳入的封包將與之匹配 2. 一組計數器:當封包與路由表條目匹配時更新 3. 要採取的一組行動:可能為將封包轉送到特定的輸出埠、丟棄封包、製作封包副本發送或重寫選定的標頭欄位等等。 ## 資料層 ### 路由器的內部 * **示意圖** 輸入埠 ↓ 交換結構←→繞送處理器 ↓ 輸出埠 * **輸入埠** * 執行實體層功能,作為實體連結進入路由器的終端。 * 執行連結層功能,和輸入連結另一端的連結層交互運作。 * 執行查詢功能,控制封包從輸入埠轉送至繞送處理器。 * **交換結構(路由器內部的網路)** 1. **經由記憶體交換(最簡單且最早期,多個封包無法同時被轉送)** 輸入埠與輸出埠的交換在CPU(繞送處理器)的控制下完成。封包到輸入埠後會先中斷來通知繞送處理器,然後從輸入埠複製封包到處理器的記憶體中,然後,繞送處理器從標頭取出目的端位址,查找轉送表,將封包複製到輸出埠的緩衝區。 2. **透過匯流排(bus)進行交換(不需要繞送處理器,交換速度受限於匯流排的速度)** 讓輸入埠把一個交換器內部的標頭加到封包上,送上匯流排,所有輸出埠都會接收到封包,但只有符合標頭的埠才會保留封包,其他的則會被移除。 3. **透過互聯網路進行交換(克服單一匯流排頻寬限制)** 使用棋盤式交換結構,由2N條匯流排組成,將N個輸入埠連接到N個輸出埠的互聯網路。每一條垂直匯流排和每一條水平匯流排,在一個交叉點交叉,由交換結構控制器決定斷開或閉合。 **可同時轉送多個封包**,只要當時沒有其他封包被轉送到該輸出埠,轉送到輸出埠的封包就不會被阻止,假如有,其中一個必須在輸入處等待(非阻塞式)。 * **繞送處理器** 執行控制層功能,依繞送協定維護繞送表和附加的連結狀態,並計算路由器的轉送表,也執行網路管理功能。 * **輸出埠** 將經由交換結構送來的封包儲存起來,藉由執行必要的連結層與實體層功能將這些封包輸送到輸出連結。 ### 封包排程 * 輸入埠及輸出埠都可能形成封包佇列,當佇列增長到路由器的記憶體耗盡,將會發生封包遺失。 * 封包排程: 1.**先進先出(FIFO)**:以封包抵達的順序傳輸。 2.**優先權佇列(非先佔式)**:高優先權先傳輸,優先權相同時通常以FIFO傳輸。 3.**循環分時(不停工佇列)**:輪流取得服務。 4.**加權公平佇列(WFQ)**:輪流取得不同量的服務。 ### 網際網路協定(IP) #### **IPv4** * **IPv4[RFC791]的資料報格式** * **版本編號(4位元)** * **標頭長度(4位元)**:判斷IP資料報的荷載。 * **服務類型(TOS,8位元)**:用來區別不同種類的IP資料報,如即時&非即時。 * **資料報長度(16位元)**:代表IP資料報的總長度(標頭加上資料),單位為位元組。 * **識別碼(16位元)、旗標(4位元)、分段偏移量(13位元)**:用作IP分段。 * **生存期(TTL,8位元)**:確保資料報不會在網路中無窮盡的傳送。每當資料報被一具路由器所處理後,這個欄位的數值就會減一,如果歸零,就會丟棄這個資料報。 * **協定(8位元)**:只有當IP資料報抵達目的地,才會使用這個欄位,指出這份資料要轉交給哪個特定的傳輸層協定(例如6為TCP、17為UDP) * **標頭檢查和(16位元)**:幫助路由器偵測所收到的IP資料報中的位元錯誤。 * **來源端與目的端IP位址(32位元)** * **選用欄位**:因為資料報標頭的長度可能是變動的,無法預先判定資料欄位的起始位置,所以路由器處理IP資料報所需的時間變化幅度會相當大。 * **資料(亦稱荷載)** > IP資料報通常不包含選用欄位,因此一般IP資料報標頭長度為20位元組,如果攜帶的是TCP區段,則每份(未分段的)資料報都會攜帶40位元組的標頭。 * **IPv4資料報的分段** * 連結層訊框所能載送的最大資訊量,稱為最大傳輸單位(MTU),每份IP資料報都會被封裝在連結層訊框內,從一具路由器傳輸到下一具路由器,所以連結層協定的MTU會嚴格限制IP資料報的長度。 * IPv4的設計者認為,如果在路由器中重組資料報,會大幅增加協定的複雜度,而且會拖慢路由器效能,於是**交由終端重組資料報**。 * 在建立資料報時,傳送端主機會在資料報上標記識別碼及來源端與目的端位址,傳送端主機每送出一份資料報,就會遞增其識別碼。當路由器需要分段資料報時,所有分段都會標記來源端、目的端位址及原始資料報的識別碼,當目的端收到時,即可檢查這些識別碼,判斷哪些資料報屬於同一份資料報的分段。 * 為了讓目的端主機可以完全確定他已經收到原始資料報的最後一份分段,**只有最後一份的旗標會被設定為0,其他分段則設定為1**,**偏移量欄位則用來標記該分段位於原始資料報的位置**。 * **IPv4定址** 每筆IP位址的長度都是32位元(即4位元組),總共有2^32個(大約4億個)可能的IP位址。這些位址的每個位元組都會被寫成十進位,位元組之間以點號相隔,稱為附點十進位表示法。 >例如:IP位址 193.32.216.9,193等於第一組8位元的十進位值,32為第二組......,其二進位表示法為11000001 00100000 11011000 00001001。 #### **IPv6** * 為了因應更大型的IP位址空間需求,開發了新的IP協定版本。原本ST-2協定被期望成為IPv5,後被廢棄,IPv5改為定義實驗性實時流協議。 * **IPv6資料報格式優勢** 1. 擴充的定址能力:將IP長度從32位元增加到128位元 2. 精簡後的40位元組標頭 3. 資料流標記[RFC2460]定義「針對傳送端要求特別處理的封包,例如要求非預設的服務品質或即時服務,可以將封包標記為屬於某個特定資料流」。 4. 隨播(anycast):為單播(unicast)跟多接(multicast)的綜合,只會傳播給距離最近或成本最低的其中一個位址。 * **IPv6的資料報格式** * 版本(4位元):數值為6,但即使將此欄位改為4,也不會產生有效的IPv4。 * 流量類型(8位元):可用於優先處理資料流中的某些資料報,或可用於先處理某些特定應用程式的資料報。 * 資料流標示(20位元):用來識別資料流。 * 荷載長度(16位元):被視為無號整數,指出在固定長度的40位元資料報標頭後,IPv6的位元組數量。 * 內層標頭(4位元):指出這份資料報的內容(資料欄位)要送交給哪個協定(例如TCP或UDP) > 跟IPv4的協定欄位一樣 * 躍程限制(4位元):每當路由器轉送資料報後,就會將此欄位的內容減1,如果計數到0,資料報就會被丟棄。 * 來源端及目的端位址(128位元)[RFC4291] * 資料:當資料報抵達其目的端時,內容會從IP資料報中被移出,交給內層標頭欄位所指定的協定。 * **IPv4中的欄位,但不存在於IPv6** * **分段/重組**: IPv6不允許中介路由器進行分段跟重組,只能由來源端及目的端進行。如果路由器收到過大的IPv6資料報,只需丟棄並回送給傳送端「封包太大」的ICMP錯誤訊息即可,大幅增加網路的IP轉送速率。 * **標頭檢查和**: 因為網際網路的傳輸層協定(例如TCP與UDP)跟連結層協定(例如乙太網路)都會執行檢查和,考量到快速處理封包,移除了此功能。 * **選用欄位**: 選用欄位變成了IPv6標頭的內層標頭欄位可能指向的欄位之一,IPv6移除選用欄位,讓IP標頭得以固定40位元組。 * **網路位址轉譯(NAT)[RFC1918]** * 可以改變封包的傳送端IP地址與接收端IP地址,減少真實IP的使用量,也有封包偽裝、封包過濾及平衡負載等功能。內部網路內的網路位址,只對於其內部的裝置有意義。 >主機A:10.0.0.1↘ >主機B:10.0.0.2→NAT伺服器→外部網路:140.112.66.88 >主機C:10.0.0.3↗ * **子網路(subnet)[RFC950]** * 連接多個主機介面及一個路由器介面的網路 * 無分級跨網域繞送(CIDR)歸納了子網路定址的概念,同樣使用附點的十進位格式a.b.c.d/x,其中x稱為子網路遮罩,表示址首的位元數。 >主機A:223.1.1.1/24↘ >主機B:223.1.1.2/24→路由器:223.1.1.4 >主機C:223.1.1.3/24↗ > >址首為223.1.1,位元數為24 * 在採用CIDR前,IP的網路部分長度被限制為8、16、24位元,分別稱為A級、B級、C級,此定址方式稱為分級定址法。 * **IP廣播位址(255.255.255.255)** 當主機送出此目的端位址的資料報,這個訊息會被送給同一子網路內的所有主機。路由器也可以選擇性地將訊息轉送到鄰近的子網路(通常不會)。 * **取得位址區塊** * 為了取得IP位址供組織內部的子網路使用,網路管理者會先聯繫他的ISP,ISP會從已分配給該ISP的大型位址空間中,提供位址。 * ISP是由權威機構(網路名稱與數位地址分配機構,ICANN)根據[RFC7020]管理,不僅分配IP位址,也要負責管理DNS根伺服器、指派網域名稱、解決網域名稱的糾紛 * **動態主機配置協定(DHCP)[RFC2131]** * 主機位址可手動配置,也可透過DHCP來自動完成。DHCP除了**主機IP自動分配**,也讓主機知曉其他資訊,例如**子網路遮罩**、**第一站路由器的位址(通常稱為預設閘道)**,及其**區域DNS伺服器的位址** * DHCP能夠使特定主機每次連上時都取得相同的IP位址,也能使其每次取得不同的臨時IP位址,因此常被稱為**隨插即用協定**或**zeroconf定址自動化技術**。 * DHCP是一種伺服器-用戶端協定,用戶端通常是個新到來,想取得網路配置資訊的主機。最簡單的情況下,每個子網路都會有一台DHCP伺服器。如果沒有,便需要一具知道該DHCP伺服器位址的**DHCP轉播代理裝置(通常是路由器)**。 * 用戶端利用DHCP探索訊息,以**UDP封包**將之送往連接埠67,使用**廣播目的端IP位址255.255.255.255**及**代表這台主機的來源端IP位址0.0.0.0**,將這份IP資料報交給連接層,接著連結層會將此訊框廣播到子網路上所有節點。收到DHCP探索訊息的DHCP伺服器,會回應給用戶端DHCP提供訊息,**同樣使用IP廣播位址255.255.255.255作為目的端**,提供給用戶端的訊息包含: 1.探索訊息的交易ID 2.提供給用戶端的IP位址 3.網路遮罩及租借期限。 用戶端從多台DHCP伺服器中選擇一台,回應DHCP請求訊息以回覆配置參數,其伺服器再以DHCP ACK訊息回應。 * DHCP的客戶端和服務氣都容易受到偽造身分的影響 * 攻擊者可以偽裝他們的系統已顯示為有效的網路客戶端,並可能滲透到網路上的其他系統 * 攻擊者可能會在網路上創建未經授權的DHCP伺服器,並開始響應用戶端搜尋,攻擊者控制的DHCP伺服器可以破壞客戶端系統配置、執行中間人攻擊將流量路由到未經授權的網路等等。 * DHCP偵聽可確保DHCP服務器只能將IP地址分配給由MAC地址標識的系統;高級網路交換機能夠將客戶端引導至合法的DHCP服務器並限制惡意系統成為網路上的DHCP伺服器。 ## 控制層 ### 計算、維運和安裝這些轉送表和路由表 1. **個別路由器控制**: 每個路由器都包含轉送和繞送功能,並擁有一個路由元件與其他路由器中的路由通訊,以計算其轉送表的值。OSPF和BGP協定是以這種個別路由器控制法為基礎。 2. **邏輯集中控制**: 邏輯集中控制器計算及分配每一具路由器要使用的轉送表的情況。匹配加行動概念允許路由器執行傳統的IP轉送以及先前在單獨的中間盒中實作的其他功能集(負載共享、防火牆、NAT等等) 控制器在每一具路由器中,透過定義良好的協定與控制器媒介(CA)互動,以配置和管理該路由器的路由表。通常,CA具有最低的功能性,他的工作是與控制器通訊,並作為控制器命令。與個別路由器控制不同,CA彼此不直接相動,也不主動參與計算轉送表。 ### 繞送演算法分類比較 1. **連結狀態演算法(LS)**: 集中式,透過連結狀態廣播演算法,使所有節點都對網路擁有統一且完整的觀點,使所有節點都能利用完整的知識來計算與其他所有節點相同的一組最小成本路徑。 **距離向量演算法(DV)**: 分散式,最小成本路徑的計算會以路由器的循環、分散的方式進行。每個節點都只知道自己直接相連的連結成本,透過循環式的計算及交換資訊,直到相鄰節點之間沒有可以交換即自動終止。 2. **靜態繞送演算法**: 路由隨時間改變的速率非常緩慢,而且通常是人為介入。 **動態繞送演算法**: 會在網路的流量負載或拓樸改變時,改變路徑。對於網路改變的反應較為靈敏,但比較容易受到繞送迴圈或路由震盪的問題影響。 3. **負載敏感的演算法**: 連結成本會動態的變動,以反映目前底層連結的壅塞程度。今日的網際網路繞送演算法(如RIP、OSPF、BGP)都是負載敏感。 ## AS內部繞送 * **自制系統(AS)** * 每組AS都由一群路由器構成,處於相同的管理控制。 * 由全球唯一的自制系統編號(ASN)[RFC1930]識別。 * IP位址等AS編號由ICANN區域註冊機構所分配。 * 同一組AS中的路由器會執行相同的繞送演算法,稱為自制系統內部繞送協定。 * **路由信息協議RIP** * 概述路由器如何交換路由表數據的標準,被認為是距離矢量協議,會計算源和目標之間的最短距離,但其性能緩慢且缺乏功能,通常只用於小型網路。 * RIPv1沒有身分驗證、RIPv2以明文發送密碼或使用MD5散列,RIPv3(RIPng)則是專為IPv6設計的,與v2相似。 * **最短開放路徑優先(OSPF)** * OSPF是一種連結狀態協定,每一具路由器會建構出整個自制系統的完整拓樸地圖,並在本機執行Dijkstra最短路徑演算法,以判斷出以自己為根節點,前往所有網路的最短路徑樹。每當連結狀態有改變時,路由器就會廣播其連結狀態資訊,也會週期性的廣播連結狀態。[RFC2328] * OSPF訊息直接由IP載送,其上層協定欄位會被設定為89以代表OSPF。OSPF也實作其他功能:檢查連結是否正常、可靠訊息傳輸、安全性(只有可信賴、通過簡單認證或MD5認證可參加AS內部的OSPF協定,可防阻重播攻擊) * OSPFv3旨在支持IPv6但也支持IPv4,最大的改進為使用IPSEC進行身分驗證。 * **AS階層式架構** * OSPF的自治系統可以階層式設定成多個區域,每個區域都會執行自己的OSPF狀態連結繞送演算法,會有一台或多台區域邊境路由器負責將封包繞送到區域之外。 * AS內會有唯一一個OSPF區域被設定為主幹區域,永遠包含AS中所有區域邊境路由器。 * AS內部跨區域的繞送,需要先將封包繞送到區域邊境路由器,然後經由主幹繞送到目的區域的區域邊境路由器,再繞送到目的地。 * **增強的內部往關路由協議(EIGRP)** * Cisco專有的高級距離矢量路由,允許比其前身IGRP更快的路由器表更新,並最大限度地減少拓樸更改後可能發生的路由不穩定性,其交換的消息包含關帶寬、延遲、負載、可靠性和到每個目的地的路徑的MTU信息。 * **虛擬路由器冗餘協議(VRRP)** * 用於需要高可用性的網路中,不能容忍路由器作為故障點。通過將虛擬路由器宣傳為默認網關來提高默認網關的可用性。 * **中間系統到中間系統(IS-IS)** * 一種鏈路狀態協議,允許每個路由器獨立構建網路拓樸的數據庫,與OSPF類似,計算流量通過的最佳路徑。 * IS-IS不使用IP地址,而是使用ISO地址,因此無須重新設計協議即可支持IPv6。 ### 跨AS繞送協定(EGP) * 邊境閘道協定(BGP)[RFC4271] * 分散的非同步協定,在網際網路中,所有AS都執行相同的跨AS繞送協定,將封包繞送到多個AS。各對路由器會透過使用埠號179的半永久性TCP連線來交換繞送資訊,稱為BGP連線。跨越兩組AS的BGP連線稱為外部BGP連線(eBGP);在同組AS內部的路由器之間的稱為內部BGP連線(iBGP)。 * 封包不會繞送到特定的目的端地址,而是繞送到CIDR格式的址首。 * 當路由器在BGP連線上通告址首時,會在址首中包含多個BGP屬性,例如: * AS-PATH(包含這則址首通告訊息曾通過的AS,可防止迴圈) * NEXT-HOP(提供跨AS協定與AS內部繞送協定之間的連結,顯示AS-PATH起點的路由器介面之IP位址) * **簡單的繞送演算法** 1. **燙手山芋繞送**:盡快地從其AS中獲取封包,忽略自身AS之外,端點到端點成本的其他組成部分。 2. **路由選擇演算法**:BGP會依序執行以下消去規則,直到剩下一條路由為止 >1. 路由被賦予的區域偏好值 >2. 最短AS-PATH的路由 >3. NEXT-HOP路由器最近的路由 >4. BGP識別碼 ## 網際網路控制訊息協定(ICMP) * 被主機和路由器用來交流網路層資訊,例如錯誤回報。另一種ICMP訊息是來源抑制,最初用來執行壅塞控制,但由於TCP也有壅塞控制在傳輸層實作,因此不會用到網路層的ICMP回饋。 * ICMP訊息是被夾帶在IP資料報中,位於IP之上,以IP內容的形式被載送。訊息包含類型與代碼欄位,也包含一開始產生該則ICMP訊息的IP資料報標頭及其最開頭的8位元組。 * ping程式,會送出類型8、代碼0的ICMP訊息給主機,目的端主機收到後,會回送一個類型0,代碼0的ICMP回覆。如果在預定義的時間段內沒有返回回復,ping程序會發送更多Echo request,最終ping表示主機不可達。 * 攻擊者可發送帶有錯誤訊息的虛假ICMP消息,導致路由器將網路流量轉移到攻擊者指示的位置,這種技術稱為ICMP隧道。 * ICMP還用作traceroute的核心協議,用於診斷網路連接,但因其收集大量重要的網路訊息,攻擊者可使用該工具來繪製受害者的網路。安全管理員可以配置IDS傳感器來監控該工具的使用。 ## 網路管理與SNMP * 網路管理包含軟、硬體以及人員的部屬、整合與協調,以對於網路及元件資源進行監測、調查、配置、分析、評估、控制,從而以合理的成本,滿足即時性、作業效能以及服務品質的需求。 * **網路管理的主要元件**: 1. 管理伺服器:在網路操作中心(NOC)的中央管理站台上執行,控制網路管理資訊的收集、處理、分析以及顯示。 2. 受管理的裝置(包含軟體) 3. 管理資料庫(MIB):由SMI(管理資訊結構)資料描述語言所指定,確保網路管理資料的語法以及語意被明確定義。 4. 網路管理代理程式:受管理裝置中執行的行程,受管理伺服器命令及控制。 5. 網路管理協定:本身不管理網路,而是提供網路管理者管理的能力。 * **簡單網路管理協定(SNMP)[RFC3416]** * 是一種應用層的協定,最常見的用途是請求-回應模式,SNMP管理伺服器會傳送一筆請求給SNMP代理程式,收到請求後,代理程式會採取某些行動,然後送出該筆請求的回覆訊息,透過請求來查詢(取得)或修改(設定)與受管理裝置有關的MIB物件數值。但社區字符串在SNMPv1及v2中以明文發送,攻擊者可能用嗅探器輕鬆訪問他們。(SNMPv3具有加密功能,可提供加密、消息完整性和身分驗證安全性) > 管理員通過社區字符串(read-only和write-read)來允許讀取保存在MIB中的數據,然而多數通斯不會去修改默認的社區字符串(public和 private),因此任何可以連接到port 161和162的人都可以讀取設備的狀態並重新配置。 * 第二常見的用途是代理程式主動送出陷阱訊息給管理伺服器,用來告知管理伺服器有意外狀況導致MIB物件數值遭到修改。[RFC3418]定義了眾所周知的陷阱類型,包括裝置的冷開機或暖開機、連結的起用或故障、相鄰點消失、認證失敗等等。 ## 虛擬私人網路(VPN) * VPN是常用於連接中、大型企業或團體間私人網路的通訊方法。它利用隧道協定(Tunneling Protocol)來達到傳送端認證、訊息保密與準確性等功能。 ### 網際網路安全協定(IPsec) * 是一個協定套件,透過對IP協定的封包進行加密和認證來保護IP協定的網路傳輸協定族(一些相互關聯的協定的集合)。IPsec被設計用來提供 1. 入口對入口通訊安全,在此機制下,封包通訊的安全性由單個節點提供給多台機器(甚至可以是整個區域網路)。 2. 端到端封包通訊安全,由作為端點的電腦完成安全操作。 上述的任意一種模式都可以用來構建虛擬私人網路(VPN),而這也是IPsec最主要的用途之一。 * IPsec主要由以下協定組成: 1. 認證頭(AH),為IP資料報提供無連接資料完整性、訊息認證以及防重放攻擊保護; 2. 封裝安全載荷(ESP),提供機密性、資料來源認證、無連接完整性、防重放和有限的傳輸流機密; 3. 網際網路金鑰交換(Internet Key Exchange ,簡稱IKE或IKEv2),為 AH、ESP 操作所需的 安全關聯(SA) 提供演算法、封包和金鑰參數。 * **IPsec與其它網際網路安全協定的對比** IPsec協定工作在OSI模型的第三層,使其在單獨使用時適於保護基於TCP或UDP的協定(如安全套接子層(SSL)就不能保護UDP層的通訊流)。這就意味著,與傳輸層或更高層的協定相比,IPsec協定必須處理可靠性和分片的問題,這同時也增加了它的複雜性和處理開銷。相對而言,SSL/TLS依靠更高層的TCP(OSI的第四層)來管理可靠性和分片。 # 連結層與區域網路 ## 實作連結層 * 大部分的連結層是實作在網路轉接卡(也稱網路介面卡,NIC),網路轉接卡的核心部分是一具連結層控制器,通常使用單一的特殊用途晶片來實作許多連結層服務(建立訊框、連結存取、錯誤偵測等等)。在傳送端,控制器會取出由協定堆疊的較高層級所建立並存放在主機記憶體中的資料報,將其封裝在連結層訊框,然後依照連結存取協定,將遜框傳入到通訊連結中。在接收端,控制器會接收整份訊框,然後將網路層資料報取出。如果連結層具備錯誤偵測功能,則其傳送端控制器會設定訊框標頭中的錯誤偵測位元,接收端控制器則會執行錯誤偵測。 * 也有部分連結層是實作在主機CPU所執行的軟體中,實作較高層級的連結層功能,例如整合連結層的定址資訊以及啟動控制器硬體。在接收端,連結層軟體會回應來自於控制器的中段,處理錯誤狀況,以及將資料報上交給網路層。 ## 錯誤偵測與更正技術 ### 同位檢查 * 最簡單的錯誤偵測形式,使用單一的同位位元。 * 接收端只需要計算他所收到的d+1個位元中,1的數目即可。如果在偶位策略中發現基數個數值為1的位元,接收端便知道至少發生了一個位元錯誤。但是如果發生了偶數次的位元錯誤時,會造成未被偵測的錯誤。 * 單位元同位策略的二維延伸,包含該錯誤位元的行跟列,接收端可以確切指出損毀的位元為何,並加以更正。 * 接收端能偵測並更正錯誤的能力,稱作向前糾錯(FEC),經常會被使用在音訊儲存與播放裝置,在網路環境下,FEC技術可以單獨使用。 ### 檢查和方法 * 位元組的資料被視為許多個16位元的整數,然後將他們加總。接收端會計算所收到的資料(包含檢查和)的總和的1補數,然後檢查計算結果是否每個位元都為1。 * 在TCP與UDP協定中,網際網路檢查和是針對所有的欄位(包括標頭和資料)。在ip協定中,則只針對IP標頭進行計算,因為UDP與TCP區段有自己的檢查和。 * 檢查和方法所需的封包負擔相對較小,然而錯誤防堵機制也相對薄弱。 ### 循環冗餘檢查(CRC) * 也稱作多項式編碼,普遍使用在今日計算機網路中的錯誤偵測技術。將欲傳送的位元串視為多項式,以位元串列的0與1值為係數。 > 傳輸層使用檢查和,在連結層使用循環冗餘。因為傳輸層的錯誤偵測是以軟體實作,適合使用簡單快速的檢查和,而連結層實作在轉接卡上,快速執行複雜的CRC。 ## 多重存取協定 * 用來規範共用廣播通道的傳輸,避免超過兩個節點在傳送訊框時,在接收端發生碰撞,造成訊框遺失。 ### 多重存取協定的三個類型: * **通道分割協定**: 分為分時多工(TDM)、分頻多工(FDM)、分碼多工(CDMA) * 分時多工:將時間分割為時框及時槽,輪流傳輸。 * 分頻多工:將通道切分為不同的頻率,分頻傳輸。 * 分碼多工:每個節點使用獨有的碼來編碼其傳送的資料位元。 * **隨機存取協定**: 永遠使用通道的全速進行傳輸,發生碰撞時,所有涉及碰撞的節點都會反覆重送其訊框,直到訊框成功送出不再發生碰撞為止。在重送訊框前,會等待一個隨機的延遲時間。常用的隨機存取協定有:ALOHA協定、載波感測協定(CSMA)。 * **輪流存取協定** * **輪詢協定**: 指定一個節點為主控節點,由主控節點循環的輪詢每個節點,讓這些節點輪流傳輸最多可以傳輸的最大訊框量。可能會造成輪詢延遲,且如果主控節點失效則停擺。 * **令牌傳遞協定**: 以某種固定順序,在節點間交換一種小型的、特殊用途的訊框,稱為令牌。當節點有訊框要傳送時,便會留住令牌並送出最大上限的訊框,再將令牌繼續照固定順序傳遞。此種協定較有效率,但如果有節點失效或忘記釋出令牌,整個通道可能停擺。 ## 交換式區域網路 ### MAC位址(或稱LAN位址、實體位址、連結層位址) * MAC位址的長度是6位元組,提供了248種可能的MAC位址,通常是以16進位來表示。由IEEE管理MAC的位址空間。 * MAC位址是一種平坦式結構,無論轉接卡到哪,位址都不會改變。相對IP為階層式(分為網路及主機),當主機移動,改變他所連接的網路時,IP位址也必須跟著改變。 * 轉接卡擁有MAC位址,當轉接卡想要傳送訊框給某張目的端轉接卡時,進行傳送的轉接卡會將目的端轉接卡的MAC位址放入訊框,然後將該筆訊框放入LAN中。收到訊框的轉接卡,會檢查目的端MAC位址是否與自身的MAC位址相符,如果相符,轉接卡會取出內含的資料報,然後將該份資料報向上層傳送;如果不符,則丟棄訊框。 * 轉接卡也會在訊框的目的端位址欄位中,放入特殊的MAC廣播位址(FF-FF-FF-FF-FF-FF)。 > 連結層交換器沒有MAC位址,因為其工作是在主機和路由器之間傳遞資料報,主機和路由器不需要為訊框指出中介交換器的位址。 ### 位址解析協定(ARP)[RFC826] * 在網路層位址(如IP位址)以及連結層位址(亦即MAC位址)之間轉譯。每台主機或路由器在其記憶體中,都會存有一份ARP表格,包含IP位址與MAC位址的對映及生存期(TTL)數值。ARP是一種隨插即用協定(節點的ARP表格會自動建立),而如果主機從子網路中離線了,它的條目終究會被移除。 * 如果目前ARP表格中並沒有關於該目的端節點的條目時,傳送端會使用ARP協定來解析此一位址。首先,傳送端會建立一份特殊的封包,稱為ARP封包,其中包含傳送端與接收端的IP與MAC位址,轉接卡會將這份ARP封包封裝到連結層訊框中,使用廣播傳入子網路,唯一一個相符的節點會傳回一份ARP回應封包,內含它所需的資料。 > ARP封包會被封裝在連結層訊框中,因此架構上它位於連結層之上;但ARP封包中包含存放連結層位址的欄位,因此有人主張它為連結層協定;但它也包含網路位址,因此也有人主張它是種網路層協定。 ### 乙太網路(最普及的LAN技術) * 乙太網路是第一個被廣為布設的高速LAN,其他LAN技術(如令牌環、FDDI與ATM)都比乙太網路來的昂貴。且雖然也有其他LAN技術擁有較高速率,但乙太網路總能以相同或更高速率的版本反擊。 * 原始的乙太網路是使用同軸匯流排來互連節點,並使用10Mbps的同軸電纜,長度限制500公尺,更長程的運輸需要仰賴中繼器。在1990年代中期,乙太網路標準化為100Mbps,在雙絞線上距離限制為100公尺但使用光纖可達數公里。直到1990年代晚期,大多已將其LAN更換成使用集線器的星狀拓樸乙太網路裝置。到2000年代早期,乙太網路繼續使用星狀拓樸,但中心點的集線器更換成了交換器。 * 乙太網路訊框結構: * 資料欄位(46~1500位元組) * 目的端及來源端欄位(各6位元組) * 類型欄位(2位元組):支援不同協定 * 循環冗餘檢查CRC(4位元組):偵測位元錯誤 * 前置訊號(8位元組):前7個位元組都是10101010,第8個位元組為10101011,用來喚醒接收端轉接卡。 > 乙太網路是無連線服務,不必先握手,也不會確認及否定訊息。 ### 連結層交換器 * 接收到來的連結層訊框,然後將之轉送到輸出連結。 * **交換器的特點** * **隨插即用**:表格會自動建立並在老化時間過後刪除某些位址。 * **全雙工**:可同時傳送和接收。 * **有過濾及轉送功能**:交換器的過濾功能,會判斷應將訊框轉送給某個介面還是將其丟棄。轉送功能則會決定應該要將訊框交給那些介面,然後將訊框移往這些介面。 >過濾及轉送功能都會透過交換表來完成,交換表包含:MAC位址、前往該MAC位址的交換器介面及放入表格的時間。如果表中沒有目的端位址的條目,交換器就會廣播該訊框;如果發現此訊框已被重複傳遞,交換器會過濾該訊框;假如有條目且未被過濾,交換器會將此訊框轉入輸出緩衝區。 * **交換器與路由器的比較** * 同樣為儲存並轉送封包交換器 * 路由器為第三層,交換器為第二層 * 交換器隨插即用,路由器須設定 * 交換器的運作限制為擴展樹,路由器則有最佳路徑 * 交換器不提供廣播風暴保護,路由器則有提供防火牆 * **交換器汙染攻擊** 送出大量封包給交換器,使用許多假造的、不同來源端的MAC位址,藉此塞滿交換表,造成交換器廣播大部分的訊框,讓竊聽程式得以捕捉。 ### 虛擬區域網路(VLAN) * 解決LAN的三項缺點 * 缺乏流量隔離措施 * 交換器使用上沒效率 * 使用者管理困難 * VLAN使我們可以在單一的實體區域網路基礎設施下,定義多個虛擬網路。在使用連接埠來建立VLAN中,交換器的連接埠被切分為群組,各自構成一個VLAN。 * 連接兩台擁有兩個VLAN交換器的方法: * 兩條纜線 * 幹線連接 # 參考資料 ### 主要參考資料 > 電腦網際網路第七版 ### 其他相關資料 >維基百科 https://zh.wikipedia.org/wiki/ > https://medium.com/hannah-lin/%E5%BE%9E%E9%97%9C%E9%8D%B5%E5%AD%97%E8%AA%8D%E8%AD%98%E8%B3%87%E5%AE%89-1-%E7%B6%B2%E8%B7%AF%E5%A8%81%E8%84%85-bf07fd7a4beb > https://www.cloudflare.com/zh-tw/learning/ddos/what-is-a-ddos-attack/
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.