天天看點

TCP/IP詳解 第一章 概述一、基礎概念二、設計實作三、TCP/IP協定結構和協定四、内聯網和外聯網五、設計應用六、與Internet體系結構相關的攻擊

概述

  • 一、基礎概念
    • 1 分組、連結、資料報
      • 分組
      • 連接配接
      • 資料報
    • 2 端到端與命運共享
      • 端到端
      • 命運共享
    • 3 差錯控制與流量控制
      • 差錯控制
      • 流量控制
  • 二、設計實作
    • 1 分層
    • 2 分層中的複用、分解、封裝
  • 三、TCP/IP協定結構和協定
    • 1 ARPANET參考模型
    • 2 端口号
    • 3 名稱、位址、DNS
  • 四、内聯網和外聯網
  • 五、設計應用
    • 1 客戶機、伺服器
    • 2 對等
    • 3 應用程式程式設計接口
  • 六、與Internet體系結構相關的攻擊

一、基礎概念

網際網路、網際網路、網際網路的概念與差別

  • 網際網路:彼此通信的裝置組成的網絡叫網際網路
  • 網際網路:一個遍布全球數十億人口的廣域網
  • 網際網路:一個由許多互相連結的超文本組成的系統(www)

    範圍是 網際網路>網際網路>網際網路 其次本身概念也有所差別

1 分組、連結、資料報

一開始互相通訊是通過實體方式實作的,扯電話線到指定地點 通訊時需要先呼叫連結中心進行轉接,建構實體鍊路進行通訊。之後逐漸數字化,大幅提高了通訊的可靠性與性能

分組

分組交換的概念出現于20世紀60年代,在分組交換中,讓包含一定位元組數的數字資訊塊獨立通過網絡,這些分組在達到目的地的過程中需要在交換裝置之間傳輸。

優點

  • 網絡更加由彈性,設計者無需擔心網絡收到實體攻擊
  • 可以基于統計複用更好的利用網絡與交換裝置

統計複用方式

通過簡單的FIFO 就可以實作交換裝置的充分利用 之前需要保持某特定連結 由于分組變為分組資料包排隊發送給應該到達的地點。

缺點是這種方式可能造成阻塞,增加了不可預測性

替代性方案:時分複用(TDM)通常是在每個連結上為資料保留一定量的時間或其他資源,增加可預測性,但同時保留的資源會讓其無法充分利用網絡帶寬。

連接配接

虛電路(VC)

概念:顧名思義,就是虛拟的電路連結,在在兩個節點或應用程序之間建立起一個邏輯上的連接配接或虛電路後,就可以在兩個節點之間依次發送每一個分組。

特點:接收端收到分組的順序必然與發送端的發送順序一緻,是以接收端無須負責在接收分組後重新進行排序。

後續:由于其不依賴實體的電路交換機,是流行的X.25協定的基礎 之後被幀中繼大規模取代,最終被數字使用者線(DSL)和電纜數據機取代

資料報

一種面向無連接配接的思想,不再将鍊路存儲在交換裝置中,而是讓分組資料本身持有資料的目的地以及和其它資料之間的關系,這種模式的分組資料被稱為資料報,其中資料的目的地及與其他資料關系放在報頭。

EX:消息邊界:一個應用将多個資料塊發送之後,通訊協定是否保留這些資料塊的開始結束資訊,依據是否保留消息邊界會出現按發送資料塊大小進行讀取或者是按固定大小進行讀取兩種讀取形式(保留了邊界就可以發不同大小的包 按不同大小的讀,不保留就隻能按固定大小一次一次的讀)

2 端到端與命運共享

端到端

端到端論點認為:隻有涉及到了通信系統應用程式或者最終使用者,其正确性和完整性才可能得到真正的實作。也就是不可能通過資料連接配接實作完美的通信功能,應當将其放在端主機的應用程式中實作(例如保證資料不丢失、發送速率、加密、傳遞确認等)。但是底層可以提供友善端系統工作的功能,進而改善性能。

