TCP/IP學習筆記
文章目錄
1. TCP/IP概述
互聯網的目的就是要隱藏底層網絡的硬件細節,同時提供一般的服務通信。
網際互連的方式
應用級互聯
實質:
應用程序完全瞭解本機器網絡連接的內部細節,並直接通過網絡連接與其它應用程序通信。應用程序直接建立在物理網絡上,無任何中間協議。
缺陷:
- 每臺計算機上都要有所需的應用程序
- 硬件變動後,應用程序要做出相應的修改
- 每個應用程序都要了解本機的所有網絡連接,造成代碼重複
網絡級互聯
思想:把通信部分獨立出來
方法:在低層網絡技術與高層應用程序之間增加一箇中間層軟件,以便抽象和屏蔽硬件細節,向用戶提供通用網絡服務。
優勢:
- 把數據通信活動從應用程序中分離出來,允許中間的計算機直接處理網絡通信,而不必瞭解發送雙方 的應用程序
- 系統更加靈活,因此可以建立通用的通信工具
- 如果出現新的網絡技術,只要修改或者增加新的網絡層軟件而不需要修改上層應用程序
TCP/IP 的引入
問題? 數據格式不同,地址不同如何進行通訊。
解決辦法:引入IP層,屏蔽不同物理網絡技術的差別;引入IP路由器
有了IP層和路由器之後又有了三個問題:選路,控制和可靠性。
- 解決辦法:路由協議:(RIP、OSPF、BGP等)
- ICMP:Internet控制報文協議
- TCP/UDP:傳輸層協議(傳輸控制協議和用戶數據報協議)
在上述協議的基礎上,實現了多種網絡應用:FTP、HTTP、TELNET、POP3、SMTP、SNMP、DNS等等
TCP/IP協議族:上述各個協議的統稱。
TCP/IP是網間互連的一個重要協議,是一個被廣泛採用的互連協議標準。
TCP/IP是一個協議族,TCP和IP是其中兩個最重要的且必不可少的協議,故用它們作爲代表命名。
TCP/IP 的分層模型
分層的優勢:簡化問題,分而治之,有利於軟件升級換代。
分層的缺點:效率低
- 各層之間相互獨立,都要對數據進行處理
- 每層處理完畢都要加一個頭結構,增加了通信數據量
TCP/IP 的分層原則:信宿機第n層收到的數據與信源機第n層發出的數據完全一致 。
協議分層的兩個邊界:操作系統邊界、協議地址邊界。
IP位於所有通信的中心,是唯一被所有應用程序所共有的協議。
總結: TCP/IP模型是在一個硬件層上構建的4個軟件層
- 應用層:提供通訊用的應用程序,如電子郵件,文件傳輸。
- 傳輸層:提供應用程序間端到端的通信。(格式化信息流、提供可靠傳輸、識別不同 的應用程序)
- IP層:負責點到點通信。(處理TCP分層發送請求、爲進入的數據報尋徑、處理ICMP報文:控流和擁塞控制、組播服務)。
- 網絡接口層:接收IP數據並通過選定的網絡發送。
TCP/IP Internet的發展歷史
- 1958年1月,ARPA (Advanced Research Projects Agency)成立。旨在研究對國防有重大意義的高新技術。其中研究的重要任務之一是:在戰爭期間保證不間斷、高可靠性通信的通信網絡系統。
- 1969年10月,ARPA建立了第一個分組交換網絡ARPANET。
- 1973年,ARPA啓動互聯網研究項目(Internetting),並導致了TCP/IP的出現與發展。
- 1977-1979,推出目前形式的TCP/IP體系結構和協議規範(基本定型)。
- 1980年前後,ARPA上的所有機器開始轉向TCP/IP,並以ARPANET爲主幹逐步建立Internet。
- 1983年初,向TCP/IP的轉換全部結束。
- 1975年起ARPANET的網控與管理者將ARPANET一分爲二:
ARPANET:用於進一步的研究。
MILNET:用於軍方的非機密通信。 - 1983年,伯克利加州大學推出內含TCP/IP的第一個BSD UNIX (Berkeley Software Distribution UNIX)。此舉使ARPANET覆蓋了當時美國90%的計算機科學系。
- 1984年,Internet基本形成。
- 1985年,NSF (National Scientific Foundation)開始資助TCP/IP和互聯網的研究。
- 1986年,建立NSFNET,使全美的主要院校、科研機構聯入NSFNET,並與ARPANET相聯。
- 此後,NSF不斷髮展並逐步取代ARPANET成爲Internet的新主幹,ARPANET逐漸退出歷史舞臺。
- 1991年起,美國政府決定把主幹網交給私人公司。
- 1993年,高級網絡和服務公司ANS (AdvancedNetworks and Services)建立了ANSNET,並準備取代NSFNET。
- 1995年,NSF不再對NSFNET提供資助,各種商業網絡代替NSFNET提供主幹通信服務,Internet進入商業化時代。
- 1995年,VBNS (Very High Speed Backbone Network Service)建設並取代ANSNET。
- 1996年,美國啓動NGI (Next Generation Internet),並從1998年開始研究建設NGI的主幹網Abilene。
- 目前的TCP/IP是第4版,稱作IPv4。
- 1998年,IPv6協議標準於基本制定完成,進入實用化階段。
1995年10月24日,美國聯邦網絡委員會爲Internet作了如下定義:
Internet是一個全球性的信息系統,系統中的每臺主機都有一個全球唯一的主機地址,地址格式通過IP協議定義。系統中主機與主機間的通信遵守TCP/IP協議標準,或是其它與IP兼容的協議標準來交換信息。在以上描述的信息基礎設施上,利用公網或專網的形式,向社會大衆提供資源和服務。
TCP/IP形成的主要原因:
1.TCP/IP是最早出現的互聯網協議,它的成功得益於順應了社會的需求。
-
DARPA採用開放策略推廣TCP/IP,鼓勵廠商、大學開發TCP/IP產品 。
-
TCP/IP與流行的UNIX系統結合是其成功的主要源泉。
-
TCP/IP技術來自於實踐,並在實踐中不斷改進。
Standford大學的Vint Cerf因在TCP/IP上作出的突出貢獻,而被人們稱爲“Internet之父”。
2. 點到點協議PPP
PPP簡介
PPP (Point to Point Protocol)屬於網絡接口層,主要用於撥號接入Internet的場合。
早在1974年7月,IETF就以RFC1661的形式推出了PPP標準。
至今仍然被廣泛應用,並隨着新型寬帶技術的推出而衍生出新的形式,如符合ADSL接入要求的PPPoE。
PPP協議的對等段是客戶和ISP,它們通過Modem和電話網絡連接。
PPP協議流程:
- 在建立PPP鏈路前,發起方必須通過電話網絡呼叫回應方。呼叫成功後雙方建立了一條物理連接。
- 利用LCP創建PPP鏈路。
- 用PAP或CHAP驗證客戶身份。
- 用IPCP配置IP層參數(主要是配置IP地址)。
- 通信完成後,雙方利用LCP斷開PPP鏈路。
- 之後,斷開物理連接。
上述流程中各個報文段的含義如下:
- 發起方發送LCP配置請求報文,其中包括各項配置參數,比如
使用的認證協議、最大接收單元和壓縮協議等 - 迴應方若同意各項配置參數,則返回確認報文
- 發起方提供賬號和口令,以便驗證自己的身份
- 迴應方驗證發起方的身份成功後,向其返回確認報文
- 發起方發出IPCP配置請求
- 迴應方返回確認,其中包含了分配給發起方的IP地址
- 發起方發回LCP終止鏈路請求
- 迴應方返回確認,鏈路終
PPP鏈路操作的5個階段:
- Dead:初態和終態,表明物理層尚未準備好;
- Establish:使用LCP建立和配置鏈路;
- Authentication:身份認證階段;
- Network:使用相應的NCP配置網絡層議;
- Terminate:終止鏈路。
PPP協議滿足條件和組成
PPP:
- PPP是使用串行線路通信的面向字節協議
- PPP可以在同步和異步線路上使用
- 由於流量控制、差錯控制已在TCP中實現,因此PPP 沒有糾錯功能,不進行流量控制,不需要幀序號,不支持多點鏈路,使用全雙工方式傳輸數。
PPP協議應滿足的條件:
- 簡單:不需要複雜的流量控制、差錯控制等功能,也不需要序號,只需要實現最基本的功能。
- 封裝成幀:規定特殊的字符作爲幀的開始和結束標誌,同時保證能正確地區分數據與幀的定界標誌,保證數據的透明傳輸。
- 支持多種網絡層協議:能支持多種網絡層協議。
- 支持多種類型鏈路:能在多種鏈路上運行,如同步或異步、高速或低速、電或光等鏈路。
- 差錯檢測:可進行差錯檢測,丟棄錯幀。
- 檢測連接狀態:能及時自動檢測鏈路工作狀態。
- 可設置最大傳送單元:可針對不同的鏈路設置最大傳送單元MTU的值(幀中數據部分的長度)。
- 支持網絡層地址協商:支持網絡層通過協商配置並識別網絡地址。
- 支持數據壓縮協商:提供協商使用數據壓縮算法的方法。
PPP協議的組成:
- 幀格式及成幀方法(HDLC封裝)
- 用於建立、配置和測試PPP鏈路的LCP(Link Control Protocol ,鏈路控制協議)
- 用於建立和配置網絡層協議的NCP(Network Control Protocol,網絡控制協議)。對於IP網絡而言,使用IPCP(IP控制協議)。
此外,當客戶撥入ISP時,ISP需要驗證客戶身份,此時可以使用2個認證協議,即PAP和CHAP。
相關協議
DHLC:
DHCL是一種成幀方法。
- 定義了將IP數據報封裝到串行鏈路的方法,明確的界定一個幀的結束和下一個幀的開始,其幀格式允許進行錯誤檢測。
- PPP既支持異步鏈路,也支持面向位串的同步鏈路。
- IP數據報是PPP中信息部分,其長度受最大傳送單元MTU的限制。MTU的默認值是1500字節。
LCP:
LCP是一個鏈路控制協議
- 鏈路控制協議負責線路建立、配置、測試和選項協商,並在它們不再需要時,穩定地把他們釋放。
NCP:
NCP是一套網絡控制協議
- 網絡控制協議可以支持不同地網絡層協議,如IP、Appletalk等,對於所支持的每一個網絡層協議都有一個不同的 網絡控制協議,用來建立和配置不同的網絡層協議。提供了協商網絡層選項的方式。
PPP協議的幀格式
- 標誌域:標誌爲0x7E,即“01111110”,與HDLC相同。
- 地址域:固定爲0xFF,即“11111111”,表示所有站都可以接收這個幀。因爲PPP只用於點對點鏈路,地址域實際上不起作用。
- 控制域:
- 置爲0x03,即“00000011”,表示PPP幀不使用編號。PPP幀有三種類型:信息幀、監督幀、無編號幀
- 缺省值:PPP不提供使用序列號和確認應答的可靠傳輸。
- 在有噪音的環境中,如無線網絡中,通過LCP確定可以使用編號方式的可靠傳輸。
- 協議域:說明信息域中承載分組的種類。PPP爲LCP、NCP、AppleTalk和其他協議定義了相應的代碼。缺省長度是2字節,通過LCP協商變成1個字節。常用的有:
- 0x0021:IP數據報。
- 0x002b:IPX數據。
- 0x0029:AppleTalk數據。
- 0xc021:PPP鏈路控制數據(LCP)。
- 0x8021:IP控制協議(IPCP)。
- 0x802b:IPX控制協議。
- 0x8029:AppleTalk控制協議。
- 信息域:信息域是網絡層傳送過來分組,長度可變,可以協商一個最大值(MTU)。缺省1500字節。
- 字節填充法:當PPP使用異步傳輸時(面向字符),使用字節填充法來(0x7D)消除信息中可能出現的0x7E字符。
- 位填充法:PPP協議用在SONET/SDH鏈路時,使用同步傳輸而不是異步傳輸。
- 校驗和:
- 校驗和字段通常是2個字節,但也可以通過協商使用4個字節的檢驗和。
- PPP協議對收到的每一個幀,使用硬件進行CRC檢驗。若發現有差錯,則丟棄該幀。因此,PPP協議可保證鏈路級無差錯接收。
LCP
LCP報文:
報文格式:
鏈路配置報文:
- Configure-Request:發起方發送的第一個報文;
- Configure-Ack:如果Configure-Request中的每個選項都能被接收端識別,而且都被接受;
- Configure-Nak:如果每個選項都能識別,但是隻有部分能接受;
- Configure-Reject:如果Confiure-Request有部分選項不能被識別,或者不能被接受。
鏈路配置報文中選項的格式:
Options字段:包含0個或多個要協商的選項,同時協商;
選項的格式:
類型:
鏈路終止報文:
PAP- Password Authentication Protocol
PAP全稱爲:Password Authentication Protocol(口令認證協議),是PPP中的基本認證協議。PAP就是普通的口令認證,要求將密鑰信息在通信信道中明文傳輸,因此容易被sniffer監聽而泄漏。
發生時機:僅在建立連接的階段發生;
認證方式:一端發送明文口令至對等端,由對方認證;
特性:無法防止重放(playback)、窮舉(repeated trial)等攻擊;
封裝:PPP幀的數據字段;
CHAP: Challenge-Handshake Authentication Protocol
發生時機:建立連接時和連接建立之後的任何時間
CHAP全稱爲:Challenge Handshake Authentication Protocol(挑戰握手認證協議),主要就是針對PPP的,除了在撥號開始時使用外,還可以在連接建立後的任何時刻使用。
CHAP 協議基本過程是認證者先發送一個隨機挑戰信息給對方,接收方根據此挑戰信息和共享的密鑰信息,使用單向HASH函數計算出響應值,然後發送給認證者,認證 者也進行相同的計算,驗證自己的計算結果和接收到的結果是否一致,一致則認證通過,否則認證失敗。這種認證方法的優點即在於密鑰信息不需要在通信信道中發 送,而且每次認證所交換的信息都不一樣,可以很有效地避免監聽攻擊。
3. Internet地址及地址解析
Internet地址
幾個問題:
爲啥要進行編址:統一的思想,屏蔽物理地址。
什麼是地址:標識符
標識哪些東西:名字、地址、路徑
Internet地址應該具備哪些性質:能定位、要唯一、好計算
物理地址能作爲Internet地址嗎:不能(多樣性、多義性)
TCP/IP Internet編址方式如何:IP地址
Internet的概念層次:
地址 類型:
- A類:0——8位網絡號,首字節1-126
- B類:10——16位網絡號,首字節128-191
- C類:110——24位網絡號,首字節192-223
- D類:1110——組播地址,首字節224-239
- E類:11110——保留未用,首字節240——247
特殊IP地址:
網絡地址:主機號全0;
廣播地址:主機號全1;
有限廣播地址:32位全1;
回送地址:127...* , 網絡軟件測試及本機進程間的通信。該類地址用於本機進程間的通訊或者協議軟件測試,通常爲127.0.0.1
IP地址的實質:
IP地址標識的不一定是一臺主機,實質上標識的是到一個網絡的一條連接。
網絡字節順序:同樣的數據在內存中存儲方式不同:
在計算機中數據以小端或大端方式存儲。規定:首先發送整數中的高字節。
IP編址的缺陷:
- 限制網絡的平滑升級
如果號碼空間不足的話,必須要升位,並改變號碼的位長,這是任何號碼升位中都必須要遇到的。升位後的號碼是否兼容原號碼取決於編號規則和號碼分配,而不是號碼長度。 - 對主機的移動性支持不夠
標識設備的IP僅僅表示了設備的位置,並未有標識設備本身
Internet編址管理機構:
子網編址技術
可以讓一個網絡號跨越多個物理網絡
雖然128.10.0.0這個網絡號中可以包含多個物理網絡,但是互聯網絡的其餘部分都只能看到128.10.0.0
這個大網。
問題:如何指示網絡部分:
解決:使用子網掩碼。
具體方法:
每一個使用子網的網點都選擇一個32位的位模式。若位模式中的某位爲1,則對應IP地址中的某位位網絡中的一位,否則位主機號的一位。
子網掩碼:網絡號部分全爲1,主機號部分全爲0.
子網選路:
- 路由表:(網絡地址,子網掩碼,下一跳)
- 統一的選路算法:Route_IP_Fatagram(datagram,routing_table)
從數據報中提取出目的IP地址D; if(D 的前綴匹配某直接相連的網絡地址){ 通過該網絡把該數據報發送到目的站 }else{ for(路由表中的每一項){ N = D逐比特與子網掩碼相與 if(N等於表項中的網路地址段) 將本數據報發往表項中下一條地址所指定的路由器 } } if(沒有找到匹配的表項){ 宣佈選路出錯; }
特殊掩碼:
- 全0掩碼,對應默認路由
- 全1掩碼,對應特定主機路由
子網劃分舉例:
例1:等長子網劃分
假設已分配C類網絡182.28.61.0,且需要4個子網,每個子網最多25臺機器。
**RFC950規定:**不允許使用全0或全1的子網(RFC1812取消了該限制)
子網位數 | 掩碼 | 掩碼後八位 | 子網數 | 主機數 |
---|---|---|---|---|
2 | 255.255.255.192 | 11000000 | 2 | 64 |
3 | 255.255.255.224 | 11100000 | 6 | 30 |
4 | 255.255.255.240 | 11110000 | 14 | 14 |
5 | 255.255.255.248 | 11111000 | 30 | 6 |
6 | 255.255.255.252 | 11111100 | 62 | 2 |
劃分方法:使用2位子網號,掩碼爲:255.255.255.224
掩碼後八位 | 子網號 |
---|---|
001 00000 | 192.28.61.32 |
010 00000 | 192.28.61.64 |
011 00000 | 192.28.61.96 |
100 00000 | 192.28.61.128 |
101 00000 | 192.28.61.160 |
110 00000 | 192.28.61.192 |
從以上6個子網中任意選擇3個即可。
例2:變長子網劃分:
假設已給C類網址202.18.6.0,設計符合下列要求的子網劃分方案:
- 4個網絡,每臺最多26臺主機
- 3個網絡,每個最多10臺主機
- 4個點到點串行鏈路
劃分方法:採用不等長的子網掩碼。先按最多主機數選擇符合要求的子網位,然後對子網再繼續劃分。
地址轉換- ARP協議
ARP:Address Resolution Protocol
RARP:Reverse Address Resolution Protocol
問題:
爲什麼要進行地址轉換:必須根據IP地址找到物理地址才能進行實際的數據傳送。
如何進行地址轉換:直接映射 或者 動態綁定
兩種地址類型:
- 空間較小且容易配置的物理地址(直接映射)
- 空間巨大且固定的物理地址(動態綁定)
直接映射:IP地址 物理地址
動態綁定:用協議獲取
基本步驟:
- 遠端A廣播包含目標B的IP地址IPb的ARP請求報文,請求B回答自己的物理地址PAb;
- 網絡上的主機將IPb與自身的IP地址比較,若相同,則轉步驟三,否則忽略。
- B將PAb封裝在ARP應答報文中,之後發送給A;
- A從應答報文中提取IPb和PAb,從而獲得IPb和PAb之間的映射關係。
總結:廣播請求,單播迴應。
提高ARP的效率:
- 設置ARP cache,存放最近解析出來的IP/MAC對;
- 請求解析時,把自己的IP/MAC地址也放在報文中;
- 收到ARP請求的所有主機都緩存其中的IP/MAC;
- 主機入網時,主動廣播它的IP/MAC。
ARP中軟狀態使用(緩存信息失效問題)
問題:一條IP/MAC映射記錄失效怎麼辦?
使用超時機制,一般爲20分鐘,如果在超過規定的超時時間內沒有使用某條記錄,那麼就刪除該記錄。
優勢:
- 無需專門的通知機制;
- 對硬件可靠性要求低。
缺陷:可能會’反應遲鈍‘。
不同網絡間地址轉換:路由器轉發:
轉換步驟:
- A利用ARP獲得路由器R接口1的物理地址’
- A把報文發給路由器R的接口1
- R從接口2使用ARP獲得B的物理地址
- R把報文從接口2轉發給B
ARP的封裝與標識:
ARP必須封裝到一個幀中
反向地址轉換-RARP協議
問題:無盤工作站啓動時,如何確定它的IP地址?
用它的物理地址在網上廣播,請求服務器告訴IP地址。
- A發出RARP關播請求報文(MAC_A,0,MAC_A,0)
- RARP服務器給A發應答報文(MAC_S,I_S,MAC_A,I_A)
注意:
3. 無盤工作站所在的網絡必須有RARP服務器
4. 有多臺RARP服務器,可採用主、備份服務器技術
- 一主服務器,其餘位備份服務器
- 主服務器先響應,備份服務器有兩種響應方式
+ 只有在收到重複的RARP請求時才響應
+ 隨機延遲一段時間後再響應
- 封裝RARP的以太網幀類型爲8035H
課後作業
題目:
1、第一章第1部分:網絡協議分層的優缺點。
分層的優勢:**簡化問題,分而治之**,有利於軟件升級換代。
分層的缺點:**效率低**
1. 各層之間相互獨立,都要對數據進行處理
2. 每層處理完畢都要加一個頭結構,增加了通信數據量
2、第一章第1部分:你認爲一個路由器最基本的功能應該包括哪些?
第一,網絡互連:路由器支持各種局域網和廣域網接口,主要用於互連局域網和廣域網,實現不同網絡互相通信;
第二,數據處理:提供包括分組過濾、分組轉發、優先級、複用、加密、壓縮和防火牆等功能;
第三,網絡管理:路由器提供包括路由器配置管理、性能管理、容錯管理和流量控制等功能。
3、第一章第2部分:分析PAP和CHAP的優缺點。
PAP
優點:簡單,僅在建立連接時驗證,認證速度快
缺點:密匙信息使用明文傳輸,不安全
CHAP
優點:不傳輸密匙信息,可以有效避免監聽攻擊,相比PAP更安全
缺點:三次握手協議,驗證更復雜,在建立連接後依然需要隨機驗證,速度慢。
4、第一章第3部分:在理想情況下,可以有多少個A類地址,每個A類地址中包含多少個可以配置給主機的IP地址?
有126個A類地址。
每個A類網絡理論上可連接$2^24-2=16777214$臺主機(減2的原因是:全0表示主機地址,全1表示廣播地址)。
5、結合課堂中的例子,分析跨越2個或3個路由器轉發IP數據報時ARP的使用步驟,以及經過每個步驟後通信雙方及中間路由器ARP緩存的變化情況。
假設:有主機A和主機B,主機A經過路由器R1和R2連接到B
步驟:
1. A向路由器R1發送ARP請求報文,路由器R1獲得報文後返給A一個IP地址,並保存A的IP/MAC地址映射。
2. A將包含B的IP地址的數據幀發送給R1,
3. R1根據B的IP地址查詢路由表並進行路由選擇,將數據報轉發給路由器R2
4. R2根據自己緩存的IP/MAC地址映射,將數據報發送給B。