一纠拔、綜述
網(wǎng)絡的網(wǎng)絡
網(wǎng)絡把主機連接起來越走,而互連網(wǎng)(internet)是把多種不同的網(wǎng)絡連接起來涂乌,因此互連網(wǎng)是網(wǎng)絡的網(wǎng)絡蛉迹。而互聯(lián)網(wǎng)(Internet)是全球范圍的互連網(wǎng)傅寡。
ISP
互聯(lián)網(wǎng)服務提供商 ISP 可以從互聯(lián)網(wǎng)管理機構獲得許多 IP 地址,同時擁有通信線路以及路由器等聯(lián)網(wǎng)設備,個人或機構向 ISP 繳納一定的費用就可以接入互聯(lián)網(wǎng)赏僧。
目前的互聯(lián)網(wǎng)是一種多層次 ISP 結構大猛,ISP 根據(jù)覆蓋面積的大小分為第一層 ISP、區(qū)域 ISP 和接入 ISP淀零⊥旒ǎ互聯(lián)網(wǎng)交換點 IXP 允許兩個 ISP 直接相連而不用經(jīng)過第三個 ISP。
主機之間的通信方式
- 客戶-服務器(C/S):客戶是服務的請求方驾中,服務器是服務的提供方唉堪。
- 對等(P2P):不區(qū)分客戶和服務器。
電路交換與分組交換
1. 電路交換
電路交換用于電話通信系統(tǒng)肩民,兩個用戶要通信之前需要建立一條專用的物理鏈路唠亚,并且在整個通信過程中始終占用該鏈路。由于通信的過程中不可能一直在使用傳輸線路持痰,因此電路交換對線路的利用率很低灶搜,往往不到 10%。
2. 分組交換
每個分組都有首部和尾部工窍,包含了源地址和目的地址等控制信息割卖,在同一個傳輸線路上同時傳輸多個分組互相不會影響,因此在同一條傳輸線路上允許同時傳輸多個分組患雏,也就是說分組交換不需要占用傳輸線路鹏溯。
在一個郵局通信系統(tǒng)中,郵局收到一份郵件之后淹仑,先存儲下來丙挽,然后把相同目的地的郵件一起轉發(fā)到下一個目的地,這個過程就是存儲轉發(fā)過程匀借,分組交換也使用了存儲轉發(fā)過程颜阐。
時延
總時延 = 排隊時延 + 處理時延 + 傳輸時延 + 傳播時延
1. 排隊時延
分組在路由器的輸入隊列和輸出隊列中排隊等待的時間,取決于網(wǎng)絡當前的通信量吓肋。
2. 處理時延
主機或路由器收到分組時進行處理所需要的時間凳怨,例如分析首部、從分組中提取數(shù)據(jù)蓬坡、進行差錯檢驗或查找適當?shù)穆酚傻取?/p>
3. 傳輸時延
主機或路由器傳輸數(shù)據(jù)幀所需要的時間。
其中 l 表示數(shù)據(jù)幀的長度磅叛,v 表示傳輸速率屑咳。
4. 傳播時延
電磁波在信道中傳播所需要花費的時間,電磁波傳播的速度接近光速弊琴。
其中 l 表示信道長度兆龙,v 表示電磁波在信道上的傳播速度。
計算機網(wǎng)絡體系結構
1. 五層協(xié)議
應用層 :為特定應用程序提供數(shù)據(jù)傳輸服務,例如 HTTP紫皇、DNS 等協(xié)議慰安。數(shù)據(jù)單位為報文。
傳輸層 :為進程提供通用數(shù)據(jù)傳輸服務聪铺。由于應用層協(xié)議很多化焕,定義通用的傳輸層協(xié)議就可以支持不斷增多的應用層協(xié)議。運輸層包括兩種協(xié)議:傳輸控制協(xié)議 TCP铃剔,提供面向連接撒桨、可靠的數(shù)據(jù)傳輸服務,數(shù)據(jù)單位為報文段键兜;用戶數(shù)據(jù)報協(xié)議 UDP凤类,提供無連接、盡最大努力的數(shù)據(jù)傳輸服務普气,數(shù)據(jù)單位為用戶數(shù)據(jù)報谜疤。TCP 主要提供完整性服務,UDP 主要提供及時性服務现诀。
網(wǎng)絡層 :為主機提供數(shù)據(jù)傳輸服務夷磕。而傳輸層協(xié)議是為主機中的進程提供數(shù)據(jù)傳輸服務。網(wǎng)絡層把傳輸層傳遞下來的報文段或者用戶數(shù)據(jù)報封裝成分組赶盔。
數(shù)據(jù)鏈路層 :網(wǎng)絡層針對的還是主機之間的數(shù)據(jù)傳輸服務企锌,而主機之間可以有很多鏈路,鏈路層協(xié)議就是為同一鏈路的主機提供數(shù)據(jù)傳輸服務于未。數(shù)據(jù)鏈路層把網(wǎng)絡層傳下來的分組封裝成幀撕攒。
物理層 :考慮的是怎樣在傳輸媒體上傳輸數(shù)據(jù)比特流,而不是指具體的傳輸媒體烘浦。物理層的作用是盡可能屏蔽傳輸媒體和通信手段的差異抖坪,使數(shù)據(jù)鏈路層感覺不到這些差異。
2. OSI
其中表示層和會話層用途如下:
表示層 :數(shù)據(jù)壓縮闷叉、加密以及數(shù)據(jù)描述擦俐,這使得應用程序不必關心在各臺主機中數(shù)據(jù)內部格式不同的問題。
會話層 :建立及管理會話握侧。
五層協(xié)議沒有表示層和會話層蚯瞧,而是將這些功能留給應用程序開發(fā)者處理。
3. TCP/IP
它只有四層品擎,相當于五層協(xié)議中數(shù)據(jù)鏈路層和物理層合并為網(wǎng)絡接口層埋合。
TCP/IP 體系結構不嚴格遵循 OSI 分層概念,應用層可能會直接使用 IP 層或者網(wǎng)絡接口層萄传。
4. 數(shù)據(jù)在各層之間的傳遞過程
在向下的過程中甚颂,需要添加下層協(xié)議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾部。
路由器只有下面三層協(xié)議振诬,因為路由器位于網(wǎng)絡核心中蹭睡,不需要為進程或者應用程序提供服務,因此也就不需要傳輸層和應用層赶么。
二肩豁、物理層
通信方式
根據(jù)信息在傳輸線上的傳送方向,分為以下三種通信方式:
- 單工通信:單向傳輸
- 半雙工通信:雙向交替?zhèn)鬏?/li>
- 全雙工通信:雙向同時傳輸
帶通調制
模擬信號是連續(xù)的信號禽绪,數(shù)字信號是離散的信號蓖救。帶通調制把數(shù)字信號轉換為模擬信號。
三印屁、鏈路層
基本問題
1. 封裝成幀
將網(wǎng)絡層傳下來的分組添加首部和尾部循捺,用于標記幀的開始和結束。
2. 透明傳輸
透明表示一個實際存在的事物看起來好像不存在一樣雄人。
幀使用首部和尾部進行定界从橘,如果幀的數(shù)據(jù)部分含有和首部尾部相同的內容,那么幀的開始和結束位置就會被錯誤的判定础钠。需要在數(shù)據(jù)部分出現(xiàn)首部尾部相同的內容前面插入轉義字符恰力。如果數(shù)據(jù)部分出現(xiàn)轉義字符,那么就在轉義字符前面再加個轉義字符旗吁。在接收端進行處理之后可以還原出原始數(shù)據(jù)踩萎。這個過程透明傳輸?shù)膬热菔寝D義字符,用戶察覺不到轉義字符的存在很钓。
3. 差錯檢測
目前數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(CRC)來檢查比特差錯香府。
信道分類
1. 廣播信道
一對多通信,一個節(jié)點發(fā)送的數(shù)據(jù)能夠被廣播信道上所有的節(jié)點接收到码倦。
所有的節(jié)點都在同一個廣播信道上發(fā)送數(shù)據(jù)企孩,因此需要有專門的控制方法進行協(xié)調,避免發(fā)生沖突(沖突也叫碰撞)袁稽。
主要有兩種控制方法進行協(xié)調勿璃,一個是使用信道復用技術,一是使用 CSMA/CD 協(xié)議推汽。
2. 點對點信道
一對一通信补疑。
因為不會發(fā)生碰撞,因此也比較簡單歹撒,使用 PPP 協(xié)議進行控制声离。
信道復用技術
1. 頻分復用
頻分復用的所有主機在相同的時間占用不同的頻率帶寬資源赁濒。
2. 時分復用
時分復用的所有主機在不同的時間占用相同的頻率帶寬資源横殴。
使用頻分復用和時分復用進行通信,在通信的過程中主機會一直占用一部分信道資源熄攘。但是由于計算機數(shù)據(jù)的突發(fā)性質,通信過程沒必要一直占用信道資源而不讓出給其它用戶使用滥比,因此這兩種方式對信道的利用率都不高盗扇。
3. 統(tǒng)計時分復用
是對時分復用的一種改進,不固定每個用戶在時分復用幀中的位置寥假,只要有數(shù)據(jù)就集中起來組成統(tǒng)計時分復用幀然后發(fā)送市框。
4. 波分復用
光的頻分復用。由于光的頻率很高糕韧,因此習慣上用波長而不是頻率來表示所使用的光載波枫振。
5. 碼分復用
為每個用戶分配 m bit 的碼片,并且所有的碼片正交萤彩,對于任意兩個碼片有S
和T
為了討論方便粪滤,取 m=8,設碼片S
為 00011011雀扶。在擁有該碼片的用戶發(fā)送比特 1 時就發(fā)送該碼片杖小,發(fā)送比特 0 時就發(fā)送該碼片的反碼 11100100。
在計算時將 00011011 記作 (-1 -1 -1 +1 +1 -1 +1 +1)愚墓,可以得到
其中S
為S
的反碼予权。
利用上面的式子我們知道,當接收端使用碼片 [圖片上傳失敗...(image-d34d43-1627303441421)]
對接收到的數(shù)據(jù)進行內積運算時浪册,結果為 0 的是其它用戶發(fā)送的數(shù)據(jù)扫腺,結果為 1 的是用戶發(fā)送的比特 1,結果為 -1 的是用戶發(fā)送的比特 0村象。
碼分復用需要發(fā)送的數(shù)據(jù)量為原先的 m 倍笆环。
CSMA/CD 協(xié)議
CSMA/CD 表示載波監(jiān)聽多點接入 / 碰撞檢測。
- 多點接入 :說明這是總線型網(wǎng)絡煞肾,許多主機以多點的方式連接到總線上咧织。
- 載波監(jiān)聽 :每個主機都必須不停地監(jiān)聽信道。在發(fā)送前籍救,如果監(jiān)聽到信道正在使用习绢,就必須等待。
- 碰撞檢測 :在發(fā)送中蝙昙,如果監(jiān)聽到信道已有其它主機正在發(fā)送數(shù)據(jù)闪萄,就表示發(fā)生了碰撞。雖然每個主機在發(fā)送數(shù)據(jù)之前都已經(jīng)監(jiān)聽到信道為空閑奇颠,但是由于電磁波的傳播時延的存在败去,還是有可能會發(fā)生碰撞。
記端到端的傳播時延為 τ烈拒,最先發(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 的幀格式:
- F 字段為幀的定界符
- A 和 C 字段暫時沒有意義
- FCS 字段是使用 CRC 的檢驗序列
- 信息部分的長度不超過 1500
MAC 地址
MAC 地址是鏈路層地址抬纸,長度為 6 字節(jié)(48 位),用于唯一標識網(wǎng)絡適配器(網(wǎng)卡)耿戚。
一臺主機擁有多少個網(wǎng)絡適配器就有多少個 MAC 地址松却。例如筆記本電腦普遍存在無線網(wǎng)絡適配器和有線網(wǎng)絡適配器,因此就有兩個 MAC 地址溅话。
局域網(wǎng)
局域網(wǎng)是一種典型的廣播信道晓锻,主要特點是網(wǎng)絡為一個單位所擁有,且地理范圍和站點數(shù)目均有限飞几。
主要有以太網(wǎng)砚哆、令牌環(huán)網(wǎng)、FDDI 和 ATM 等局域網(wǎng)技術屑墨,目前以太網(wǎng)占領著有線局域網(wǎng)市場躁锁。
可以按照網(wǎng)絡拓撲結構對局域網(wǎng)進行分類:
** 以太網(wǎng)**
以太網(wǎng)是一種星型拓撲結構局域網(wǎng)。
早期使用集線器進行連接卵史,集線器是一種物理層設備战转, 作用于比特而不是幀,當一個比特到達接口時以躯,集線器重新生成這個比特槐秧,并將其能量強度放大,從而擴大網(wǎng)絡的傳輸距離忧设,之后再將這個比特發(fā)送到其它所有接口刁标。如果集線器同時收到兩個不同接口的幀,那么就發(fā)生了碰撞址晕。
目前以太網(wǎng)使用交換機替代了集線器膀懈,交換機是一種鏈路層設備,它不會發(fā)生碰撞谨垃,能根據(jù) MAC 地址進行存儲轉發(fā)启搂。
以太網(wǎng)幀格式:
- 類型 :標記上層使用的協(xié)議硼控;
- 數(shù)據(jù) :長度在 46-1500 之間,如果太小則需要填充胳赌;
- FCS :幀檢驗序列淀歇,使用的是 CRC 檢驗方法;
交換機
交換機具有自學習能力匈织,學習的是交換表的內容,交換表中存儲著 MAC 地址到接口的映射牡直。
正是由于這種自學習能力缀匕,因此交換機是一種即插即用設備,不需要網(wǎng)絡管理員手動配置交換表內容碰逸。
下圖中乡小,交換機有 4 個接口,主機 A 向主機 B 發(fā)送數(shù)據(jù)幀時饵史,交換機把主機 A 到接口 1 的映射寫入交換表中满钟。為了發(fā)送數(shù)據(jù)幀到 B,先查交換表胳喷,此時沒有主機 B 的表項湃番,那么主機 A 就發(fā)送廣播幀,主機 C 和主機 D 會丟棄該幀吭露,主機 B 回應該幀向主機 A 發(fā)送數(shù)據(jù)包時吠撮,交換機查找交換表得到主機 A 映射的接口為 1,就發(fā)送數(shù)據(jù)幀到接口 1讲竿,同時交換機添加主機 B 到接口 2 的映射泥兰。
虛擬局域網(wǎng)
虛擬局域網(wǎng)可以建立與物理位置無關的邏輯組,只有在同一個虛擬局域網(wǎng)中的成員才會收到鏈路層廣播信息题禀。
例如下圖中 (A1, A2, A3, A4) 屬于一個虛擬局域網(wǎng)鞋诗,A1 發(fā)送的廣播會被 A2、A3迈嘹、A4 收到削彬,而其它站點收不到。
使用 VLAN 干線連接來建立虛擬局域網(wǎng)秀仲,每臺交換機上的一個特殊接口被設置為干線接口吃警,以互連 VLAN 交換機。IEEE 定義了一種擴展的以太網(wǎng)幀格式 802.1Q啄育,它在標準以太網(wǎng)幀上加進了 4 字節(jié)首部 VLAN 標簽酌心,用于表示該幀屬于哪一個虛擬局域網(wǎng)。
四挑豌、網(wǎng)絡層
簡介
因為網(wǎng)絡層是整個互聯(lián)網(wǎng)的核心安券,因此應當讓網(wǎng)絡層盡可能簡單墩崩。網(wǎng)絡層向上只提供簡單靈活的、無連接的侯勉、盡最大努力交互的數(shù)據(jù)報服務鹦筹。
使用 IP 協(xié)議,可以把異構的物理網(wǎng)絡連接起來址貌,使得在網(wǎng)絡層看起來好像是一個統(tǒng)一的網(wǎng)絡铐拐。
與 IP 協(xié)議配套使用的還有三個協(xié)議:
- 地址解析協(xié)議 ARP(Address Resolution Protocol)
- 網(wǎng)際控制報文協(xié)議 ICMP(Internet Control Message Protocol)
- 網(wǎng)際組管理協(xié)議 IGMP(Internet Group Management Protocol)
IP 數(shù)據(jù)報格式
版本 : 有 4(IPv4)和 6(IPv6)兩個值;
首部長度 : 占 4 位练对,因此最大值為 15遍蟋。值為 1 表示的是 1 個 32 位字的長度,也就是 4 字節(jié)螟凭。因為固定部分長度為 20 字節(jié)虚青,因此該值最小為 5。如果可選字段的長度不是 4 字節(jié)的整數(shù)倍螺男,就用尾部的填充部分來填充棒厘。
區(qū)分服務 : 用來獲得更好的服務,一般情況下不使用下隧。
總長度 : 包括首部長度和數(shù)據(jù)部分長度奢人。
生存時間 :TTL,它的存在是為了防止無法交付的數(shù)據(jù)報在互聯(lián)網(wǎng)中不斷兜圈子淆院。以路由器跳數(shù)為單位达传,當 TTL 為 0 時就丟棄數(shù)據(jù)報。
協(xié)議 :指出攜帶的數(shù)據(jù)應該上交給哪個協(xié)議進行處理迫筑,例如 ICMP宪赶、TCP、UDP 等脯燃。
首部檢驗和 :因為數(shù)據(jù)報每經(jīng)過一個路由器搂妻,都要重新計算檢驗和,因此檢驗和不包含數(shù)據(jù)部分可以減少計算的工作量辕棚。
標識 : 在數(shù)據(jù)報長度過長從而發(fā)生分片的情況下欲主,相同數(shù)據(jù)報的不同分片具有相同的標識符。
片偏移 : 和標識符一起逝嚎,用于發(fā)生分片的情況扁瓢。片偏移的單位為 8 字節(jié)。
IP 地址編址方式
IP 地址的編址方式經(jīng)歷了三個歷史階段:
- 分類
- 子網(wǎng)劃分
- 無分類
1. 分類
由兩部分組成补君,網(wǎng)絡號和主機號引几,其中不同分類具有不同的網(wǎng)絡號長度,并且是固定的挽铁。
IP 地址 ::= {< 網(wǎng)絡號 >, < 主機號 >}
2. 子網(wǎng)劃分
通過在主機號字段中拿一部分作為子網(wǎng)號伟桅,把兩級 IP 地址劃分為三級 IP 地址敞掘。
IP 地址 ::= {< 網(wǎng)絡號 >, < 子網(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)絡看不到子網(wǎng)的存在溃列。
3. 無分類
無分類編址 CIDR 消除了傳統(tǒng) A 類劲厌、B 類和 C 類地址以及劃分子網(wǎng)的概念,使用網(wǎng)絡前綴和主機號來對 IP 地址進行編碼哭廉,網(wǎng)絡前綴的長度可以根據(jù)需要變化。
IP 地址 ::= {< 網(wǎng)絡前綴號 >, < 主機號 >}
CIDR 的記法上采用在 IP 地址后面加上網(wǎng)絡前綴長度的方法相叁,例如 128.14.35.7/20 表示前 20 位為網(wǎng)絡前綴遵绰。
CIDR 的地址掩碼可以繼續(xù)稱為子網(wǎng)掩碼,子網(wǎng)掩碼首 1 長度為網(wǎng)絡前綴的長度增淹。
一個 CIDR 地址塊中有很多地址椿访,一個 CIDR 表示的網(wǎng)絡就可以表示原來的很多個網(wǎng)絡,并且在路由表中只需要一個路由就可以代替原來的多個路由虑润,減少了路由表項的數(shù)量成玫。把這種通過使用網(wǎng)絡前綴來減少路由表項的方式稱為路由聚合,也稱為 構成超網(wǎng) 拳喻。
在路由表中的項目由“網(wǎng)絡前綴”和“下一跳地址”組成哭当,在查找時可能會得到不止一個匹配結果,應當采用最長前綴匹配來確定應該匹配哪一個冗澈。
地址解析協(xié)議 ARP
網(wǎng)絡層實現(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 是為了更有效地轉發(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ā)送終點不可達差錯報告報文剪侮。
- 源主機向目的主機發(fā)送一連串的 IP 數(shù)據(jù)報。第一個數(shù)據(jù)報 P1 的生存時間 TTL 設置為 1洛退,當 P1 到達路徑上的第一個路由器 R1 時瓣俯,R1 收下它并把 TTL 減 1,此時 TTL 等于 0兵怯,R1 就把 P1 丟棄彩匕,并向源主機發(fā)送一個 ICMP 時間超過差錯報告報文;
- 源主機接著發(fā)送第二個數(shù)據(jù)報 P2媒区,并把 TTL 設置為 2驼仪。P2 先到達 R1,R1 收下后把 TTL 減 1 再轉發(fā)給 R2袜漩,R2 收下后也把 TTL 減 1绪爸,由于此時 TTL 等于 0,R2 就丟棄 P2宙攻,并向源主機發(fā)送一個 ICMP 時間超過差錯報文毡泻。
- 不斷執(zhí)行這樣的步驟,直到最后一個數(shù)據(jù)報剛剛到達目的主機粘优,主機不轉發(fā)數(shù)據(jù)報仇味,也不把 TTL 值減 1。但是因為數(shù)據(jù)報封裝的是無法交付的 UDP雹顺,因此目的主機要向源主機發(fā)送 ICMP 終點不可達差錯報告報文丹墨。
- 之后源主機知道了到達目的主機所經(jīng)過的路由器 IP 地址以及到達每個路由器的往返時間。
虛擬專用網(wǎng) VPN
由于 IP 地址的緊缺嬉愧,一個機構能申請到的 IP 地址數(shù)往往遠小于本機構所擁有的主機數(shù)贩挣。并且一個機構并不需要把所有的主機接入到外部的互聯(lián)網(wǎng)中,機構內的計算機可以使用僅在本機構有效的 IP 地址(專用地址)。
有三個專用地址塊:
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
VPN 使用公用的互聯(lián)網(wǎng)作為本機構各專用網(wǎng)之間的通信載體王财。專用指機構內的主機只與本機構內的其它主機通信卵迂;虛擬指好像是,而實際上并不是绒净,它有經(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 對內部數(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)絡地址轉換 NAT
專用網(wǎng)內部的主機使用本地 IP 地址又想和互聯(lián)網(wǎng)上的主機通信時腾仅,可以使用 NAT 來將本地 IP 轉換為全球 IP乒裆。
在以前套利,NAT 將本地 IP 和全球 IP 一一對應,這種方式下?lián)碛?n 個全球 IP 地址的專用網(wǎng)內最多只可以同時有 n 臺主機接入互聯(lián)網(wǎng)鹤耍。為了更有效地利用全球 IP 地址肉迫,現(xiàn)在常用的 NAT 轉換表把傳輸層的端口號也用上了,使得多個專用網(wǎng)內部的主機共用一個全球 IP 地址稿黄。使用端口號的 NAT 也叫做網(wǎng)絡地址與端口轉換 NAPT喊衫。
路由器的結構
路由器從功能上可以劃分為:路由選擇和分組轉發(fā)。
分組轉發(fā)結構由三個部分組成:交換結構杆怕、一組輸入端口和一組輸出端口族购。
路由器分組轉發(fā)流程
- 從數(shù)據(jù)報的首部提取目的主機的 IP 地址 D,得到目的網(wǎng)絡地址 N陵珍。
- 若 N 就是與此路由器直接相連的某個網(wǎng)絡地址寝杖,則進行直接交付;
- 若路由表中有目的地址為 D 的特定主機路由互纯,則把數(shù)據(jù)報傳送給表中所指明的下一跳路由器瑟幕;
- 若路由表中有到達網(wǎng)絡 N 的路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;
- 若路由表中有一個默認路由只盹,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器辣往;
- 報告轉發(fā)分組出錯。
路由選擇協(xié)議
路由選擇協(xié)議都是自適應的殖卑,能隨著網(wǎng)絡通信量和拓撲結構的變化而自適應地進行調整站削。
互聯(lián)網(wǎng)可以劃分為許多較小的自治系統(tǒng) AS,一個 AS 可以使用一種和別的 AS 不同的路由選擇協(xié)議懦鼠。
可以把路由選擇協(xié)議劃分為兩大類:
- 自治系統(tǒng)內部的路由選擇:RIP 和 OSPF
- 自治系統(tǒng)間的路由選擇:BGP
1. 內部網(wǎng)關協(xié)議 RIP
RIP 是一種基于距離向量的路由選擇協(xié)議钻哩。距離是指跳數(shù),直接相連的路由器跳數(shù)為 1肛冶。跳數(shù)最多為 15街氢,超過 15 表示不可達。
RIP 按固定的時間間隔僅和相鄰路由器交換自己的路由表睦袖,經(jīng)過若干次交換之后珊肃,所有路由器最終會知道到達本自治系統(tǒng)中任何一個網(wǎng)絡的最短距離和下一跳路由器地址。
距離向量算法:
- 對地址為 X 的相鄰路由器發(fā)來的 RIP 報文馅笙,先修改報文中的所有項目伦乔,把下一跳字段中的地址改為 X,并把所有的距離字段加 1董习;
- 對修改后的 RIP 報文中的每一個項目烈和,進行以下步驟:
- 若原來的路由表中沒有目的網(wǎng)絡 N,則把該項目添加到路由表中皿淋;
- 否則:若下一跳路由器地址是 X招刹,則把收到的項目替換原來路由表中的項目宋距;否則:若收到的項目中的距離 d 小于路由表中的距離衰腌,則進行更新(例如原始路由表項為 Net2, 5, P,新表項為 Net2, 4, X滩报,則更新)哑舒;否則什么也不做妇拯。
- 若 3 分鐘還沒有收到相鄰路由器的更新路由表,則把該相鄰路由器標為不可達洗鸵,即把距離置為 16越锈。
RIP 協(xié)議實現(xiàn)簡單,開銷小膘滨。但是 RIP 能使用的最大距離為 15甘凭,限制了網(wǎng)絡的規(guī)模。并且當網(wǎng)絡出現(xiàn)故障時吏祸,要經(jīng)過比較長的時間才能將此消息傳送到所有路由器对蒲。
2. 內部網(wǎng)關協(xié)議 OSPF
開放最短路徑優(yōu)先 OSPF钩蚊,是為了克服 RIP 的缺點而開發(fā)出來的。
開放表示 OSPF 不受某一家廠商控制蹈矮,而是公開發(fā)表的砰逻;最短路徑優(yōu)先表示使用了 Dijkstra 提出的最短路徑算法 SPF。
OSPF 具有以下特點:
- 向本自治系統(tǒng)中的所有路由器發(fā)送信息泛鸟,這種方法是洪泛法蝠咆。
- 發(fā)送的信息就是與相鄰路由器的鏈路狀態(tài),鏈路狀態(tài)包括與哪些路由器相連以及鏈路的度量北滥,度量用費用刚操、距離、時延再芋、帶寬等來表示菊霜。
- 只有當鏈路狀態(tài)發(fā)生變化時,路由器才會發(fā)送信息济赎。
所有路由器都具有全網(wǎng)的拓撲結構圖鉴逞,并且是一致的。相比于 RIP司训,OSPF 的更新過程收斂的很快构捡。
3. 外部網(wǎng)關協(xié)議 BGP
BGP(Border Gateway Protocol,邊界網(wǎng)關協(xié)議)
AS 之間的路由選擇很困難壳猜,主要是由于:
- 互聯(lián)網(wǎng)規(guī)模很大勾徽;
- 各個 AS 內部使用不同的路由選擇協(xié)議,無法準確定義路徑的度量统扳;
- AS 之間的路由選擇必須考慮有關的策略喘帚,比如有些 AS 不愿意讓其它 AS 經(jīng)過。
BGP 只能尋找一條比較好的路由闪幽,而不是最佳路由啥辨。
每個 AS 都必須配置 BGP 發(fā)言人涡匀,通過在兩個相鄰 BGP 發(fā)言人之間建立 TCP 連接來交換路由信息盯腌。
五、傳輸層
網(wǎng)絡層只把分組發(fā)送到目的主機陨瘩,但是真正通信的并不是主機而是主機中的進程腕够。傳輸層提供了進程間的邏輯通信,傳輸層向高層用戶屏蔽了下面網(wǎng)絡層的核心細節(jié)舌劳,使應用程序看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通信信道帚湘。
UDP 和 TCP 的特點
用戶數(shù)據(jù)報協(xié)議 UDP(User Datagram Protocol)是無連接的,盡最大可能交付甚淡,沒有擁塞控制大诸,面向報文(對于應用程序傳下來的報文不合并也不拆分,只是添加 UDP 首部),支持一對一资柔、一對多焙贷、多對一和多對多的交互通信。
傳輸控制協(xié)議 TCP(Transmission Control Protocol)是面向連接的贿堰,提供可靠交付辙芍,有流量控制,擁塞控制羹与,提供全雙工通信故硅,面向字節(jié)流(把應用層傳下來的報文看成字節(jié)流,把字節(jié)流組織成大小不等的數(shù)據(jù)塊)纵搁,每一條 TCP 連接只能是點對點的(一對一)吃衅。
UDP 首部格式
首部字段只有 8 個字節(jié),包括源端口腾誉、目的端口捐晶、長度、檢驗和妄辩。12 字節(jié)的偽首部是為了計算檢驗和臨時添加的惑灵。
TCP 首部格式
序號 :用于對字節(jié)流進行編號,例如序號為 301眼耀,表示第一個字節(jié)的編號為 301英支,如果攜帶的數(shù)據(jù)長度為 100 字節(jié),那么下一個報文段的序號應為 401哮伟。
確認號 :期望收到的下一個報文段的序號干花。例如 B 正確收到 A 發(fā)送來的一個報文段,序號為 501楞黄,攜帶的數(shù)據(jù)長度為 200 字節(jié)池凄,因此 B 期望下一個報文段的序號為 701,B 發(fā)送給 A 的確認報文段中確認號就為 701鬼廓。
數(shù)據(jù)偏移 :指的是數(shù)據(jù)部分距離報文段起始處的偏移量肿仑,實際上指的是首部的長度。
確認 ACK :當 ACK=1 時確認號字段有效碎税,否則無效尤慰。TCP 規(guī)定,在連接建立后所有傳送的報文段都必須把 ACK 置 1雷蹂。
同步 SYN :在連接建立時用來同步序號伟端。當 SYN=1,ACK=0 時表示這是一個連接請求報文段匪煌。若對方同意建立連接责蝠,則響應報文中 SYN=1党巾,ACK=1。
終止 FIN :用來釋放一個連接霜医,當 FIN=1 時昧港,表示此報文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放連接支子。
窗口 :窗口值作為接收方讓發(fā)送方設置其發(fā)送窗口的依據(jù)创肥。之所以要有這個限制,是因為接收方的數(shù)據(jù)緩存空間是有限的值朋。
TCP 的三次握手
假設 A 為客戶端叹侄,B 為服務器端。
首先 B 處于 LISTEN(監(jiān)聽)狀態(tài)昨登,等待客戶的連接請求趾代。
A 向 B 發(fā)送連接請求報文,SYN=1丰辣,ACK=0撒强,選擇一個初始的序號 x。
B 收到連接請求報文笙什,如果同意建立連接飘哨,則向 A 發(fā)送連接確認報文,SYN=1琐凭,ACK=1芽隆,確認號為 x+1,同時也選擇一個初始的序號 y统屈。
A 收到 B 的連接確認報文后胚吁,還要向 B 發(fā)出確認,確認號為 y+1愁憔,序號為 x+1腕扶。
B 收到 A 的確認后,連接建立吨掌。
三次握手的原因
第三次握手是為了防止失效的連接請求到達服務器半抱,讓服務器錯誤打開連接。
客戶端發(fā)送的連接請求如果在網(wǎng)絡中滯留思犁,那么就會隔很長一段時間才能收到服務器端發(fā)回的連接確認代虾〗希客戶端等待一個超時重傳時間之后激蹲,就會重新請求連接。但是這個滯留的連接請求最后還是會到達服務器江掩,如果不進行三次握手学辱,那么服務器就會打開兩個連接乘瓤。如果有第三次握手,客戶端會忽略服務器之后發(fā)送的對滯留連接請求的連接確認策泣,不進行第三次握手衙傀,因此就不會再次打開連接。
TCP 的四次揮手
以下描述不討論序號和確認號萨咕,因為序號和確認號的規(guī)則比較簡單统抬。并且不討論 ACK,因為 ACK 在連接建立之后都為 1危队。
A 發(fā)送連接釋放報文聪建,F(xiàn)IN=1。
B 收到之后發(fā)出確認茫陆,此時 TCP 屬于半關閉狀態(tài)金麸,B 能向 A 發(fā)送數(shù)據(jù)但是 A 不能向 B 發(fā)送數(shù)據(jù)。
當 B 不再需要連接時簿盅,發(fā)送連接釋放報文挥下,F(xiàn)IN=1。
A 收到后發(fā)出確認桨醋,進入 TIME-WAIT 狀態(tài)棚瘟,等待 2 MSL(Maximum Segment Lifetime 最大報文存活時間,兩倍MSL 約四分鐘喜最;RFC 793中規(guī)定MSL 為2分鐘解取,實際應用中常用的是30秒,1分鐘和2分鐘等)后釋放連接返顺。
B 收到 A 的確認后釋放連接禀苦。
四次揮手的原因
客戶端發(fā)送了 FIN 連接釋放報文之后,服務器收到了這個報文遂鹊,就進入了 CLOSE-WAIT 狀態(tài)振乏。這個狀態(tài)是為了讓服務器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后秉扑,服務器會發(fā)送 FIN 連接釋放報文慧邮。
TIME_WAIT
客戶端接收到服務器端的 FIN 報文后進入此狀態(tài),此時并不是直接進入 CLOSED 狀態(tài)舟陆,還需要等待一個時間計時器設置的時間 2MSL误澳。這么做有兩個理由:
確保最后一個確認報文能夠到達。如果 B 沒收到 A 發(fā)送來的確認報文秦躯,那么就會重新發(fā)送連接釋放請求報文忆谓,A 等待一段時間就是為了處理這種情況的發(fā)生。
等待一段時間是為了讓本連接持續(xù)時間內所產(chǎn)生的所有報文都從網(wǎng)絡中消失踱承,使得下一個新的連接不會出現(xiàn)舊的連接請求報文倡缠。
TCP 可靠傳輸
TCP 使用超時重傳來實現(xiàn)可靠傳輸:如果一個已經(jīng)發(fā)送的報文段在超時時間內沒有收到確認哨免,那么就重傳這個報文段。
一個報文段從發(fā)送再到接收到確認所經(jīng)過的時間稱為往返時間 RTT昙沦,加權平均往返時間 RTTs 計算如下:
其中琢唾,0 ≤ a < 1,RTTs 隨著 a 的增加更容易受到 RTT 的影響盾饮。
超時時間 RTO 應該略大于 RTTs采桃,TCP 使用的超時時間計算如下:
其中 RTTd 為偏差的加權平均值。
TCP 滑動窗口
窗口是緩存的一部分丘损,用來暫時存放字節(jié)流芍碧。發(fā)送方和接收方各有一個窗口,接收方通過 TCP 報文段中的窗口字段告訴發(fā)送方自己的窗口大小号俐,發(fā)送方根據(jù)這個值和其它信息設置自己的窗口大小泌豆。
發(fā)送窗口內的字節(jié)都允許被發(fā)送,接收窗口內的字節(jié)都允許被接收吏饿。如果發(fā)送窗口左部的字節(jié)已經(jīng)發(fā)送并且收到了確認踪危,那么就將發(fā)送窗口向右滑動一定距離,直到左部第一個字節(jié)不是已發(fā)送并且已確認的狀態(tài)猪落;接收窗口的滑動類似贞远,接收窗口左部字節(jié)已經(jīng)發(fā)送確認并交付主機,就向右滑動接收窗口笨忌。
接收窗口只會對窗口內最后一個按序到達的字節(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ā)送速率。將窗口字段設置為 0犀盟,則發(fā)送方不能發(fā)送數(shù)據(jù)而晒。
TCP 擁塞控制
如果網(wǎng)絡出現(xiàn)擁塞,分組將會丟失阅畴,此時發(fā)送方會繼續(xù)重傳倡怎,從而導致網(wǎng)絡擁塞程度更高。因此當出現(xiàn)擁塞時,應當控制發(fā)送方的速率诈胜。這一點和流量控制很像豹障,但是出發(fā)點不同冯事。流量控制是為了讓接收方能來得及接收焦匈,而擁塞控制是為了降低整個網(wǎng)絡的擁塞程度。
TCP 主要通過四個算法來進行擁塞控制:慢開始昵仅、擁塞避免缓熟、快重傳、快恢復摔笤。
發(fā)送方需要維護一個叫做擁塞窗口(cwnd)的狀態(tài)變量够滑,注意擁塞窗口與發(fā)送方窗口的區(qū)別:擁塞窗口只是一個狀態(tài)變量,實際決定發(fā)送方能發(fā)送多少數(shù)據(jù)的是發(fā)送方窗口吕世。
為了便于討論彰触,做如下假設:
- 接收方有足夠大的接收緩存,因此不會發(fā)生流量控制命辖;
- 雖然 TCP 的窗口基于字節(jié)况毅,但是這里設窗口的大小單位為報文段。
1. 慢開始與擁塞避免
發(fā)送的最初執(zhí)行慢開始尔艇,令 cwnd = 1尔许,發(fā)送方只能發(fā)送 1 個報文段;當收到確認后终娃,將 cwnd 加倍味廊,因此之后發(fā)送方能夠發(fā)送的報文段數(shù)量為:2、4棠耕、8 ...
注意到慢開始每個輪次都將 cwnd 加倍余佛,這樣會讓 cwnd 增長速度非常快窍荧,從而使得發(fā)送方發(fā)送的速度增長速度過快衙熔,網(wǎng)絡擁塞的可能性也就更高。設置一個慢開始門限 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)絡擁塞撬呢。因此執(zhí)行快恢復伦吠,令 ssthresh = cwnd / 2 ,cwnd = ssthresh魂拦,注意到此時直接進入擁塞避免毛仪。
慢開始和快恢復的快慢指的是 cwnd 的設定值,而不是 cwnd 的增長速率晨另。慢開始 cwnd 設定為 1潭千,而快恢復 cwnd 設定為 ssthresh。
***六借尿、應用層 ***
域名系統(tǒng)
DNS 是一個分布式數(shù)據(jù)庫刨晴,提供了主機名和 IP 地址之間相互轉換的服務。這里的分布式數(shù)據(jù)庫是指路翻,每個站點只保留它自己的那部分數(shù)據(jù)狈癞。
域名具有層次結構,從上到下依次為:根域名茂契、頂級域名蝶桶、二級域名。
DNS 可以使用 UDP 或者 TCP 進行傳輸掉冶,使用的端口號都為 53真竖。大多數(shù)情況下 DNS 使用 UDP 進行傳輸,這就要求域名解析器和域名服務器都必須自己處理超時和重傳從而保證可靠性厌小。在兩種情況下會使用 TCP 進行傳輸:
- 如果返回的響應超過的 512 字節(jié)(UDP 最大只支持 512 字節(jié)的數(shù)據(jù))恢共。
- 區(qū)域傳送(區(qū)域傳送是主域名服務器向輔助域名服務器傳送變化的那部分數(shù)據(jù))。
文件傳送協(xié)議
FTP 使用 TCP 進行連接璧亚,它需要兩個連接來傳送一個文件:
- 控制連接:服務器打開端口號 21 等待客戶端的連接讨韭,客戶端主動建立連接后,使用這個連接將客戶端的命令傳送給服務器,并傳回服務器的應答透硝。
- 數(shù)據(jù)連接:用來傳送一個文件數(shù)據(jù)狰闪。
根據(jù)數(shù)據(jù)連接是否是服務器端主動建立,F(xiàn)TP 有主動和被動兩種模式:
- 主動模式:服務器端主動建立數(shù)據(jù)連接濒生,其中服務器端的端口號為 20埋泵,客戶端的端口號隨機,但是必須大于 1024甜攀,因為 0~1023 是熟知端口號秋泄。
- 被動模式:客戶端主動建立數(shù)據(jù)連接琐馆,其中客戶端的端口號由客戶端自己指定规阀,服務器端的端口號隨機。
主動模式要求客戶端開放端口號給服務器端瘦麸,需要去配置客戶端的防火墻谁撼。被動模式只需要服務器端開放端口號即可,無需客戶端配置防火墻滋饲。但是被動模式會導致服務器端的安全性減弱厉碟,因為開放了過多的端口號。
動態(tài)主機配置協(xié)議
DHCP (Dynamic Host Configuration Protocol) 提供了即插即用的連網(wǎng)方式屠缭,用戶不再需要手動配置 IP 地址等信息箍鼓。
DHCP 配置的內容不僅是 IP 地址,還包括子網(wǎng)掩碼呵曹、網(wǎng)關 IP 地址款咖。
DHCP 工作過程如下:
- 客戶端發(fā)送 Discover 報文,該報文的目的地址為 255.255.255.255:67奄喂,源地址為 0.0.0.0:68铐殃,被放入 UDP 中,該報文被廣播到同一個子網(wǎng)的所有主機上跨新。如果客戶端和 DHCP 服務器不在同一個子網(wǎng)富腊,就需要使用中繼代理。
- DHCP 服務器收到 Discover 報文之后域帐,發(fā)送 Offer 報文給客戶端赘被,該報文包含了客戶端所需要的信息。因為客戶端可能收到多個 DHCP 服務器提供的信息肖揣,因此客戶端需要進行選擇民假。
- 如果客戶端選擇了某個 DHCP 服務器提供的信息,那么就發(fā)送 Request 報文給該 DHCP 服務器许饿。
- DHCP 服務器發(fā)送 Ack 報文阳欲,表示客戶端此時可以使用提供給它的信息。
遠程登錄協(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考余,而是增加郵件主體的結構,定義了非 ASCII 碼的編碼規(guī)則轧苫。
2. POP3
POP3 的特點是只要用戶從服務器上讀取了郵件楚堤,就把該郵件刪除。但最新版本的 POP3 可以不刪除郵件含懊。
3. IMAP
IMAP 協(xié)議中客戶端和服務器上的郵件保持同步身冬,如果不手動刪除郵件场梆,那么服務器上的郵件也不會被刪除噪珊。IMAP 這種做法可以讓用戶隨時隨地去訪問服務器上的郵件篓吁。
常用端口
應用 | 應用層協(xié)議 | 端口號 | 傳輸層協(xié)議 | 備注 |
---|---|---|---|---|
域名解析 | DNS | 53 | UDP/TCP | 長度超過 512 字節(jié)時使用 TCP |
動態(tài)主機配置協(xié)議 | DHCP | 67/68 | UDP | |
簡單網(wǎng)絡管理協(xié)議 | SNMP | 161/162 | UDP | |
文件傳送協(xié)議 | FTP | 20/21 | TCP | 控制連接 21孵构,數(shù)據(jù)連接 20 |
遠程終端協(xié)議 | TELNET | 23 | TCP | |
超文本傳送協(xié)議 | HTTP | 80 | TCP | |
簡單郵件傳送協(xié)議 | SMTP | 25 | TCP | |
郵件讀取協(xié)議 | POP3 | 110 | TCP | |
網(wǎng)際報文存取協(xié)議 | IMAP | 143 | TCP |
Web 頁面請求過程
1. DHCP 配置主機信息
假設主機最開始沒有 IP 地址以及其它信息霹抛,那么就需要先使用 DHCP 來獲取伤柄。
主機生成一個 DHCP 請求報文洁墙,并將這個報文放入具有目的端口 67 和源端口 68 的 UDP 報文段中辜昵。
該報文段則被放入在一個具有廣播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 數(shù)據(jù)報中剿配。
該數(shù)據(jù)報則被放置在 MAC 幀中搅幅,該幀具有目的地址 FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:FF,將廣播到與交換機連接的所有設備呼胚。
連接在交換機的 DHCP 服務器收到廣播幀之后茄唐,不斷地向上分解得到 IP 數(shù)據(jù)報、UDP 報文段蝇更、DHCP 請求報文沪编,之后生成 DHCP ACK 報文,該報文包含以下信息:IP 地址年扩、DNS 服務器的 IP 地址蚁廓、默認網(wǎng)關路由器的 IP 地址和子網(wǎng)掩碼。該報文被放入 UDP 報文段中厨幻,UDP 報文段有被放入 IP 數(shù)據(jù)報中相嵌,最后放入 MAC 幀中腿时。
該幀的目的地址是請求主機的 MAC 地址,因為交換機具有自學習能力饭宾,之前主機發(fā)送了廣播幀之后就記錄了 MAC 地址到其轉發(fā)接口的交換表項批糟,因此現(xiàn)在交換機就可以直接知道應該向哪個接口發(fā)送該幀。
主機收到該幀后看铆,不斷分解得到 DHCP 報文徽鼎。之后就配置它的 IP 地址、子網(wǎng)掩碼和 DNS 服務器的 IP 地址弹惦,并在其 IP 轉發(fā)表中安裝默認網(wǎng)關否淤。
2. ARP 解析 MAC 地址
主機通過瀏覽器生成一個 TCP 套接字,套接字向 HTTP 服務器發(fā)送 HTTP 請求棠隐。為了生成該套接字石抡,主機需要知道網(wǎng)站的域名對應的 IP 地址。
主機生成一個 DNS 查詢報文宵荒,該報文具有 53 號端口汁雷,因為 DNS 服務器的端口號是 53净嘀。
該 DNS 查詢報文被放入目的地址為 DNS 服務器 IP 地址的 IP 數(shù)據(jù)報中报咳。
該 IP 數(shù)據(jù)報被放入一個以太網(wǎng)幀中,該幀將發(fā)送到網(wǎng)關路由器挖藏。
DHCP 過程只知道網(wǎng)關路由器的 IP 地址暑刃,為了獲取網(wǎng)關路由器的 MAC 地址,需要使用 ARP 協(xié)議膜眠。
主機生成一個包含目的地址為網(wǎng)關路由器 IP 地址的 ARP 查詢報文岩臣,將該 ARP 查詢報文放入一個具有廣播目的地址(FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:<zero-width space>FF:FF)的以太網(wǎng)幀中,并向交換機發(fā)送該以太網(wǎng)幀宵膨,交換機將該幀轉發(fā)給所有的連接設備架谎,包括網(wǎng)關路由器。
網(wǎng)關路由器接收到該幀后辟躏,不斷向上分解得到 ARP 報文谷扣,發(fā)現(xiàn)其中的 IP 地址與其接口的 IP 地址匹配,因此就發(fā)送一個 ARP 回答報文捎琐,包含了它的 MAC 地址会涎,發(fā)回給主機。
3. DNS 解析域名
知道了網(wǎng)關路由器的 MAC 地址之后瑞凑,就可以繼續(xù) DNS 的解析過程了末秃。
網(wǎng)關路由器接收到包含 DNS 查詢報文的以太網(wǎng)幀后,抽取出 IP 數(shù)據(jù)報籽御,并根據(jù)轉發(fā)表決定該 IP 數(shù)據(jù)報應該轉發(fā)的路由器练慕。
因為路由器具有內部網(wǎng)關協(xié)議(RIP惰匙、OSPF)和外部網(wǎng)關協(xié)議(BGP)這兩種路由選擇協(xié)議,因此路由表中已經(jīng)配置了網(wǎng)關路由器到達 DNS 服務器的路由表項铃将。
到達 DNS 服務器之后徽曲,DNS 服務器抽取出 DNS 查詢報文,并在 DNS 數(shù)據(jù)庫中查找待解析的域名麸塞。
找到 DNS 記錄之后秃臣,發(fā)送 DNS 回答報文,將該回答報文放入 UDP 報文段中哪工,然后放入 IP 數(shù)據(jù)報中奥此,通過路由器反向轉發(fā)回網(wǎng)關路由器,并經(jīng)過以太網(wǎng)交換機到達主機雁比。
4. HTTP 請求頁面
有了 HTTP 服務器的 IP 地址之后稚虎,主機就能夠生成 TCP 套接字,該套接字將用于向 Web 服務器發(fā)送 HTTP GET 報文偎捎。
在生成 TCP 套接字之前蠢终,必須先與 HTTP 服務器進行三次握手來建立連接。生成一個具有目的端口 80 的 TCP SYN 報文段茴她,并向 HTTP 服務器發(fā)送該報文段寻拂。
HTTP 服務器收到該報文段之后,生成 TCP SYN ACK 報文段丈牢,發(fā)回給主機祭钉。
連接建立之后,瀏覽器生成 HTTP GET 報文己沛,并交付給 HTTP 服務器慌核。
HTTP 服務器從 TCP 套接字讀取 HTTP GET 報文,生成一個 HTTP 響應報文申尼,將 Web 頁面內容放入報文主體中垮卓,發(fā)回給主機。
瀏覽器收到 HTTP 響應報文后师幕,抽取出 Web 頁面內容粟按,之后進行渲染,顯示 Web 頁面们衙。