命運共享

應用程式與底層通訊一起保證資料的原則,命運共享建議将所有必要的狀态放在通信端點,用以維護一個虛拟的連結。

由于這個原因,在通信失效的情況也會導緻一個或多個端點失效,命運共享的設計使得即便網絡連結在一段時間内失效 也能通過虛拟連結(如:TCP實作)的方式維持活動。

3 差錯控制與流量控制

差錯控制

硬體問題、傳輸問題、資料被篡改問題、無線網範圍問題…出于各種原因總會出現資料錯誤或者丢失的情況,對其處理方式就是差錯控制。

顯然,依據上述端到端和命運共享的論點,通常建議在應用程式附近或内部實作差錯控制。

當差錯出現在分組時,對于順序要求嚴格的應用傳遞可以使用重新發送的方式,但一個可靠的檔案傳輸可以不關心傳遞順序,隻要保證最終将資料無差錯傳遞即可,可以按照原來的資料重新組合。

幀中繼和Internet協定采用盡力而為的傳遞服務,其不會花費很大的努力去確定資料沒有差錯的情況下傳遞,而是收到資料後通過差錯檢驗碼來校驗(例如MD5之類),對于出錯的資料報僅做丢棄處理。

流量控制

以上述差錯控制的方式來看,發送方會以超過接受方處理的能力生成資訊,故需要對發送方進行流量控制,TCP會處理這樣的問題,和命運共享原則一樣,流量控制也是在端上完成的。後續介紹TCP的實作時會詳細讨論

二、設計實作

1 分層

分層将通信分成多個方面,讓開發人員隻關心其中某個方面,現在OSI模型建議分為7層,但是實際上認為TCP/IP體系結構包含5層(5層體系下是七層上面的會話層表示層和應用層合并為應用層)

7層結構

  • 實體層:定義了某種通訊媒體(如光纖電纜,電話線)傳輸數字資訊的方法
  • 鍊路層:共享相同媒體的鄰居(一條網線連結兩個電腦)建立連結的協定或方法,當超過一個鄰居時被稱為多接入網絡(Wifi、以太網等)協定用以協調多個端點在任何時間通路共享媒體。
  • 網絡層:經過不同類型鍊路層進行多跳通訊的方法,包含主機位址方案和路由算法(IP資料報)
  • 傳輸層:提供了會話之間的資料流,允許相同計算機系統多個應用程式之間連接配接或關聯的方法(TCP)
  • 會話層:會話表示正在運作的應用,可以提供連接配接初始化,關閉連接配接,增加檢查點等
  • 表示層:負責資訊的格式轉化和标準編碼
  • 應用層:應用通常自己實作自己的應用層協定,是功能開發和部署的地方

2 分層中的複用、分解、封裝

每一層協定都有自己的協定資料單元(PDU),從應用層到實體層層層封裝,每一層都将上一層的資料視為無需解釋的資料包裹在自己的結構中(每一層套一個header)并且每一層都有自己的類型辨別符用以辨別資料,在接收端再層層分解,變回期望的資料。

理想狀态是裝置端擁有全部層級 交換機(網橋)僅實作到鍊路層,路由器僅實作到網絡層,但是雖然期望是這樣,對于現在路由器和交換機通常會實作更多協定,用以管理及提供服務(遠端登陸之類),為實作這點通常也需要實作傳輸層和應用層(指的是7層中的上三層)協定

EX:路由器是需要将分組從一個接口轉發到另一個接口的,通常用于多個網絡之間的連接配接點,無法進行接口轉發僅進行鍊路擴充的不能稱為路由器

由于層層封裝複用分解,上層實際不需要關注下層的内容,隐藏了網絡拓撲和傳輸過程。

三、TCP/IP協定結構和協定

1 ARPANET參考模型

