第2版前言
隨著因特網技術的發展,TCP/IP協議以其高效、可靠、實用的特點和得天獨厚的因特網背景,逐漸確立了它在網絡中的統治地位。一系列與因特網密切相關的新技術進一步推動了因特網的普及和應用。物聯網將人與人聯結的因特網延展到了所有智能物;移動互聯網將因特網的固定聯結拓展到了移動和無線聯結;大數據將因特網的應用推進到了更深、更廣和更有效的層次;云計算將因特網的服務提高到了完美的狀態。而這些技術所基于的網絡的核心就是TCP/IP協議。
TCP/IP協議是一個比較龐大的協議族,協議層次清晰、功能強大、性能穩定。TC/IP協議是網絡研究工作者智慧的結晶,很多非常優秀的思想方法在該協議中得到了非常完美的體現。各種新型應用的技術需求推動著TCP/IP協議的不斷發展和進步。
了解和掌握TCP/IP協議的體系結構、工作原理和實現方法是對每個網絡應用程序開發人員和網絡管理人員*基本的要求。
本書在介紹TCP/IP的基本概念、原理和方法的同時,注意從以下三個方面突出本書的特點:
① 內容上力求全面,涵蓋TCP/IP的基本內容和各個主要方面;
② 改編中盡量反映互聯網的*新發展;
③ 敘述方法上盡量做到深入淺出,理論聯系實際,圖文并茂,注意內容的聯系、連貫及邏輯性。
第2版保持了第1版的結構、特點和風格;修訂了原書中的文字錯誤;明確了原書中表述不夠清晰的內容;增加了一些TCP/IP協議發展中涉及的新技術。
全書共分21章。第1章概述TCP/IP的形成和發展、相關的組織機構、標準文檔的形成過程以及未來的發展方向。第2章在回顧計算機網絡基本概念的基礎上,介紹因特網的體系結構,并將TCP/IP的結構與ISO/OSI進行比較。第3章介紹IP地址的相關概念,對子網、子網掩碼、超網和無類地址進行討論。第4章介紹地址解析和反向地址解析的原理,給出地址解析的報文格式和處理過程,并對代理ARP技術進行介紹。第5章對TCP/IP網絡層的IP協議進行介紹,主要圍繞IP數據報的格式、IP數據報首部的校驗、數據的分片與重組、IP 數據報的選項以及IP模塊的結構等問題進行討論。第6章介紹TCP/IP網絡層的另一個重要協議——因特網控制報文協議ICMP,詳細闡述ICMP協議原理、報文格式、差錯報告、控制報文和請求應答報文對。第7章討論TCP/IP的路由功能,給出路由表的基本結構和路由算法,介紹靜態路由和動態路由的概念,重點介紹動態路由中的路由表的建立和刷新協議(RIP、OSPF、BGP)。第8章介紹TCP/IP傳輸層協議——面向連接的TCP協議、無連接的UDP協議和流控制傳輸協議SCTP,重點討論TCP連接、流量控制、擁塞控制和差錯控制問題。第9章討論因特網的域名系統,介紹名稱的解析方法、DNS 報文格式、資源記錄以及包含資源記錄信息的數據庫文件。第10章討論TCP/IP應用層的BOOTP 和DHCP協議,DHCP是在BOOTP的基礎上發展起來的實現主機參數自動配置的協議。第11章介紹IP組播的基本概念和模型,重點討論因特網組管理協議IGMP 和組播路由協議。第12章討論TCP/IP應用層的文件傳輸協議,介紹FTP進程通信模型和命令,以及簡單文件傳輸協議TFTP,并給出FTP 與TFTP 的比較。第13 章討論TCP/IP 應用層的電子郵件系統,介紹簡單郵件傳輸協議SMTP、郵件獲取協議(POP3、IMAP)和通用因特網郵件擴充MIME。第14章討論TCP/IP應用層的遠程登錄協議,介紹Telnet概念、命令、選項協商及操作模式。第15章討論TCP/IP應用層的超文本傳輸協議HTTP,該協議是實現WWW全球信息服務系統的基本協議。第16章討論TCP/IP應用層的簡單網絡管理協議SNMP,對簡單網絡管理模型、簡單網絡管理協議及其報文格式、管理信息結構SMI、管理信息庫MIB進行介紹。第17章介紹移動IP的基本概念、工作原理以及相關的技術。第18章討論當前廣泛關注的因特網的服務質量問題,介紹服務質量的概念以及適應多媒體業務服務質量的實時傳輸協議RTP和實時傳輸控制協議RTCP,并重點討論與服務質量相關的兩個關鍵技術——集成業務和區分業務。第19章討論能夠靈活地為不同類型的業務提供支持的多協議標簽交換(MPLS)技術,介紹MPLS的組件、體系結構、工作原理和相關協議。第20章討論因特網的安全問題,介紹當前存在的安全威脅和對抗這些安全威脅的安全服務,講述保證網絡安全的基本技術,并對因特網的IP層安全、傳輸層安全和應用層安全進行深入的討論。第21章討論新一代因特網協議——IPv6協議,介紹IPv6的數據報格式、擴展首部、IPv6地址和ICMPv6,并討論從IPv4向IPv6過渡的技術。
本書第1版的第1~9章和第20章由蘭少華編寫,第10~19章由楊余旺編寫,第21章由呂建勇編寫。全書由蘭少華統稿。第2版主要由蘭少華在第1版的基礎上編寫修訂完成。
在本書的編寫過程中參閱了大量的RFC文檔,參考了百度百科、百度文庫、Wikipedia以及網上的相關資料,由于這些資料大多沒有原始的出處,所以無法在參考文獻中一一列出,只能在此對這些資料的原始作者表示感謝,對他們所做的工作和貢獻表示敬意。
由于編者水平有限,時間倉促,加之TCP/IP協議仍在不斷地發展和完善之中,本書可能在某些點上仍未能反映*新的發展,甚至難免存在一些缺點和錯誤,殷切希望廣大讀者批評指正。
本書第1版曾榮獲第八屆全國高校出版社*書二等獎,榮獲2007年江蘇省高等學校精品教材獎。
編者2017年2月
第3章IP地址
IP地址是因特網技術中的一個非常重要的概念,IP地址在IP層實現了底層網絡地址的統一,使因特網的網絡層地址具有全局*性和一致性。IP地址含有位置信息,反映了主機的網絡連接,是因特網進行尋址和路由選擇的依據。本章在介紹IP地址概念、IP地址分類的基礎上,討論了與IP地址相關的子網技術、超網技術以及無類網絡地址。
3.1IP地址概述
地址是標識對象所處位置的標識符。傳輸中的信息帶有源地址和目的地址,分別標識通信的源結點和目的結點,即信源和信宿。目的地址是傳輸設備為信息進行尋址的依據。
不同的物理網絡技術(底層網絡技術)通常具有不同的編址方式,這種差異主要表現在不同的地址結構和不同的地址長度上。
在一個物理網絡中,每個結點都至少有一個機器可識別的地址,該地址叫作物理地址。
物理地址有兩個特點: 不一致性和不*性。不一致性是指不同的物理網絡技術采用不同的編址方式;不*性是指不同的物理網絡中結點的物理地址可能重復。
為了保證尋址的正確性,必須確保一個網絡中結點地址的*性,這一要求在單一的物理網絡中很容易得到滿足。但是當多個不同的物理網絡進行互聯時,這種*性就難以得到保證。另外,不同物理網絡在地址編址方式上的不統一會給尋址帶來極大的不便。因此,在進行網絡互聯時首先要解決的問題是物理網絡地址的統一問題。在第2章我們已經提到因特網是在網絡級進行互聯的,因此,因特網在網絡層(IP層)完成地址的統一工作,將不同物理網絡的地址統一到具有全球*性的IP地址上,IP層所用到的地址叫作因特網地址,又稱為IP地址。實現地址統一的概念模式如圖3.1所示。
圖3.1用IP地址統一物理網絡地址
因特網采用一種全局通用的地址格式,為全網的每一個網絡和每一臺主機都分配一個因特網地址,以此屏蔽物理網絡地址的差異。
早期的ARPANET的主機地址就采用了層次型地址(P,N),這種地址體現了網絡的層次結構,便于進行尋址。尋址時先找到主機所在的網點P,然后再根據N找到該網點中的主機。因特網沿用了ARPANET的思想, 仍然采用層次型地址。因特網由網絡互聯而成,網絡由主機互聯而成。因此,IP地址由網絡號和主機號構成,如圖3.2所示。IP地址可以表示為:
IP.address∶∶= {,}網絡號(Network.number)主機號(Host.number)圖3.2因特網IP地址結構TCP/IP網絡與協議(第2版)第3章IP地址〖3〗其中網絡號的長度決定整個因特網中能包含多少個網絡,主機號的長度決定每個網絡能容納多少臺主機。網絡號的長度并不是固定的。通常因特網中的網絡數難以確定,但每個網絡的預期規模卻比較容易確定。
因特網的IP協議提供了一種整個因特網通用的地址格式(保證一致性),并在統一管理下進行IP地址的分配(保證*性),確保一個地址對應一臺因特網主機(或路由器),這樣,對上層而言物理地址的差異就被IP層屏蔽了。
因特網地址是一種層次型地址,它攜帶了關于對象位置的信息。因特網所要處理的對象比廣域網要復雜得多,無結構的地址是不能擔此重任的。由于IP地址標識了一個主機的位置(所屬的網絡),當將一臺主機從一個網絡移到另一個網絡時必須改變這臺主機的IP地址。
IPv4規定,因特網地址長度為32位(IPv6規定地址長度為128位)。因此,IPv4的地址空間為232,即4 294 967 296個IP地址。本書中所涉及的IP地址若不特別說明,則指IPv4地址。
IP地址一般用點分十進制數表示,例如202.119.84.120。這4個用點分隔的段分別對應4個字節。IP地址也可以用二進制(如11001010 01110111 01010100 01111000)或十六進制(如0XCA775478)表示。IP地址的二進制表示法在討論地址類別和掩碼時經常會用到,而十六進制表示法則很少使用。
3.2分類IP地址
傳統的因特網采用分類地址。因特網定義了5類IP地址: A類、B類、C類、D類和E類,如圖3.3所示。
圖3.3因特網IP地址類別
其中A、B和C是3個基本的類別,分別代表不同規模的網絡。A類地址由1個字節的網絡號和3個字節的主機號構成,用于少量的大型網絡。B類地址由2個字節的網絡號和2個字節的主機號構成,用于中等規模的網絡。C類地址由3個字節的網絡號和1個字節的主機號構成,用于小規模的網絡。
各類網絡所占因特網地址空間的比例如圖3.4所示。50%25%12.5%6.25%6.25%A類B類C類D類E類231230229228228圖3.4因特網IP地址空間A類地址第1個字節的*高位固定為0,另外7位可變的網絡號可以標識128個網絡(0~127),0一般不用,127用作環回地址。所以共有126個可用的A類網絡。A類地址的24位主機號可以標識1 677 216臺主機(224 =1 677 216),主機號為全0時用于表示網絡地址,主機號為全1時用于表示廣播地址,這兩個主機號不能用來標識主機。所以,每個A類網絡*多可以容納1 677 214臺主機。A類地址第1個字節的取值范圍為0~127。
B類地址第1個字節的*高2位固定為10,另外14位可變的網絡號可以標識214=16 384個網絡。16位主機號可以標識65 536臺主機(216=65 536),由于主機號不能為全0和全1。所以,每個B類網絡*多可以容納65 534臺主機。B類地址的第1個字節的取值范圍為128~191。
C類地址第1個字節的*高3位固定為110,另外21位可變的網絡號可以標識221=2 097 152個網絡。8位主機號可以標識256臺主機(28=256),由于主機號不能為全0和全1。所以,每個C類網絡*多可以容納254臺主機。C類地址的第1個字節的取值范圍為192~223。
D類地址用于組播(multicasting)。因此,D類地址又稱為組播地址。D類地址的范圍為224.0.0.0~239.255.255.255,每個地址對應一個組,發往某一組地址的數據將被該組中的所有成員接收。D類地址不能分配給主機。D類地址的第1個字節的取值范圍為224~239。有些D類地址已經分配用于特殊用途,如224.0.0.0是保留地址,224.0.0.1是指本子網中的所有系統,224.0.0.2是指本子網中的所有路由器,224.0.0.9是指運行RIPv2路由協議的路由器,224.0.0.11是指移動IP中的移動代理。另外,還有一些D類地址留給了網絡會議,如224.0.1.11用于IETF.1.AUDIO,224.0.1.12用于IETF.1.VIDEO。
E類地址為保留地址,可以用于實驗目的。E類地址的范圍為240.0.0.0~255.255.255.254,E類地址的第1個字節的取值范圍為240~255。
在分類地址網絡中每個網絡占用一個地址塊。各類網絡地址塊的示例如表3.1所示。表3.1各類網絡地址塊的示例
〖BHDFG2,WK3,K6,K8,K6,K13,KW]類別起始地址結束地址網絡地址主機地址范圍廣播地址A類86.0.0.086.255.255.25586.0.0.086.0.0.1~86.255.255.25486.255.255.255B類188.6.0.0188.6.255.255188.6.0.0188.6.0.1~188.6.255.254188.6.255.255C類206.8.2.0206.8.2.255206.8.2.0206.8.2.1~206.8.2.254206.8.2.255從表3.1中可看出,每個網絡都要占用兩個IP地址,一個用于標識網絡,另一個用于網絡廣播。每個網絡使用該網絡地址塊的起始地址作為網絡地址,該地址僅作為網絡的標識,主要用在網絡路由中。網絡地址塊的結束地址被用作該網絡的廣播地址。
在因特網的地址中包含了網絡信息。當一個路由器或網關連到多個網絡上時,每個網絡都會給路由器或網關分配一個IP地址,設備有多少個網絡連接,就有多少個IP地址。而且這些IP地址分別屬于不同的網絡,這對于路由選擇來說是非常有用的。一臺主機也可以連接多個網絡,這種主機叫作多宿主主機(multi.homed host)。多宿主主機擁有多個IP地址,每個地址對應一條物理連接。由此可見,因特網地址的本質是標識主機的網絡連接。圖3.5給出了多宿主設備的地址配置。
圖3.5IP地址標識網絡連接
因特網地址是由中央管理機構分配的。一個組織加入因特網時,將會從因特網的網絡信息中心InterNIC獲得網絡前綴,然后負責組織內部的地址分配。這樣,既解決了全局*性問題,又分散了管理負擔。
3.3特殊IP地址
在IP地址中有些地址并不是用來標識主機的,這些地址具有特殊意義。這些地址包括網絡地址、直接廣播地址、受限廣播地址、本網絡地址、環回地址等。
1. 網絡地址
因特網上的每個網絡都有一個IP地址,其主機號部分為0。
網絡地址的一般表達式為:
{,}={,0}
該地址用于標識網絡,不能分配給主機,因此不能作為數據的源地址和目的地址。網絡地址的使用可以減小路由表的規模。
A類網絡的網絡地址為: Network.number.0.0.0。例如120.0.0.0。
B類網絡的網絡地址為: Network.number.0.0。例如139.22.0.0。
C類網絡的網絡地址為: Network.number.0。例如203.120.16.0。
2. 直接廣播地址
直接廣播(direct broadcast)是指向某個網絡上的所有主機發送報文。TCP/IP規定,主機號各位全部為1的IP地址用于廣播,稱為直接廣播地址。路由器在目標網絡處將IP直接廣播地址映射為物理網絡的廣播地址,以太網的廣播地址為6個字節的全1二進制位,即ff:ff:ff:ff:ff:ff。
直接廣播地址的一般表達式為:
{,}={, -1}
這里的-1表示全1。
直接廣播地址只能作為目的地址。
A類網絡的直接廣播地址為: Network.number.255.255.255。例如120.255.255.255。
B類網絡的直接廣播地址為: Network.number.255.255。例如139.22.255.255。
C類網絡的直接廣播地址為: Network.number.255。例如203.120.16.255。
3. 受限廣播地址
直接廣播要求發送方必須要知道信宿網絡的網絡號。但有些主機在啟動時,往往并不知道本網絡的網絡號,這時候如果想要向本網絡廣播,只能采用受限廣播地址(limited broadcast address)。
受限廣播地址是在本網絡內部進行廣播的一種廣播地址。TCP/IP規定,32位全為1的IP地址用于本網絡內的廣播。
受限廣播地址的一般表達式為:
{,}={-1, -1}
受限廣播地址的點分十進制表示為: 255.255.255.255。
受限廣播地址只能作為目的地址。
路由器將隔離受限廣播,不對受限廣播分組進行轉發。也就是說因特網不支持全網絡范圍的廣播,這也是為了對網絡進行保護,以防網絡帶寬被過多地占用。
……