一,、概述網(wǎng)絡(luò)的網(wǎng)絡(luò) 網(wǎng)絡(luò)把主機連接起來,而互聯(lián)網(wǎng)是把多種不同的網(wǎng)絡(luò)連接起來,,因此互聯(lián)網(wǎng)是網(wǎng)絡(luò)的網(wǎng)絡(luò),。 ISP 互聯(lián)網(wǎng)服務提供商 ISP 可以從互聯(lián)網(wǎng)管理機構(gòu)獲得許多 IP 地址,同時擁有通信線路以及路由器等聯(lián)網(wǎng)設(shè)備,,個人或機構(gòu)向 ISP 繳納一定的費用就可以接入互聯(lián)網(wǎng),。 目前的互聯(lián)網(wǎng)是一種多層次 ISP 結(jié)構(gòu),ISP 根據(jù)覆蓋面積的大小分為第一層 ISP,、區(qū)域 ISP 和接入 ISP,。互聯(lián)網(wǎng)交換點 IXP 允許兩個 ISP 直接相連而不用經(jīng)過第三個 ISP,。 主機之間的通信方式
電路交換與分組交換 1. 電路交換 電路交換用于電話通信系統(tǒng),,兩個用戶要通信之前需要建立一條專用的物理鏈路,并且在整個通信過程中始終占用該鏈路,。由于通信的過程中不可能一直在使用傳輸線路,,因此電路交換對線路的利用率很低,往往不到 10%,。 2. 分組交換 每個分組都有首部和尾部,,包含了源地址和目的地址等控制信息,在同一個傳輸線路上同時傳輸多個分組互相不會影響,,因此在同一條傳輸線路上允許同時傳輸多個分組,,也就是說分組交換不需要占用傳輸線路。 在一個郵局通信系統(tǒng)中,,郵局收到一份郵件之后,,先存儲下來,然后把相同目的地的郵件一起轉(zhuǎn)發(fā)到下一個目的地,,這個過程就是存儲轉(zhuǎn)發(fā)過程,,分組交換也使用了存儲轉(zhuǎn)發(fā)過程。 時延 總時延 = 傳輸時延 + 傳播時延 + 處理時延 + 排隊時延 1. 傳輸時延 主機或路由器傳輸數(shù)據(jù)幀所需要的時間,。 其中 l 表示數(shù)據(jù)幀的長度,,v 表示傳輸速率,。 2. 傳播時延 電磁波在信道中傳播所需要花費的時間,電磁波傳播的速度接近光速,。 其中 l 表示信道長度,,v 表示電磁波在信道上的傳播速度。 3. 處理時延 主機或路由器收到分組時進行處理所需要的時間,,例如分析首部,、從分組中提取數(shù)據(jù)、進行差錯檢驗或查找適當?shù)穆酚傻取?/p> 4. 排隊時延 分組在路由器的輸入隊列和輸出隊列中排隊等待的時間,,取決于網(wǎng)絡(luò)當前的通信量,。 計算機網(wǎng)絡(luò)體系結(jié)構(gòu) 1. 五層協(xié)議
2. OSI 其中表示層和會話層用途如下:
五層協(xié)議沒有表示層和會話層,,而是將這些功能留給應用程序開發(fā)者處理。 3. TCP/IP 它只有四層,,相當于五層協(xié)議中數(shù)據(jù)鏈路層和物理層合并為網(wǎng)絡(luò)接口層,。 TCP/IP 體系結(jié)構(gòu)不嚴格遵循 OSI 分層概念,應用層可能會直接使用 IP 層或者網(wǎng)絡(luò)接口層,。 TCP/IP 協(xié)議族是一種沙漏形狀,,中間小兩邊大,IP 協(xié)議在其中占據(jù)舉足輕重的地位,。 4. 數(shù)據(jù)在各層之間的傳遞過程 在向下的過程中,,需要添加下層協(xié)議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾部,。 路由器只有下面三層協(xié)議,,因為路由器位于網(wǎng)絡(luò)核心中,不需要為進程或者應用程序提供服務,,因此也就不需要傳輸層和應用層,。 二、物理層通信方式 根據(jù)信息在傳輸線上的傳送方向,,分為以下三種通信方式:
帶通調(diào)制 模擬信號是連續(xù)的信號,,數(shù)字信號是離散的信號。帶通調(diào)制把數(shù)字信號轉(zhuǎn)換為模擬信號,。 三,、數(shù)據(jù)鏈路層基本問題 1. 封裝成幀 將網(wǎng)絡(luò)層傳下來的分組添加首部和尾部,用于標記幀的開始和結(jié)束,。 2. 透明傳輸 透明表示一個實際存在的事物看起來好像不存在一樣,。 幀使用首部和尾部進行定界,如果幀的數(shù)據(jù)部分含有和首部尾部相同的內(nèi)容,,那么幀的開始和結(jié)束位置就會被錯誤的判定,。需要在數(shù)據(jù)部分出現(xiàn)首部尾部相同的內(nèi)容前面插入轉(zhuǎn)義字符。如果數(shù)據(jù)部分出現(xiàn)轉(zhuǎn)義字符,,那么就在轉(zhuǎn)義字符前面再加個轉(zhuǎn)義字符,。在接收端進行處理之后可以還原出原始數(shù)據(jù)。這個過程透明傳輸?shù)膬?nèi)容是轉(zhuǎn)義字符,,用戶察覺不到轉(zhuǎn)義字符的存在,。 3. 差錯檢測 目前數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(CRC)來檢查比特差錯。 信道分類 1. 廣播信道 一對多通信,,一個節(jié)點發(fā)送的數(shù)據(jù)能夠被廣播信道上所有的節(jié)點接收到,。 所有的節(jié)點都在同一個廣播信道上發(fā)送數(shù)據(jù),,因此需要有專門的控制方法進行協(xié)調(diào),避免發(fā)生沖突(沖突也叫碰撞),。 主要有兩種控制方法進行協(xié)調(diào),,一個是使用信道復用技術(shù),一是使用 CSMA/CD 協(xié)議,。 2. 點對點信道 一對一通信,。 因為不會發(fā)生碰撞,因此也比較簡單,,使用 PPP 協(xié)議進行控制,。 信道復用技術(shù) 1. 頻分復用 頻分復用的所有主機在相同的時間占用不同的頻率帶寬資源。 2. 時分復用 時分復用的所有主機在不同的時間占用相同的頻率帶寬資源,。 使用頻分復用和時分復用進行通信,,在通信的過程中主機會一直占用一部分信道資源。但是由于計算機數(shù)據(jù)的突發(fā)性質(zhì),,通信過程沒必要一直占用信道資源而不讓出給其它用戶使用,,因此這兩種方式對信道的利用率都不高。 3. 統(tǒng)計時分復用 是對時分復用的一種改進,,不固定每個用戶在時分復用幀中的位置,,只要有數(shù)據(jù)就集中起來組成統(tǒng)計時分復用幀然后發(fā)送。 4. 波分復用 光的頻分復用,。由于光的頻率很高,,因此習慣上用波長而不是頻率來表示所使用的光載波。 5. 碼分復用 為每個用戶分配 m bit 的碼片,,并且所有的碼片正交,,對于任意兩個碼片 s和t有 為了討論方便,取 m=8,,設(shè)碼片 s 為 00011011,。在擁有該碼片的用戶發(fā)送比特 1 時就發(fā)送該碼片,發(fā)送比特 0 時就發(fā)送該碼片的反碼 11100100,。 在計算時將 00011011 記作 (-1 -1 -1 +1 +1 -1 +1 +1),,可以得到 其中 s'為s的反碼。 利用上面的式子我們知道,,當接收端使用碼片 s對接收到的數(shù)據(jù)進行內(nèi)積運算時,,結(jié)果為 0 的是其它用戶發(fā)送的數(shù)據(jù),結(jié)果為 1 的是用戶發(fā)送的比特 1,,結(jié)果為 -1 的是用戶發(fā)送的比特 0,。 碼分復用需要發(fā)送的數(shù)據(jù)量為原先的 m 倍。 CSMA/CD 協(xié)議 CSMA/CD 表示載波監(jiān)聽多點接入 / 碰撞檢測,。
記端到端的傳播時延為 τ,,最先發(fā)送的站點最多經(jīng)過 2τ 就可以知道是否發(fā)生了碰撞,稱 2τ 為 爭用期 ,。只有經(jīng)過爭用期之后還沒有檢測到碰撞,,才能肯定這次發(fā)送不會發(fā)生碰撞。 當發(fā)生碰撞時,,站點要停止發(fā)送,,等待一段時間再發(fā)送。這個時間采用 截斷二進制指數(shù)退避算法 來確定,。從離散的整數(shù)集合 {0, 1, .., (2k-1)} 中隨機取出一個數(shù),,記作 r,然后取 r 倍的爭用期作為重傳等待時間,。 PPP 協(xié)議 互聯(lián)網(wǎng)用戶通常需要連接到某個 ISP 之后才能接入到互聯(lián)網(wǎng),,PPP 協(xié)議是用戶計算機和 ISP 進行通信時所使用的數(shù)據(jù)鏈路層協(xié)議。 PPP 的幀格式:
MAC 地址 MAC 地址是鏈路層地址,,長度為 6 字節(jié)(48 位),,用于唯一標識網(wǎng)絡(luò)適配器(網(wǎng)卡)。 一臺主機擁有多少個網(wǎng)絡(luò)適配器就有多少個 MAC 地址,。例如筆記本電腦普遍存在無線網(wǎng)絡(luò)適配器和有線網(wǎng)絡(luò)適配器,,因此就有兩個 MAC 地址,。 局域網(wǎng) 局域網(wǎng)是一種典型的廣播信道,,主要特點是網(wǎng)絡(luò)為一個單位所擁有,,且地理范圍和站點數(shù)目均有限,。 主要有以太網(wǎng),、令牌環(huán)網(wǎng),、FDDI 和 ATM 等局域網(wǎng)技術(shù),,目前以太網(wǎng)占領(lǐng)著有線局域網(wǎng)市場,。 可以按照網(wǎng)絡(luò)拓撲結(jié)構(gòu)對局域網(wǎng)進行分類: 以太網(wǎng) 以太網(wǎng)是一種星型拓撲結(jié)構(gòu)局域網(wǎng),。 早期使用集線器進行連接,,集線器是一種物理層設(shè)備,, 作用于比特而不是幀,當一個比特到達接口時,,集線器重新生成這個比特,,并將其能量強度放大,從而擴大網(wǎng)絡(luò)的傳輸距離,,之后再將這個比特發(fā)送到其它所有接口,。如果集線器同時收到兩個不同接口的幀,那么就發(fā)生了碰撞,。 目前以太網(wǎng)使用交換機替代了集線器,,交換機是一種鏈路層設(shè)備,它不會發(fā)生碰撞,,能根據(jù) MAC 地址進行存儲轉(zhuǎn)發(fā),。 以太網(wǎng)幀格式:
交換機 交換機具有自學習能力,,學習的是交換表的內(nèi)容,,交換表中存儲著 MAC 地址到接口的映射。 正是由于這種自學習能力,,因此交換機是一種即插即用設(shè)備,,不需要網(wǎng)絡(luò)管理員手動配置交換表內(nèi)容。 下圖中,,交換機有 4 個接口,,主機 A 向主機 B 發(fā)送數(shù)據(jù)幀時,交換機把主機 A 到接口 1 的映射寫入交換表中,。為了發(fā)送數(shù)據(jù)幀到 B,,先查交換表,此時沒有主機 B 的表項,,那么主機 A 就發(fā)送廣播幀,,主機 C 和主機 D 會丟棄該幀。主機 B 收下之后,,查找交換表得到主機 A 映射的接口為 1,,就發(fā)送數(shù)據(jù)幀到接口 1,同時交換機添加主機 B 到接口 3 的映射。 虛擬局域網(wǎng) 虛擬局域網(wǎng)可以建立與物理位置無關(guān)的邏輯組,,只有在同一個虛擬局域網(wǎng)中的成員才會收到鏈路層廣播信息,。 例如下圖中 (A1, A2, A3, A4) 屬于一個虛擬局域網(wǎng),A1 發(fā)送的廣播會被 A2,、A3,、A4 收到,而其它站點收不到,。 使用 VLAN 干線連接來建立虛擬局域網(wǎng),,每臺交換機上的一個特殊接口被設(shè)置為干線接口,以互連 VLAN 交換機,。IEEE 定義了一種擴展的以太網(wǎng)幀格式 802.1Q,,它在標準以太網(wǎng)幀上加進了 4 字節(jié)首部 VLAN 標簽,用于表示該幀屬于哪一個虛擬局域網(wǎng),。 四,、網(wǎng)絡(luò)層概述 因為網(wǎng)絡(luò)層是整個互聯(lián)網(wǎng)的核心,,因此應當讓網(wǎng)絡(luò)層盡可能簡單,。網(wǎng)絡(luò)層向上只提供簡單靈活的、無連接的,、盡最大努力交互的數(shù)據(jù)報服務,。 使用 IP 協(xié)議,可以把異構(gòu)的物理網(wǎng)絡(luò)連接起來,,使得在網(wǎng)絡(luò)層看起來好像是一個統(tǒng)一的網(wǎng)絡(luò),。 與 IP 協(xié)議配套使用的還有三個協(xié)議:
IP 數(shù)據(jù)報格式
IP 地址編址方式 IP 地址的編址方式經(jīng)歷了三個歷史階段:
1. 分類 由兩部分組成,網(wǎng)絡(luò)號和主機號,,其中不同分類具有不同的網(wǎng)絡(luò)號長度,,并且是固定的。 IP 地址 ::= {< 網(wǎng)絡(luò)號="">, < 主機號="">} 2. 子網(wǎng)劃分 通過在主機號字段中拿一部分作為子網(wǎng)號,,把兩級 IP 地址劃分為三級 IP 地址,。 IP 地址 ::= {< 網(wǎng)絡(luò)號="">, < 子網(wǎng)號="">, < 主機號="">} 要使用子網(wǎng),必須配置子網(wǎng)掩碼,。一個 B 類地址的默認子網(wǎng)掩碼為 255.255.0.0,,如果 B 類地址的子網(wǎng)占兩個比特,那么子網(wǎng)掩碼為 11111111 11111111 11000000 00000000,,也就是 255.255.192.0,。 注意,外部網(wǎng)絡(luò)看不到子網(wǎng)的存在,。 3. 無分類 無分類編址 CIDR 消除了傳統(tǒng) A 類,、B 類和 C 類地址以及劃分子網(wǎng)的概念,使用網(wǎng)絡(luò)前綴和主機號來對 IP 地址進行編碼,,網(wǎng)絡(luò)前綴的長度可以根據(jù)需要變化,。 IP 地址 ::= {< 網(wǎng)絡(luò)前綴號="">, < 主機號="">} CIDR 的記法上采用在 IP 地址后面加上網(wǎng)絡(luò)前綴長度的方法,例如 128.14.35.7/20 表示前 20 位為網(wǎng)絡(luò)前綴,。 CIDR 的地址掩碼可以繼續(xù)稱為子網(wǎng)掩碼,,子網(wǎng)掩碼首 1 長度為網(wǎng)絡(luò)前綴的長度。 一個 CIDR 地址塊中有很多地址,,一個 CIDR 表示的網(wǎng)絡(luò)就可以表示原來的很多個網(wǎng)絡(luò),,并且在路由表中只需要一個路由就可以代替原來的多個路由,減少了路由表項的數(shù)量,。把這種通過使用網(wǎng)絡(luò)前綴來減少路由表項的方式稱為路由聚合,,也稱為 構(gòu)成超網(wǎng) 。 在路由表中的項目由“網(wǎng)絡(luò)前綴”和“下一跳地址”組成,在查找時可能會得到不止一個匹配結(jié)果,,應當采用最長前綴匹配來確定應該匹配哪一個,。 地址解析協(xié)議 ARP 網(wǎng)絡(luò)層實現(xiàn)主機之間的通信,而鏈路層實現(xiàn)具體每段鏈路之間的通信,。因此在通信過程中,,IP 數(shù)據(jù)報的源地址和目的地址始終不變,而 MAC 地址隨著鏈路的改變而改變,。 ARP 實現(xiàn)由 IP 地址得到 MAC 地址,。 每個主機都有一個 ARP 高速緩存,里面有本局域網(wǎng)上的各主機和路由器的 IP 地址到 MAC 地址的映射表,。 如果主機 A 知道主機 B 的 IP 地址,,但是 ARP 高速緩存中沒有該 IP 地址到 MAC 地址的映射,此時主機 A 通過廣播的方式發(fā)送 ARP 請求分組,,主機 B 收到該請求后會發(fā)送 ARP 響應分組給主機 A 告知其 MAC 地址,,隨后主機 A 向其高速緩存中寫入主機 B 的 IP 地址到 MAC 地址的映射。 網(wǎng)際控制報文協(xié)議 ICMP ICMP 是為了更有效地轉(zhuǎn)發(fā) IP 數(shù)據(jù)報和提高交付成功的機會,。它封裝在 IP 數(shù)據(jù)報中,,但是不屬于高層協(xié)議。 ICMP 報文分為差錯報告報文和詢問報文,。 1. Ping Ping 是 ICMP 的一個重要應用,,主要用來測試兩臺主機之間的連通性。 Ping 的原理是通過向目的主機發(fā)送 ICMP Echo 請求報文,,目的主機收到之后會發(fā)送 Echo 回答報文。Ping 會根據(jù)時間和成功響應的次數(shù)估算出數(shù)據(jù)包往返時間以及丟包率,。 2. Traceroute Traceroute 是 ICMP 的另一個應用,,用來跟蹤一個分組從源點到終點的路徑。 Traceroute 發(fā)送的 IP 數(shù)據(jù)報封裝的是無法交付的 UDP 用戶數(shù)據(jù)報,,并由目的主機發(fā)送終點不可達差錯報告報文,。
虛擬專用網(wǎng) VPN 由于 IP 地址的緊缺,一個機構(gòu)能申請到的 IP 地址數(shù)往往遠小于本機構(gòu)所擁有的主機數(shù),。并且一個機構(gòu)并不需要把所有的主機接入到外部的互聯(lián)網(wǎng)中,,機構(gòu)內(nèi)的計算機可以使用僅在本機構(gòu)有效的 IP 地址(專用地址)。 有三個專用地址塊:
VPN 使用公用的互聯(lián)網(wǎng)作為本機構(gòu)各專用網(wǎng)之間的通信載體,。專用指機構(gòu)內(nèi)的主機只與本機構(gòu)內(nèi)的其它主機通信,;虛擬指好像是,而實際上并不是,,它有經(jīng)過公用的互聯(lián)網(wǎng),。 下圖中,場所 A 和 B 的通信經(jīng)過互聯(lián)網(wǎng),,如果場所 A 的主機 X 要和另一個場所 B 的主機 Y 通信,,IP 數(shù)據(jù)報的源地址是 10.1.0.1,目的地址是 10.2.0.3,。數(shù)據(jù)報先發(fā)送到與互聯(lián)網(wǎng)相連的路由器 R1,,R1 對內(nèi)部數(shù)據(jù)進行加密,然后重新加上數(shù)據(jù)報的首部,,源地址是路由器 R1 的全球地址 125.1.2.3,,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到數(shù)據(jù)報后將數(shù)據(jù)部分進行解密,,恢復原來的數(shù)據(jù)報,,此時目的地址為 10.2.0.3,就交付給 Y,。 網(wǎng)絡(luò)地址轉(zhuǎn)換 NAT 專用網(wǎng)內(nèi)部的主機使用本地 IP 地址又想和互聯(lián)網(wǎng)上的主機通信時,,可以使用 NAT 來將本地 IP 轉(zhuǎn)換為全球 IP。 在以前,,NAT 將本地 IP 和全球 IP 一一對應,,這種方式下?lián)碛?n 個全球 IP 地址的專用網(wǎng)內(nèi)最多只可以同時有 n 臺主機接入互聯(lián)網(wǎng),。為了更有效地利用全球 IP 地址,現(xiàn)在常用的 NAT 轉(zhuǎn)換表把傳輸層的端口號也用上了,,使得多個專用網(wǎng)內(nèi)部的主機共用一個全球 IP 地址,。使用端口號的 NAT 也叫做網(wǎng)絡(luò)地址與端口轉(zhuǎn)換 NAPT。 路由器的結(jié)構(gòu) 路由器從功能上可以劃分為:路由選擇和分組轉(zhuǎn)發(fā),。 分組轉(zhuǎn)發(fā)結(jié)構(gòu)由三個部分組成:交換結(jié)構(gòu),、一組輸入端口和一組輸出端口。 路由器分組轉(zhuǎn)發(fā)流程
路由選擇協(xié)議 路由選擇協(xié)議都是自適應的,能隨著網(wǎng)絡(luò)通信量和拓撲結(jié)構(gòu)的變化而自適應地進行調(diào)整,。 互聯(lián)網(wǎng)可以劃分為許多較小的自治系統(tǒng) AS,,一個 AS 可以使用一種和別的 AS 不同的路由選擇協(xié)議。 可以把路由選擇協(xié)議劃分為兩大類:
1. 內(nèi)部網(wǎng)關(guān)協(xié)議 RIP RIP 是一種基于距離向量的路由選擇協(xié)議,。距離是指跳數(shù),,直接相連的路由器跳數(shù)為 1。跳數(shù)最多為 15,,超過 15 表示不可達,。 RIP 按固定的時間間隔僅和相鄰路由器交換自己的路由表,經(jīng)過若干次交換之后,,所有路由器最終會知道到達本自治系統(tǒng)中任何一個網(wǎng)絡(luò)的最短距離和下一跳路由器地址。 距離向量算法:
RIP 協(xié)議實現(xiàn)簡單,,開銷小。但是 RIP 能使用的最大距離為 15,,限制了網(wǎng)絡(luò)的規(guī)模,。并且當網(wǎng)絡(luò)出現(xiàn)故障時,要經(jīng)過比較長的時間才能將此消息傳送到所有路由器,。 2. 內(nèi)部網(wǎng)關(guān)協(xié)議 OSPF 開放最短路徑優(yōu)先 OSPF,,是為了克服 RIP 的缺點而開發(fā)出來的。 開放表示 OSPF 不受某一家廠商控制,,而是公開發(fā)表的,;最短路徑優(yōu)先表示使用了 Dijkstra 提出的最短路徑算法 SPF。 OSPF 具有以下特點:
所有路由器都具有全網(wǎng)的拓撲結(jié)構(gòu)圖,,并且是一致的。相比于 RIP,,OSPF 的更新過程收斂的很快,。 3. 外部網(wǎng)關(guān)協(xié)議 BGP BGP(Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議) AS 之間的路由選擇很困難,,主要是由于:
BGP 只能尋找一條比較好的路由,而不是最佳路由,。 每個 AS 都必須配置 BGP 發(fā)言人,,通過在兩個相鄰 BGP 發(fā)言人之間建立 TCP 連接來交換路由信息。 五,、傳輸層網(wǎng)絡(luò)層只把分組發(fā)送到目的主機,,但是真正通信的并不是主機而是主機中的進程。傳輸層提供了進程間的邏輯通信,,傳輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)層的核心細節(jié),,使應用程序看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通信信道。 UDP 和 TCP 的特點
UDP 首部格式 首部字段只有 8 個字節(jié),,包括源端口、目的端口,、長度,、檢驗和。12 字節(jié)的偽首部是為了計算檢驗和臨時添加的,。 TCP 首部格式
TCP 的三次握手 假設(shè) A 為客戶端,,B 為服務器端。
三次握手的原因 第三次握手是為了防止失效的連接請求到達服務器,,讓服務器錯誤打開連接,。 客戶端發(fā)送的連接請求如果在網(wǎng)絡(luò)中滯留,那么就會隔很長一段時間才能收到服務器端發(fā)回的連接確認,??蛻舳说却粋€超時重傳時間之后,就會重新請求連接,。但是這個滯留的連接請求最后還是會到達服務器,,如果不進行三次握手,那么服務器就會打開兩個連接,。如果有第三次握手,,客戶端會忽略服務器之后發(fā)送的對滯留連接請求的連接確認,不進行第三次握手,,因此就不會再次打開連接,。 TCP 的四次揮手 以下描述不討論序號和確認號,因為序號和確認號的規(guī)則比較簡單,。并且不討論 ACK,,因為 ACK 在連接建立之后都為 1。
四次揮手的原因 客戶端發(fā)送了 FIN 連接釋放報文之后,,服務器收到了這個報文,,就進入了 CLOSE-WAIT 狀態(tài)。這個狀態(tài)是為了讓服務器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后,,服務器會發(fā)送 FIN 連接釋放報文,。 TIME_WAIT 客戶端接收到服務器端的 FIN 報文后進入此狀態(tài),此時并不是直接進入 CLOSED 狀態(tài),,還需要等待一個時間計時器設(shè)置的時間 2MSL。這么做有兩個理由:
TCP 可靠傳輸 TCP 使用超時重傳來實現(xiàn)可靠傳輸:如果一個已經(jīng)發(fā)送的報文段在超時時間內(nèi)沒有收到確認,,那么就重傳這個報文段,。 一個報文段從發(fā)送再到接收到確認所經(jīng)過的時間稱為往返時間 RTT,加權(quán)平均往返時間 RTTs 計算如下: 超時時間 RTO 應該略大于 RTTs,,TCP 使用的超時時間計算如下: 其中 RTTd 為偏差,。 TCP 滑動窗口 窗口是緩存的一部分,用來暫時存放字節(jié)流,。發(fā)送方和接收方各有一個窗口,,接收方通過 TCP 報文段中的窗口字段告訴發(fā)送方自己的窗口大小,發(fā)送方根據(jù)這個值和其它信息設(shè)置自己的窗口大小,。 發(fā)送窗口內(nèi)的字節(jié)都允許被發(fā)送,,接收窗口內(nèi)的字節(jié)都允許被接收。如果發(fā)送窗口左部的字節(jié)已經(jīng)發(fā)送并且收到了確認,,那么就將發(fā)送窗口向右滑動一定距離,,直到左部第一個字節(jié)不是已發(fā)送并且已確認的狀態(tài);接收窗口的滑動類似,,接收窗口左部字節(jié)已經(jīng)發(fā)送確認并交付主機,,就向右滑動接收窗口。 接收窗口只會對窗口內(nèi)最后一個按序到達的字節(jié)進行確認,,例如接收窗口已經(jīng)收到的字節(jié)為 {31, 34, 35},,其中 {31} 按序到達,而 {34, 35} 就不是,,因此只對字節(jié) 31 進行確認,。發(fā)送方得到一個字節(jié)的確認之后,就知道這個字節(jié)之前的所有字節(jié)都已經(jīng)被接收,。 TCP 流量控制 流量控制是為了控制發(fā)送方發(fā)送速率,,保證接收方來得及接收。 接收方發(fā)送的確認報文中的窗口字段可以用來控制發(fā)送方窗口大小,從而影響發(fā)送方的發(fā)送速率,。將窗口字段設(shè)置為 0,,則發(fā)送方不能發(fā)送數(shù)據(jù)。 TCP 擁塞控制 如果網(wǎng)絡(luò)出現(xiàn)擁塞,,分組將會丟失,,此時發(fā)送方會繼續(xù)重傳,從而導致網(wǎng)絡(luò)擁塞程度更高,。因此當出現(xiàn)擁塞時,,應當控制發(fā)送方的速率。這一點和流量控制很像,,但是出發(fā)點不同,。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網(wǎng)絡(luò)的擁塞程度,。 TCP 主要通過四個算法來進行擁塞控制:慢開始,、擁塞避免、快重傳,、快恢復,。 發(fā)送方需要維護一個叫做擁塞窗口(cwnd)的狀態(tài)變量,注意擁塞窗口與發(fā)送方窗口的區(qū)別:擁塞窗口只是一個狀態(tài)變量,,實際決定發(fā)送方能發(fā)送多少數(shù)據(jù)的是發(fā)送方窗口,。 為了便于討論,做如下假設(shè):
1. 慢開始與擁塞避免 發(fā)送的最初執(zhí)行慢開始,,令 cwnd = 1,發(fā)送方只能發(fā)送 1 個報文段,;當收到確認后,,將 cwnd 加倍,因此之后發(fā)送方能夠發(fā)送的報文段數(shù)量為:2,、4,、8 ... 注意到慢開始每個輪次都將 cwnd 加倍,這樣會讓 cwnd 增長速度非???,從而使得發(fā)送方發(fā)送的速度增長速度過快,網(wǎng)絡(luò)擁塞的可能性也就更高,。設(shè)置一個慢開始門限 ssthresh,,當 cwnd >= ssthresh 時,,進入擁塞避免,每個輪次只將 cwnd 加 1,。 如果出現(xiàn)了超時,,則令 ssthresh = cwnd / 2,然后重新執(zhí)行慢開始,。 2. 快重傳與快恢復 在接收方,,要求每次接收到報文段都應該對最后一個已收到的有序報文段進行確認。例如已經(jīng)接收到 M1 和 M2,,此時收到 M4,,應當發(fā)送對 M2 的確認。 在發(fā)送方,,如果收到三個重復確認,那么可以知道下一個報文段丟失,,此時執(zhí)行快重傳,,立即重傳下一個報文段。例如收到三個 M2,,則 M3 丟失,,立即重傳 M3。 在這種情況下,,只是丟失個別報文段,,而不是網(wǎng)絡(luò)擁塞。因此執(zhí)行快恢復,,令 ssthresh = cwnd / 2 ,,cwnd = ssthresh,注意到此時直接進入擁塞避免,。 慢開始和快恢復的快慢指的是 cwnd 的設(shè)定值,,而不是 cwnd 的增長速率。慢開始 cwnd 設(shè)定為 1,,而快恢復 cwnd 設(shè)定為 ssthresh,。 六、應用層域名系統(tǒng) DNS 是一個分布式數(shù)據(jù)庫,,提供了主機名和 IP 地址之間相互轉(zhuǎn)換的服務,。這里的分布式數(shù)據(jù)庫是指,每個站點只保留它自己的那部分數(shù)據(jù),。 域名具有層次結(jié)構(gòu),,從上到下依次為:根域名、頂級域名,、二級域名,。 DNS 可以使用 UDP 或者 TCP 進行傳輸,,使用的端口號都為 53。大多數(shù)情況下 DNS 使用 UDP 進行傳輸,,這就要求域名解析器和域名服務器都必須自己處理超時和重傳來保證可靠性,。在兩種情況下會使用 TCP 進行傳輸:
文件傳送協(xié)議 FTP 使用 TCP 進行連接,,它需要兩個連接來傳送一個文件:
根據(jù)數(shù)據(jù)連接是否是服務器端主動建立,,F(xiàn)TP 有主動和被動兩種模式:
主動模式要求客戶端開放端口號給服務器端,,需要去配置客戶端的防火墻。被動模式只需要服務器端開放端口號即可,,無需客戶端配置防火墻,。但是被動模式會導致服務器端的安全性減弱,因為開放了過多的端口號,。 動態(tài)主機配置協(xié)議 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的連網(wǎng)方式,,用戶不再需要去手動配置 IP 地址等信息。 DHCP 配置的內(nèi)容不僅是 IP 地址,,還包括子網(wǎng)掩碼,、網(wǎng)關(guān) IP 地址。 DHCP 工作過程如下:
遠程登錄協(xié)議 TELNET 用于登錄到遠程主機上,,并且遠程主機上的輸出也會返回,。 TELNET 可以適應許多計算機和操作系統(tǒng)的差異,例如不同操作系統(tǒng)系統(tǒng)的換行符定義,。 電子郵件協(xié)議 一個電子郵件系統(tǒng)由三部分組成:用戶代理,、郵件服務器以及郵件協(xié)議。 郵件協(xié)議包含發(fā)送協(xié)議和讀取協(xié)議,,發(fā)送協(xié)議常用 SMTP,,讀取協(xié)議常用 POP3 和 IMAP。 1. SMTP SMTP 只能發(fā)送 ASCII 碼,,而互聯(lián)網(wǎng)郵件擴充 MIME 可以發(fā)送二進制文件。MIME 并沒有改動或者取代 SMTP,,而是增加郵件主體的結(jié)構(gòu),,定義了非 ASCII 碼的編碼規(guī)則。 2. POP3 POP3 的特點是只要用戶從服務器上讀取了郵件,,就把該郵件刪除,。 3. IMAP IMAP 協(xié)議中客戶端和服務器上的郵件保持同步,如果不手動刪除郵件,,那么服務器上的郵件也不會被刪除,。IMAP 這種做法可以讓用戶隨時隨地去訪問服務器上的郵件。 常用端口 應用應用層協(xié)議端口號傳輸層協(xié)議備注域名解析DNS53UDP/TCP長度超過 512 字節(jié)時使用 TCP動態(tài)主機配置協(xié)議DHCP67/68UDP簡單網(wǎng)絡(luò)管理協(xié)議SNMP161/162UDP文件傳送協(xié)議FTP20/21TCP控制連接 21,,數(shù)據(jù)連接 20遠程終端協(xié)議TELNET23TCP超文本傳送協(xié)議HTTP80TCP簡單郵件傳送協(xié)議SMTP25TCP郵件讀取協(xié)議POP3110TCP網(wǎng)際報文存取協(xié)議IMAP143TCP Web 頁面請求過程 1. DHCP 配置主機信息
2. ARP 解析 MAC 地址
3. DNS 解析域名
4. HTTP 請求頁面
參考資料
侵權(quán)必刪。 |
|