分層

  • 鍊路層(輔助):再鍊路層和網絡層之間,用以處理多接傳入連結路層和網絡層映射關系,如ARP
  • 網絡層:給資料報提供路由,如IPv4和IPv6
  • 網絡層(輔助):介于網絡層和傳輸層之間,協助完成網絡層設定和管理,如ICMP、IGMP、IPsec
  • 傳輸層:應用程式端口之間的資料交換,如TCP、UDP、SCTP、DCCP
  • 應用層:Internet相容的任何應用 如HTTP、DNS、DHCP

ARP:位址解析協定,為IPv4的專用協定,用于多鍊路(以太網、Wifi)ip映射程裝置的實體位址,IPv6位址映射功能作為ICMPv6的一部分不在這裡。

IP協定:網絡層最重要的協定,用于網絡尋址,通常說的分組就是指網絡層IP協定的PUD,也成為ip資料報(v4大小64K,v6大小4),在發送給鍊路層的時候需要進行縮小處理,這個過程稱之為分片,分片後的資料作為鍊路層的PUD也被稱作幀。IP資料報中包含了發送方和接收方的IP位址資訊(IPv4為32位 IPv6為128位)用以路由器進行轉發決策。

ICMP協定:Internet控制消息協定,是IP協定的輔助協定,用于與其他主機或路由器的網絡層交換資訊使用。分為ICMPv4和ICMPv6,對應了IPv4和IPv6,其中ICMPv6非常複雜,他包含了位址自動配置和鄰居發現等功能,取代了IPv4下鍊路輔助層的ARP協定。

IGMP協定:Internet組管理協定,也是IP協定的輔助協定,它采用多點傳播(源主機隻發送一份資料,資料的目的位址是多點傳播組位址,這樣,凡是屬于該組的成員,都可以接收到一份原主機發送的資料的拷貝)和傳遞的方式來管理作為多點傳播成員的主機。

TCP協定:傳輸控制協定,最廣泛使用的傳輸層協定,會處理網絡層不關心的資料丢失重複重排序等問題。面向連接配接(VC)且不儲存消息邊界。TCP可以提供可靠的資料流傳輸,讓應用層無需關心傳輸過程,TCP協定下的傳輸層PUD被稱為TCP段。

UDP協定:使用者資料報協定,僅提供比IP協定稍多的功能,保留消息邊界但不強制實作速率控制和差錯控制。即它允許資訊從一台主機向另一台主機發送資訊但不保證資料報能達到另一端,所有的可靠性服務均交由應用層實作。實際上UDP隻是提供了一套端口号用于複用分解校驗資料的完整性。

DCCP協定:資料報擁塞控制協定,較新使用場景較少的傳輸層協定,提供了介于TCP和UDP之間的服務。面向連接配接,不可靠的資料報交換,但具有擁塞控制功能(控制流量速率)

SCTP:流控制傳輸協定,也是較新使用較少的傳輸層協定,提供類似于TCP的可靠傳遞但不要求嚴格保持資料順序,它允許多個資料流在同一個連接配接上傳輸,并提供了一個消息抽象。

2 端口号

一個16位的非負整數(0-65535)每一個ip位址都有這麼多端口号,大多數情況下每一個傳輸協定都可以獨立使用這些端口(不同協定何以使用同一個端口号 最終區分是協定号-端口号唯一确定由哪個程式接收)

端口号包含熟知端口号(0-1023)注冊端口号(1024-49151)動态/私有端口号(49152-65535)

熟知端口号是衆所周知的端口号,例如:安全外殼協定(SSH 端口号22)、FTP(端口号20和21)、Telnet遠端終端協定(端口23)、電子郵件(SMTP 端口号25)、域名系統(DNS 端口号53)、超文本傳輸協定(HTTP HTTPS 端口号 80 443)互動郵件通路協定(IMAP IMAPS端口号143 993)、簡單網絡管理協定(SNMP 端口号161 162)輕量級目錄通路協定(LDAP 端口号389)

注冊端口号是提供給特殊權限的客戶機或伺服器,由IANA維護此特定用途的系統資料庫,一般開發新應用應避免使用(其實大部分開發都在用這些,目前注冊的服務端口隻到8000左右,使用之後的端口一般不會沖突)

動态端口号不受監管,基本隻用于短期使用,新開發應用的端口号建議放在此範圍内

EX:大部分熟知端口号都是奇數,原因是這些端口号都是由更早的NCP端口号派生來的 而之前不支援全雙工,輸入和輸出不能用一個端口是以以成對的形式提供。

3 名稱、位址、DNS

每個計算機和路由器的鍊路層至少需要由一個IP位址,在TCP/IP協定中 DNS是一個分布式資料庫,提供主機域名和IP位址的映射,因為IP位址不友善記憶,通常使用者是通過域名來使用的。

四、内聯網和外聯網

網際網路:上述描述過,現最大的網絡集合

内聯網:用以描述專用網際網路的術語,通常由一個商業機構或者企業運作提供給特定企業内使用者使用,使用者可以通過虛拟專用網(VPN)連接配接到内聯網。

外聯網:公司或者企業希望提供一個網絡,其中包含可供合作夥伴或其他公司通路的伺服器,涉及到VPN的網絡被稱為外聯網。

從技術上說 網際網路 内聯網和外聯網沒有本質差別 隻是使用方式和管理政策不同的專業術語。

五、設計應用

1 客戶機、伺服器

大多數網絡應用被設定位客戶機伺服器形式,一邊提供服務一邊使用服務。

伺服器分兩類 疊代和并發,疊代就是常見的阻塞,接受請求 處理請求 傳回請求

并發就是常見的異步,接收請求,開啟新的伺服器處理請求,等待新請求到來,新伺服器處理完之後銷毀,将結果傳回老伺服器傳回用戶端。

2 對等

也可以說是P2P,其最大的特點是沒有用戶端伺服器之分,或者同時接受請求和響應請求(即是用戶端又是伺服器)

常見的是BitTorrent(磁力連結下載下傳資源)

P2P一個難題是如何發現服務,一個對等方如何在一個網絡中尋找所需要的資料或者服務的其他對等方,通常使用一個引導程式來處理,在最開始時就配置好他所需要的對等放的位址和端口号。

3 應用程式程式設計接口

無論何種形式的應用設計,都需要表述其所需要的網絡操作,現在程式設計系統一般時由主機的作業系統提供的一個網絡應用程式程式設計接口(API)來實作。

六、與Internet體系結構相關的攻擊

原因:Internet傳遞IP資料報是基于目的IP位址,是以惡意使用者可以IP資料報的源位址字段,即:生成的資料報被傳遞到目的地很難确定其真實來源,或者說 無法确定真實來源。這種行為稱為欺騙。

欺騙可以和Internet中各種攻擊行為結合,如拒絕通路(Dos)攻擊,通過發送大量IP資料報拖垮伺服器,讓其處理無用的資料報,進而使正常使用者通路困難,因為通常需要很多計算機來進行發送,組成一個分布式Dos攻擊(DDos)

另一種攻擊時未授權通路攻擊,其内容時以未授權的方式來通路資訊資源,實作上主要利用了各種協定實作上的漏洞通過協定錯誤操控計算機,或者代理冒充合法使用者通路計算機。最終将操控的計算機以一種分布協同的方式使用(使用其算力或者惡意攻擊其他系統以擷取利益)

最初的Internet體系沒有設計任何加密,惡意使用者僅通過分析IP資料報就可以擷取大量私人資訊,随着加密技術完善之後,這種現象顯著減少,但是舊有的設計不當的協定在竊聽攻擊面前依舊很脆弱,是以盡量使用成熟的協定。

雖然可以在某層(Wifi網絡的鍊路層)啟用加密,但是隻有在主機到主機上的加密才能保護資料穿過多個網段。

繼續閱讀