計算機考研復(fù)試面試常問問題 計算機網(wǎng)絡(luò)篇(下)
在復(fù)習(xí)過程中,我用心查閱并整理了在考研復(fù)試面試中可能問到的大部分問題,并分點整理了答案仰泻,可以直接理解背誦并加上自己的語言潤色!極力推薦打印下來看,效率更高!絕對良心之作呀袱!
此系列一共有8篇:編程語言篇|數(shù)據(jù)結(jié)構(gòu)篇|操作系統(tǒng)篇|組成原理篇|計算機網(wǎng)絡(luò)篇|數(shù)據(jù)庫篇|軟件工程篇|計算機專業(yè)英語篇(還未全部完成,敬請期待,你們的支持和關(guān)注是我最大的動力!)
個人整理,不可用于商業(yè)用途郑叠,轉(zhuǎn)載請注明出處夜赵。
作者各個平臺請搜索:程序員寶藏《途校快來探索屬于你的寶藏吧油吭!
需要pdf直接打印版,可在公眾號"程序員寶藏"回復(fù)復(fù)試上岸獲取(會持續(xù)更新)
需要408電子書2021版署拟,可在公眾號"程序員寶藏"回復(fù)408電子書獲取
需要408初試視頻2021版婉宰,可在公眾號"程序員寶藏"回復(fù)408視頻獲取
需要復(fù)試機試視頻,可在公眾號"程序員寶藏"回復(fù)機試必過獲取
相對于408初試推穷,復(fù)試需要的少多了心包,加油,大家都可以上岸B濉P诽凇!讓我們一起努力G睢M拗场!
- 第四章议谷、網(wǎng)絡(luò)層
- 第五章炉爆、傳輸層
- 第六章、應(yīng)用層
第四章卧晓、網(wǎng)絡(luò)層
快速喚起記憶知識框架:
17.路由器的主要功能芬首?
路由器主要完成兩個功能:一是路由選擇(確定哪一條路徑),二是分組轉(zhuǎn)發(fā)(當(dāng)一個分組到達時所采取的動作)逼裆。前者是根據(jù)特定的路由選擇協(xié)議構(gòu)造出路由表郁稍,同時經(jīng)常或定期地和相鄰路由器交換路由信息而不斷地更新和維護路由表胜宇。后者處理通過路由器的數(shù)據(jù)流耀怜,關(guān)鍵操作是轉(zhuǎn)發(fā)表查詢、轉(zhuǎn)發(fā)及相關(guān)的隊列管理和任務(wù)調(diào)度等掸屡。
- 路由選擇封寞。指按照復(fù)雜的分布式算法,根據(jù)從各相鄰路由器所得到的關(guān)于整個網(wǎng)絡(luò)拓撲的變化情況仅财,動態(tài)地改變所選擇的路由狈究。
- 分組轉(zhuǎn)發(fā)。指路由器根據(jù)轉(zhuǎn)發(fā)表將用戶的IP 數(shù)據(jù)報從合適的端口轉(zhuǎn)發(fā)出去盏求。路由表是根據(jù)路由選擇算法得出的抖锥,而轉(zhuǎn)發(fā)表是從路由表得出的。轉(zhuǎn)發(fā)表的結(jié)構(gòu)應(yīng)當(dāng)使查找過程最優(yōu)化碎罚,路由表則需要對網(wǎng)絡(luò)拓撲變化的計算最優(yōu)化磅废。在討論路由選擇的原理時,往往不去區(qū)分轉(zhuǎn)發(fā)表和路由表荆烈,而是籠統(tǒng)地使用路由表一詞拯勉。
18.動態(tài)路由算法竟趾?
1、距離-向量路由算法(例如RIP算法)
在距離-向量路由算法中宫峦,所有結(jié)點都定期地將它們的整個路由選擇表傳送給所有與之直接相鄰的結(jié)點岔帽。這種路由選擇表包含:1.每條路徑的目的地(另一結(jié)點)。2.路徑的代價(也稱距離)导绷。
在這種算法中犀勒,所有結(jié)點都必須參與距離向量交換,以保證路由的有效性和一致性妥曲,也就是說贾费,所有的結(jié)點都監(jiān)聽從其他結(jié)點傳來的路由選擇更新信息,并在下列情況下更新它們的路由選擇表:
- 被通告一條新的路由檐盟,該路由在本結(jié)點的路由表中不存在褂萧,此時本地系統(tǒng)加入這條新的路由。
- 發(fā)來的路由信息中有一條到達某個目的地的路由葵萎,該路由與當(dāng)前使用的路由相比箱玷,有較短的距離(較小的代價)。此種情況下陌宿,就用經(jīng)過發(fā)送路由信息的結(jié)點的新路由替換路由表中到達那個目的地的現(xiàn)有路由锡足。
2、鏈路狀態(tài)路由算法(例如OSPF算法)
鏈路狀態(tài)路由算法要求每個參與該算法的結(jié)點都具有完全的網(wǎng)絡(luò)拓撲信息壳坪,它們執(zhí)行下述兩項任務(wù)舶得。第一,主動測試所有鄰接結(jié)點的狀態(tài)爽蝴。兩個共享一條鏈接的結(jié)點是相鄰結(jié)點沐批,它們連接到同一條鏈路,或者連接到同一廣播型物理網(wǎng)絡(luò)蝎亚。第二九孩,定期地將鏈路狀態(tài)傳播給所有其他結(jié)點(或稱路由結(jié)點)
距離-向量路由算法與鏈路狀態(tài)路由算法的比較:在距離-向量路由算法中,每個結(jié)點僅與它的直接鄰居交談发框,它為它的鄰居提供從自已到網(wǎng)絡(luò)中所有其他結(jié)點的最低費用估計躺彬。在鏈路狀態(tài)路由算法中,每個結(jié)點通過廣播的方式與所有其他結(jié)點交談梅惯,但它僅告訴它們與它直接相連的鏈路的費用宪拥。相較之下,距離~向量路由算法有可能遇到路由環(huán)路等問題铣减。
3她君、一個自治系統(tǒng)內(nèi)部所使用的路由選擇協(xié)議稱為內(nèi)部網(wǎng)關(guān)協(xié)議(IGP), 也稱域內(nèi)路由選擇,具體的協(xié)議有RIP 和OSPF 等葫哗。
路由信息協(xié)議(Routing Information Protocol, RIP) 是內(nèi)部網(wǎng)關(guān)協(xié)議IGP) 中最先得到廣泛應(yīng)用的協(xié)議缔刹。RIP 是一種分布式的基于距離向量的路由選擇協(xié)議球涛,其最大優(yōu)點就是簡單。
RIP 規(guī)定:
- 網(wǎng)絡(luò)中的每個路由器都要維護從它自身到其他每個目的網(wǎng)絡(luò)的距離記錄(因此這是一組距離校镐,稱為距離向量)宾符。
- 距離也稱跳數(shù)(Hop Count), 規(guī)定從一個路由器到直接連接網(wǎng)絡(luò)的距離(跳數(shù))為1 。而每經(jīng)過一個路由器灭翔,距離(跳數(shù))加1 。
- RIP 認為好的路由就是它通過的路由器的數(shù)目少辣苏,即優(yōu)先選擇跳數(shù)少的路徑肝箱。
- RIP 允許一條路徑最多只能包含15 個路由器(即最多允許15 跳)。因此距離等于16 時稀蟋,它表示網(wǎng)絡(luò)不可達煌张。可見RIP 只適用于小型互聯(lián)網(wǎng)退客。距離向量路由可能會出現(xiàn)環(huán)路的情況骏融,規(guī)定路徑上的最高跳數(shù)的目的是為了防止數(shù)據(jù)報不斷循環(huán)在環(huán)路上,減少網(wǎng)絡(luò)擁塞的可能性萌狂。
- RIP 默認在任意兩個使用RIP 的路由器之間每30 秒廣播一次RIP 路由更新信息档玻,以便自動建立并維護路由表(動態(tài)維護)。
開放最短路徑優(yōu)先(OSPF) 協(xié)議是使用分布式鏈路狀態(tài)路由算法的典型代表茫藏,也是內(nèi)部網(wǎng)關(guān)協(xié)議(IGP) 的一種误趴。OSPF 與RIP 相比有以下4 點主要區(qū)別:
- OSPF 向本自治系統(tǒng)中的所有路由器發(fā)送信息,這里使用的方法是洪泛法务傲。而RIP 僅向自已相鄰的幾個路由器發(fā)送信息凉当。
- 發(fā)送的信息是與本路由器相鄰的所有路由器的鏈路狀態(tài),但這只是路由器所知道的部分信息售葡】春迹”鏈路狀態(tài)”說明本路由器和哪些路由器相鄰及該鏈路的“度量”(或代價)。而在RIP 中挟伙,發(fā)送的信息是本路由器所知道的全部信息楼雹,即整個路由表。
- 只有當(dāng)鏈路狀態(tài)發(fā)生變化時尖阔,路由器才用洪泛法向所有路由器發(fā)送此信息烘豹,并且更新過程收斂得快,不會出現(xiàn)RIP" 壞消息傳得慢"的問題诺祸。而在RIP 中携悯,不管網(wǎng)絡(luò)拓撲是否發(fā)生變化,路由器之間都會定期交換路由表的信息筷笨。
除以上區(qū)別外憔鬼, OSPF 還有以下特點:
- OSPF 對不同的鏈路可根據(jù)IP 分組的不同服務(wù)類型(TOS) 而設(shè)置成不同的代價龟劲。因此,OSPF 對千不同類型的業(yè)務(wù)可計算出不同的路由轴或,十分靈活昌跌。
- 如果到同一個目的網(wǎng)絡(luò)有多條相同代價的路徑,那么可以將通信量分配給這幾條路徑照雁。這稱為多路徑間的負載平衡蚕愤。
- 所有在OSPF 路由器之間交換的分組都具有鑒別功能,因而保證了僅在可信賴的路由器之間交換鏈路狀態(tài)信息饺蚊。
4萍诱、 自治系統(tǒng)之間所使用的路由選擇協(xié)議稱為外部網(wǎng)關(guān)協(xié)議(EGP), 也稱域間路由選擇,用在不同自治系統(tǒng)的路由器之間交換路由信息污呼,并負責(zé)為分組在不同自治系統(tǒng)之間選擇最優(yōu)的路徑券时。具體的協(xié)議有BGP 赃春。
邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol, BGP) 是不同自治系統(tǒng)的路由器之間交換路由信息的協(xié)議躲雅,是一種外部網(wǎng)關(guān)協(xié)議路媚。邊界網(wǎng)關(guān)協(xié)議常用于互聯(lián)網(wǎng)的網(wǎng)關(guān)之間。路由表包含已知路由器的列表苗缩、路由器能夠達到的地址及到達每個路由器的路徑的跳數(shù)饵蒂。內(nèi)部網(wǎng)關(guān)協(xié)議主要設(shè)法使數(shù)據(jù)報在一個AS 中盡可能有效地從源站傳送到目的站。在一個AS內(nèi)部不需要考慮其他方面的策略酱讶。然而BGP 使用的環(huán)境卻不同苹享,主要原因如下:
- 因特網(wǎng)的規(guī)模太大,使得自治系統(tǒng)之間路由選擇非常困難浴麻。
- 對于自治系統(tǒng)之間的路由選擇得问,要尋找最佳路由是很不現(xiàn)實的。
- 自治系統(tǒng)之間的路由選擇必須考慮有關(guān)策略软免。
邊界網(wǎng)關(guān)協(xié)議(BGP) 只能力求尋找一條能夠到達目的網(wǎng)絡(luò)且比較好的路由(不能兜圈子)宫纬,而并非尋找一條最佳路由。BGP 采用的是路徑向量路由選擇協(xié)議膏萧,它與距離向量協(xié)議和鏈路狀態(tài)協(xié)議有很大的區(qū)別漓骚。BGP 是應(yīng)用層協(xié)議,它是基于TCP 的榛泛。
BGP 的工作原理如下:每個自治系統(tǒng)的管理員要選擇至少一個路由器(可以有多個)作為該自治系統(tǒng)的"BGP 發(fā)言人“蝌蹂。一個BGP 發(fā)言人與其他自治系統(tǒng)中的BGP 發(fā)言人要交換路由信息,就要先建立TCP 連接(可見BGP 報文是通過TCP 傳送的曹锨,也就是說BGP 報文是TCP 報文的數(shù)據(jù)部分)孤个,然后在此連接上交換BGP 報文以建立BGP 會話,再利用BGP 會話交換路由信息沛简。當(dāng)所有BGP 發(fā)言人都相互交換網(wǎng)絡(luò)可達性的信息后齐鲤,各BGP 發(fā)言人就可找出到達各個自治系統(tǒng)的較好路由斥废。
19.網(wǎng)絡(luò)層轉(zhuǎn)發(fā)分組的流程?
- 從數(shù)據(jù)報的首部提取目的主機的IP 地址D, 得出目的網(wǎng)絡(luò)地址N给郊。
- 若網(wǎng)絡(luò)N 與此路由器直接相連牡肉,則把數(shù)據(jù)報直接交付給目的主機D, 這稱為路由器的直接交付;否則是間接交付淆九,執(zhí)行步驟3) 统锤。
- 若路由表中有目的地址為D 的特定主機路由(對特定的目的主機指明一個特定的路由,通常是為了控制或測試網(wǎng)絡(luò)炭庙,或出千安全考慮才采用的)饲窿,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則執(zhí)行步驟4)
- 若路由表中有到達網(wǎng)絡(luò)N 的路由煤搜,則把數(shù)據(jù)報傳送給路由表指明的下一跳路由器;否則唧席,執(zhí)行步驟5) 擦盾。
- 若路由表中有一個默認路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器淌哟;否則迹卢,執(zhí)行步驟6) 。
- 報告轉(zhuǎn)發(fā)分組出錯徒仓。
注意:得到下一跳路由器的IP 地址后并不是直接將該地址填入待發(fā)送的數(shù)據(jù)報腐碱,而是將該IP 地址轉(zhuǎn)換成MAC 地址(通過ARP),將其放到MAC 幀首部中掉弛,然后根據(jù)這個MAC 地址找到下一跳路由器症见。在不同網(wǎng)絡(luò)中傳送時, MAC 幀中的源地址和目的地址要發(fā)生變化殃饿,但是網(wǎng)橋在轉(zhuǎn)發(fā)幀時谋作,不改變幀的源地址,請注意區(qū)分乎芳。
20.IP地址和MAC地址遵蚜?
IP 地址是網(wǎng)絡(luò)層使用的地址,它是分層次等級的奈惑。MAC地址是數(shù)據(jù)鏈路層使用的地址吭净,它是平面式的。在網(wǎng)絡(luò)層及網(wǎng)絡(luò)層之上使用IP 地址肴甸, IP 地址放在IP 數(shù)據(jù)報的首部寂殉,而MAC 地址放在MAC 幀的首部。通過數(shù)據(jù)封裝原在,把IP 數(shù)據(jù)報分組封裝為MAC 幀后不撑,數(shù)據(jù)鏈路層看不見數(shù)據(jù)報分組中的IP地址文兢。
由于路由器的隔離, IP 網(wǎng)絡(luò)中無法通過廣播方式依靠MAC 地址來完成跨網(wǎng)絡(luò)的尋址焕檬,因此在IP 網(wǎng)絡(luò)的網(wǎng)絡(luò)層只使用IP 地址來完成尋址姆坚。尋址時,IP每個路由器依據(jù)其路由表(依靠靜態(tài)路由或動態(tài)路由協(xié)議生成)選擇到目標(biāo)網(wǎng)絡(luò)(即主機號全為0 的網(wǎng)絡(luò)地址)需要轉(zhuǎn)發(fā)到的下一跳(路由器的物理端口號或下一網(wǎng)絡(luò)地址)实愚,而IP 分組通過多次路由轉(zhuǎn)發(fā)到達目標(biāo)網(wǎng)絡(luò)后兼呵,改為在目標(biāo)LAN 中通過數(shù)據(jù)鏈路層的MAC 地址以廣播方式尋址。這樣可以提高路由選擇的效率腊敲。
注意:路由器由于互聯(lián)多個網(wǎng)絡(luò)击喂,因此它不僅有多個IP 地址,也有多個硬件地址碰辅。
21.ARP地址解析協(xié)議懂昂?
無論網(wǎng)絡(luò)層使用什么協(xié)議,在實際網(wǎng)絡(luò)的鏈路上傳送數(shù)據(jù)幀時没宾,最終必須使用硬件地址凌彬。所以需要一種方法來完成IP 地址到MAC 地址的映射,這就是地址解析協(xié)議(Address Resolution Protocol)循衰。每臺主機都設(shè)有一個ARP 高速緩存铲敛,用來存放本局域網(wǎng)上各主機和路由器的IP地址到MAC 地址的映射表,稱ARP 表会钝。使用ARP 來動態(tài)維護此ARP 表伐蒋。
ARP 工作在網(wǎng)絡(luò)層,其工作原理如下:主機A 欲向本局域網(wǎng)上的某臺主機B 發(fā)送IP 數(shù)據(jù)報時迁酸,先在其ARP 高速緩存中查看有無主機B 的IP 地址先鱼。如有,就可查出其對應(yīng)的硬件地址奸鬓,再將此硬件地址寫入MAC 幀型型,然后通過局域網(wǎng)將該MAC 幀發(fā)往此硬件地址。如果沒有全蝶,那么就通過使用目的MAC 地址為FF-FF-FF-FF-FF-FF 的幀來封裝并廣播ARP 請求分組闹蒜,使同一個局域網(wǎng)里的所有主機收到ARP 請求。主機B 收到該ARP 請求后抑淫,向主機A 發(fā)出響應(yīng)ARP 分組绷落,分組中包含主機B 的IP 與MAC 地址的映射關(guān)系,主機A 在收到后將此映射寫入ARP 緩存始苇,然后按查詢到的硬件地址發(fā)送MAC 幀砌烁。ARP 由于“看到了"IP 地址,所以它工作在網(wǎng)絡(luò)層,而NAT路由器由于“看到了“端口函喉,所以它工作在傳輸層避归。
注意: ARP 用于解決同一個局域網(wǎng)上的主機或路由器的IP 地址和硬件地址的映射問題。如果所要找的主機和源主機不在同一個局域網(wǎng)上管呵,那么就要通過ARP 找到一個位于本局域網(wǎng)上的某個路由器的硬件地址梳毙,然后把分組發(fā)送給這個路由器,讓這個路由器把分組轉(zhuǎn)發(fā)給下一個網(wǎng)絡(luò)捐下。剩下的工作就由下一個網(wǎng)絡(luò)來做账锹,盡管ARP 請求分組是廣播發(fā)送的,但ARP 響應(yīng)分組是普通的單播坷襟,即從一個源地址發(fā)送到一個目的地址奸柬。
22.DHCP動態(tài)主機配置協(xié)議?
動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol, DHCP) 常用于給主機動態(tài)地分配IP 地址婴程,它提供了即插即用聯(lián)網(wǎng)的機制廓奕,這種機制允許一臺計算機加入新的網(wǎng)絡(luò)和獲取IP 地址而不用手工參與。DHCP 是應(yīng)用層協(xié)議档叔,它是基于UDP 的桌粉。
DHCP 的工作原理如下:使用客戶/服務(wù)器方式。需要IP 地址的主機在啟動時就向DHCP 服務(wù)器廣播發(fā)送發(fā)現(xiàn)報文蹲蒲,這時該主機就成為DHCP 客戶番甩。本地網(wǎng)絡(luò)上所有主機都能收到此廣播報文侵贵,但只有DHCP 服務(wù)器才回答此廣播報文届搁。DHCP 服務(wù)器先在其數(shù)據(jù)庫中查找該計算機的配置信息。若找到窍育,則返回找到的信息卡睦。若找不到,則從服務(wù)器的IP 地址池中取一個地址分配給該計算機漱抓。DHCP 服務(wù)器的回答報文稱為提供報文表锻。 DHCP 服務(wù)器聚合DHCP 客戶端的交換過程如下:
- DHCP 客戶機廣播"DHCP 發(fā)現(xiàn)“消息,試圖找到網(wǎng)絡(luò)中的DHCP 服務(wù)器乞娄,以便從DHCP服務(wù)器獲得一個IP 地址瞬逊。
- DHCP 服務(wù)器收到"DHCP 發(fā)現(xiàn)消息后,向網(wǎng)絡(luò)中廣播"DHCP 提供“消息仪或,其中包括提供DHCP 客戶機的IP 地址和相關(guān)配置信息确镊。
- DHCP 客戶機收到"DHCP 提供“消息,如果接收DHCP 服務(wù)器所提供的相關(guān)參數(shù)范删,那么通過廣播"DHCP 請求“消息向DHCP 服務(wù)器請求提供IP 地址蕾域。
- DHCP 服務(wù)器廣播"DHCP 確認“消息,將IP 地址分配給DHCP 客戶機。DHCP 允許網(wǎng)絡(luò)上配置多臺DHCP 服務(wù)器旨巷,當(dāng)DHCP 客戶機發(fā)出DHCP 請求時巨缘,有可能收到多個應(yīng)答消息。這時采呐, DHCP 客戶機只會挑選其中的一個若锁,通常挑選最先到達的。
DHCP 服務(wù)器分配給DHCP 客戶的IP 地址是臨時的懈万,因此DHCP 客戶只能在一段有限的時間內(nèi)使用這個分配到的IP 地址拴清。DHCP 稱這段時間為租用期。租用期的數(shù)值應(yīng)由DHCP 服務(wù)器自己決定会通, DHCP 客戶也可在自已發(fā)送的報文中提出對租用期的要求口予。
23.ICMP網(wǎng)際控制報文協(xié)議?
為了提高IP 數(shù)據(jù)報交付成功的機會涕侈,在網(wǎng)絡(luò)層使用了網(wǎng)際控制報文協(xié)議(Internet Control Message Protocol, ICMP) 來讓主機或路由器報告差錯和異常情況沪停。ICMP 報文作為IP 層數(shù)據(jù)報的數(shù)據(jù),加上數(shù)據(jù)報的首部裳涛,組成IP 數(shù)據(jù)報發(fā)送出去木张。ICMP 是IP 層協(xié)議。ICMP 報文的種類有兩種端三,即ICMP 差錯報告報文和ICMP 詢問報文舷礼。ICMP 差錯報告報文用于目標(biāo)主機或到目標(biāo)主機路徑上的路由器向源主機報告差錯和異常情況。共有以下5種類型:
- 終點不可達郊闯。當(dāng)路由器或主機不能交付數(shù)據(jù)報時妻献,就向源點發(fā)送終點不可達報文。
- 源點抑制团赁。當(dāng)路由器或主機由于擁塞而丟棄數(shù)據(jù)報時育拨,就向源點發(fā)送源點抑制報文,使源點知道應(yīng)當(dāng)把數(shù)據(jù)報的發(fā)送速率放慢欢摄。
- 時間超過熬丧。當(dāng)路由器收到生存時間(TTL) 為零的數(shù)據(jù)報時,除丟棄該數(shù)據(jù)報外怀挠,還要向源點發(fā)送時間超過報文析蝴。當(dāng)終點在預(yù)先規(guī)定的時間內(nèi)不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報片時,就把已收到的數(shù)據(jù)報片都丟棄绿淋,并向源點發(fā)送時間超過報文闷畸。
- 參數(shù)問題。當(dāng)路由器或目的主機收到的數(shù)據(jù)報的首部中有的字段的值不正確時躬它,就丟棄 該數(shù)據(jù)報腾啥,并向源點發(fā)送參數(shù)問題報文。
- 改變路由(重定向)。路由器把改變路由報文發(fā)送給主機倘待,讓主機知道下次應(yīng)將數(shù)據(jù)報發(fā) 送給另外的路由器(可通過更好的路由)疮跑。
第五章、傳輸層
快速喚起記憶知識框架:
24.傳輸層的功能凸舵?
從通信和信息處理的角度看祖娘,傳輸層向它上面的應(yīng)用層提供通信服務(wù),它屬千面向通信部分的最高層啊奄,同時也是用戶功能中的最低層渐苏。傳輸層位于網(wǎng)絡(luò)層之上,它為運行在不同主機上的進程之間提供了邏輯通信菇夸,而網(wǎng)絡(luò)層提供主機之間的邏輯通信琼富。顯然,即使網(wǎng)絡(luò)層協(xié)議不可靠(網(wǎng)絡(luò)層協(xié)議使分組丟失庄新、混亂或重復(fù))鞠眉, 傳輸層同樣能為應(yīng)用程序提供可靠的服務(wù)。
傳輸層的功能如下:
l) 傳輸層提供應(yīng)用進程之間的邏輯通信(即端到端的通信)择诈。與網(wǎng)絡(luò)層的區(qū)別是械蹋,網(wǎng)絡(luò)層提供的是主機之間的邏輯通信。從網(wǎng)絡(luò)層來說羞芍,通信的雙方是兩臺主機哗戈, IP 數(shù)據(jù)報的首部給出了這兩臺主機的IP 地址。但“兩臺主機之間的通信”實際上是兩臺主機中的應(yīng)用進程之間的通信荷科,應(yīng)用進程之間的通信又稱端到端的邏輯通信唯咬。
- 復(fù)用和分用。復(fù)用是指發(fā)送方不同的應(yīng)用進程都可使用同一個傳輸層協(xié)議傳送數(shù)據(jù)步做;分用是指接收方的傳輸層在剝?nèi)笪牡氖撞亢竽軌虬堰@些數(shù)據(jù)正確交付到目的應(yīng)用進程副渴。
- 傳輸層還要對收到的報文進行差錯檢測(首部和數(shù)據(jù)部分)奈附。而網(wǎng)絡(luò)層只檢查IP 數(shù)據(jù)報的首部全度,不檢驗數(shù)據(jù)部分是否出錯。
- 提供兩種不同的傳輸協(xié)議斥滤,即面向連接的TCP 和無連接的UDP 将鸵。而網(wǎng)絡(luò)層無法同時實現(xiàn)兩種協(xié)議(即在網(wǎng)絡(luò)層要么只提供面向連接的服務(wù),如虛電路佑颇;要么只提供無連接服務(wù)顶掉,如數(shù)據(jù)報,而不可能在網(wǎng)絡(luò)層同時存在這兩種方式)挑胸。
25.UDP協(xié)議痒筒?
RFC 768 定義的UDP 只是做了傳輸協(xié)議能夠做的最少工作,它僅在IP 的數(shù)據(jù)報服務(wù)之上增加了兩個最基本的服務(wù):復(fù)用和分用以及差錯檢測。如果應(yīng)用程序開發(fā)者選擇UDP 而非TCP,那么應(yīng)用程序幾乎直接與IP 打交道簿透。為什么應(yīng)用開發(fā)人員寧愿在UDP 之上構(gòu)建應(yīng)用移袍,也不選擇TCP? 既然TCP 提供可靠的服務(wù),而UDP 不提供老充,那么TCP 總是首選嗎葡盗?答案是否定的,因為有很多應(yīng)用更適合用UDP啡浊,主要是因為UDP 具有如下優(yōu)點:
- UDP 無須建立連接觅够。因此UDP 不會引入建立連接的時延。試想如果DNS 運行在TCP 而非UDP 上巷嚣,那么DNS 的速度會慢很多喘先。HTTP 使用TCP 而非UDP, 是因為對于基于文本數(shù)據(jù)的Web網(wǎng)頁來說可靠性是至關(guān)重要的。
- 無連接狀態(tài)廷粒。TCP 需要在端系統(tǒng)中維護連接狀態(tài)苹祟。此連接狀態(tài)包括接收和發(fā)送緩存、擁塞控制參數(shù)和序號與確認號的參數(shù)评雌。而UDP 不維護連接狀態(tài)树枫,也不跟蹤這些參數(shù)。因此景东,某些專用應(yīng)用服務(wù)器使用UDP 時砂轻,一般都能支持更多的活動客戶機
- 分組首部開銷小。TCP 有20B 的首部升銷斤吐,而UDP 僅有8B 的升銷搔涝。
- 應(yīng)用層能更好地控制要發(fā)送的數(shù)據(jù)和發(fā)送時間。UDP 沒有擁塞控制和措,因此網(wǎng)絡(luò)中的擁塞不會影響主機的發(fā)送效率庄呈。某些實時應(yīng)用要求以穩(wěn)定的速度發(fā)送,能容忍一些數(shù)據(jù)的丟失派阱,但不允許有較大的時延诬留,而UDP 正好滿足這些應(yīng)用的需求。UDP 常用于一次性傳輸較少數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用如DNS 贫母、SNMP 等文兑,因為對千這此應(yīng)用,若采用TCP, 則將為連接創(chuàng)建腺劣、維護和拆除帶來不小的開銷绿贞。UDP 也常用于多媒體應(yīng)用(如IP 電話、實時視頻會議橘原、流媒體等)籍铁,顯然涡上,可靠數(shù)據(jù)傳輸對這些應(yīng)用來說并不是最重要的,但TCP的擁塞控制會導(dǎo)致數(shù)據(jù)出現(xiàn)較大的延遲拒名,這是它們不可容忍的吓懈。
UDP 提供盡最大努力的交付,即不保證可靠交付靡狞,但這并不意味著應(yīng)用對數(shù)據(jù)的要求是不可靠的耻警,因此所有維護傳輸可靠性的工作需要用戶在應(yīng)用層來完成。應(yīng)用實體可以根據(jù)應(yīng)用的需求來靈活設(shè)計自己的可靠性機制甸怕。
26.TCP協(xié)議甘穿?
TCP 是在不可靠的IP 層之上實現(xiàn)的可靠的數(shù)據(jù)傳輸協(xié)議,它主要解決傳輸?shù)目煽可液肌⒂行蛭录妗o丟失和不重復(fù)問題。TCP 是TCP/IP 體系中非常復(fù)雜的一個協(xié)議武契,主要特點如下:
- TCP 是面向連接的傳輸層協(xié)議募判。
- 每條TCP 連接只能有兩個端點,每條TCP 連接只能是點對點的(一對一)咒唆。
- TCP 提供可靠的交付服務(wù)届垫,保證傳送的數(shù)據(jù)無差錯、不丟失全释、不重復(fù)且有序装处。
- TCP 提供全雙工通信,允許通信雙方的應(yīng)用進程在任何時候都能發(fā)送數(shù)據(jù)浸船,為此TCP 連接的兩端都設(shè)有發(fā)送緩存和接收緩存妄迁,用來臨時存放雙向通信的數(shù)據(jù)。發(fā)送緩存用來暫時存放以下數(shù)據(jù):(1)發(fā)送應(yīng)用程序傳送給發(fā)送方TCP 準(zhǔn)備發(fā)送的數(shù)據(jù)李命;(2)TCP 已發(fā)送但尚未收到確認的數(shù)據(jù)登淘。接收緩存用來暫時存放以下數(shù)據(jù):(1)按序到達但尚未被接收應(yīng)用程序收取的數(shù)據(jù);(2)不按序到達的數(shù)據(jù)封字。
TCP連接的建立
在TCP 連接建立的過程中黔州,要解決以下三個問題:
- 要使每一方都能夠確知對方的存在。
- 要允許雙方協(xié)商一些參數(shù)(如最大窗口值周叮、是否使用窗口擴大選項辩撑、時間戳選項及服務(wù)質(zhì)量等)界斜。
- 能夠?qū)\輸實體資源(如緩存大小仿耽、連接表中的項目等)進行分配。
三次握手建立連接
第一步:客戶機的TCP 首先向服務(wù)器的TCP 發(fā)送一個連接請求報文段各薇。這個特殊的報文段中不含應(yīng)用層數(shù)據(jù)项贺,其首部中的SYN標(biāo)志位被置為1 君躺。另外,客戶機會隨機選擇一個起始序號seq = x(連接請求報文不攜帶數(shù)據(jù)开缎,但要消耗一個序號)棕叫。
第二步:服務(wù)器的TCP 收到連接請求報文段后,如同意建立連接奕删,就向客戶機發(fā)回確認俺泣,并為該TCP 連接分配TCP 緩存和變量。在確認報文段中完残, SYN 和ACK 位都被置為1, 確認號字段的值為x+ 1, 并且服務(wù)器隨機產(chǎn)生起始序號seq= y( 確認報文不攜帶數(shù)據(jù)伏钠,但也要消耗一個序號)。確認報文段同樣不包含應(yīng)用層數(shù)據(jù)谨设。
第三步:當(dāng)客戶機收到確認報文段后熟掂,還要向服務(wù)器給出確認,并且也要給該連接分配緩存和變量扎拣。這個報文段的ACK 標(biāo)志位被置1, 序號字段為x+ 1, 確認號字段ack=y+ 1 赴肚。該報文段可以攜帶數(shù)據(jù),若不攜帶數(shù)據(jù)則不消耗序號二蓝。
成功進行以上三步后誉券,就建立了TCP 連接,接下來就可以傳送應(yīng)用層數(shù)據(jù)刊愚。TCP 提供的是全雙工通信横朋,因此通信雙方的應(yīng)用進程在任何時候都能發(fā)送數(shù)據(jù)。另外百拓,值得注意的是琴锭,服務(wù)器端的資源是在完成第二次握手時分配的,而客戶端的資源是在完成第三次握手時分配的衙传,這就使得服務(wù)器易于受到SYN 洪泛攻擊决帖。
四次握手釋放連接
第一步:客戶機打算關(guān)閉連接時,向其TCP 發(fā)送一個連接釋放報文段蓖捶,并停止發(fā)送數(shù)據(jù)地回,主動關(guān)閉TCP 連接,該報文段的FIN 標(biāo)志位被置1, seq= u, 它等于前面已傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1 (FIN 報文段即使不攜帶數(shù)據(jù)俊鱼,也要消耗一個序號)刻像。TCP 是全雙工的,即可以想象為一條TCP 連接上有兩條數(shù)據(jù)通路并闲。發(fā)送FIN 報文時细睡,發(fā)送FIN 的一端不能再發(fā)送數(shù)據(jù),即關(guān)閉了其中一條數(shù)據(jù)通路帝火,但對方還可以發(fā)送數(shù)據(jù)溜徙。
第二步:服務(wù)器收到連接釋放報文段后即發(fā)出確認湃缎,確認號是ack = u + 1, 而這個報文段自己的序號是V, 等于它前面已傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1 。此時蠢壹,從客戶機到服務(wù)器這個方向的連接就釋放了嗓违, TCP 連接處于半關(guān)閉狀態(tài)。但服務(wù)器若發(fā)送數(shù)據(jù)图贸,客戶機仍要接收蹂季,即從服務(wù)器到客戶機這個方向的連接并未關(guān)閉。
第三步:若服務(wù)器已經(jīng)沒有要向客戶機發(fā)送的數(shù)據(jù)疏日,就通知TCP 釋放連接乏盐,此時其發(fā)出FIN= 1 的連接釋放報文段。
第四步:客戶機收到連接釋放報文段后制恍,必須發(fā)出確認父能。在確認報文段中, ACK 字段被置為1, 確認號ack= w + 1, 序號seq= u + 1 净神。此時TCP 連接還未釋放何吝,必須經(jīng)過時間等待計時器設(shè)置的時間2MSL 后, A 才進入連接關(guān)閉狀態(tài)鹃唯。
對上述TCP 連接建立和釋放的總結(jié)如下:
- 連接建立爱榕。分為3 步: 1、SYN = 1, seq = x 坡慌。 2黔酥、SYN= 1, ACK= 1, seq= y, ack = x + 1 。 3洪橘、ACK= 1, seq= x + 1, ack = y + l 跪者。
- 釋放連接。分為4 步: 1熄求、FIN= 1, seq =u 渣玲。 2、ACK = 1, seq = v, ack = u + 1 弟晚。 3忘衍、FIN= 1, ACK= 1, seq= w, ack = u + 1 。 4卿城、ACK= 1, seq= u + 1, ack = w + 1枚钓。
27.擁塞控制的四種算法?
所謂擁塞控制瑟押,是指防止過多的數(shù)據(jù)注入網(wǎng)絡(luò)搀捷,保證網(wǎng)絡(luò)中的路由器或鏈路小致過載。出現(xiàn)擁塞時勉耀,端點并不了解到擁塞發(fā)生的細節(jié)指煎,對通信連接的端點來說蹋偏,擁塞往往表現(xiàn)為通信時延的增加便斥。當(dāng)然至壤,擁塞控制和流量控制也有相似的地方,即它們都通過控制發(fā)送方發(fā)送數(shù)據(jù)的速率來達到控制效果枢纠。
擁塞控制與流量控制的區(qū)別:擁塞控制是讓網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負荷像街,是一個全局性的過程,涉及所有的主機晋渺、所有的路由器镰绎,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。相反木西,流量控制往往是指點對點的通信量的控制畴栖,即接收端控制發(fā)送端,它所要做的是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率八千,以便使接收端來得及接收吗讶。
1、慢開始算法(接收窗口rwnd,擁塞窗口cwnd) 在TCP 剛剛連接好并開始發(fā)送TCP 報文段時,先令擁塞窗口cwnd = 1, 即一個最大報文段長度MSS 毅弧。每收到一個對新報文段的確認后宇挫,將cwnd 加1, 即增大一個MSS 。用這樣的方法逐步增大發(fā)送方的擁塞窗口cwnd, 可使分組注入網(wǎng)絡(luò)的速率更加合理窥浪。使用慢開始算法后,每經(jīng)過一個傳輸輪次(即往返時延RTT), 擁塞窗口cwnd 就會加倍,即cwnd 的大小指數(shù)式增長瘟滨。這樣,慢開始一直把擁塞窗口cwnd 增大到一個規(guī)定的慢開始門限ssthresh(闊值)能颁,然后改用擁塞避免算法室奏。
2、擁塞避免算法 擁寒避免算法的做法如下:發(fā)送端的擁塞窗口cwnd 每經(jīng)過一個往返時延RTT 就增加一個MSS的大小劲装,而不是加倍胧沫,使cwnd 按線性規(guī)律緩慢增長(即加法增大),而當(dāng)出現(xiàn)一次超時(網(wǎng)絡(luò)擁塞)時占业,令慢開始門限ssthresh 等于當(dāng)前cwnd 的一半(即乘法減腥拊埂)。
3谦疾、快重傳 快重傳技術(shù)使用了冗余ACK 來檢測丟包的發(fā)生南蹂。同樣,冗余ACK 也用千網(wǎng)絡(luò)擁塞的檢測(丟了包當(dāng)然意味著網(wǎng)絡(luò)可能出現(xiàn)了擁塞)念恍×快重傳并非取消重傳計時器晚顷,而是在某些情況下可更早地重傳丟失的報文段。當(dāng)發(fā)送方連續(xù)收到三個重復(fù)的ACK 報文時疗疟,直接重傳對方尚未收到的報文段该默,而不必等待那個報文段設(shè)置的重傳計時器超時。
4策彤、快恢復(fù) 快恢復(fù)算法的原理如下:發(fā)送端收到連續(xù)三個冗余ACK (即重復(fù)確認)時栓袖,執(zhí)行“乘法減小”算法,把慢開始門限ssthresh 設(shè)置為出現(xiàn)擁塞時發(fā)送方cwnd 的一半店诗。與慢開始(慢開始算法將擁塞窗口cwnd 設(shè)置為1) 的不同之處是裹刮,它把cwnd 的值設(shè)置為慢開始門限ssthresh 改變后的數(shù)值,然后開始執(zhí)行擁塞避免算法("加法增大")'使擁塞窗口緩慢地線性增大庞瘸。由于跳過了cwnd 從1 起始的慢開始過程捧弃,所以被稱為快恢復(fù)。
28.為何不采用“三次握手“釋放連接擦囊,且發(fā)送最后一次握手報文后要等待2MSL 的時間呢违霞?
原因有兩個:
- 保證A 發(fā)送的最后一個確認報文段能夠到達B 。如果A 不等待2MSL, 若A 返回的最后確認報文段丟失霜第,則B 不能進入正常關(guān)閉狀態(tài)葛家,而A 此時已經(jīng)關(guān)閉,也不可能再重傳泌类。
- 防止出現(xiàn)“已失效的連接請求報文段“癞谒。A 在發(fā)送最后一個確認報文段后,再經(jīng)過2MSL可保證本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段從網(wǎng)絡(luò)中消失刃榨。
服務(wù)器結(jié)束TCP 連接的時間要比客戶機早一些弹砚,因為客戶機最后要等待2MSL 后才可進入CLOSED 狀態(tài)。
29.為什么不采用“兩次握手”建立連接呢枢希?
這主要是為了防止兩次握手情況下已失效的連接請求報文段突然又傳送到服務(wù)器而產(chǎn)生錯誤桌吃。考慮下面這種情況苞轿∶┯眨客戶A 向服務(wù)器B 發(fā)出TCP 連接請求,第一個連接請求報文在網(wǎng)絡(luò)的某個結(jié)點長時間滯留搬卒, A 超時后認為報文丟失瑟俭,千是再重傳一次連接請求, B 收到后建立連接契邀。數(shù)據(jù)傳輸完畢后雙方斷開連接摆寄。而此時,前一個滯留在網(wǎng)絡(luò)中的連接請求到達服務(wù)器B, 而B 認為A 又發(fā)來連接請求,此時若使用“三次握手”微饥,則B 向A 返回確認報文段逗扒,由于是一個失效的請求,因此A 不予理睬欠橘,建立連接失敗矩肩。若采用的是“兩次握手”,則這種情況下B 認為傳輸連接已經(jīng)建立简软,并一直等待A 傳輸數(shù)據(jù)蛮拔,而A 此時并無連接請求述暂,因此不予理睬痹升,這樣就造成了B的資源白白浪費。
第六章畦韭、應(yīng)用層
快速喚起記憶知識框架:
30.DNS域名解析協(xié)議疼蛾?
域名解析是指把域名映射成為IP 地址或把IP 地址映射成域名的過程。前者稱為正向解析艺配,后者稱為反向解析察郁。當(dāng)客戶端需要域名解析時,通過本機的DNS 客戶端構(gòu)造一個DNS 請求報文转唉,以UDP 數(shù)據(jù)報方式發(fā)往本地域名服務(wù)器皮钠。域名解析有兩種方式:遞歸查詢和遞歸與迭代相結(jié)合的查詢。
31.FTP文件傳輸協(xié)議赠法?
文件傳輸協(xié)議(file Transfer Protocol, FTP) 是因特網(wǎng)上使用得最廣泛的文件傳輸協(xié)議麦轰。FTP提供交互式的訪問,允許客戶指明文件的類型與格式砖织,并允許文件具有存取權(quán)限款侵。它屏蔽了各計算機系統(tǒng)的細節(jié),因而適合于在異構(gòu)網(wǎng)絡(luò)中的任意計算機之間傳送文件侧纯。FTP 提供以下功能: (1)提供不同種類主機系統(tǒng)(硬新锈、軟件體系等都可以不同)之間的文件傳輸能力。 (2)以用戶權(quán)限管理的方式提供用戶對遠程FTP 服務(wù)器上的文件管理能力眶熬。 (3)以匿名FTP 的方式提供公用文件共享的能力妹笆。
FTP 采用客戶/服務(wù)器的工作方式,它使用TCP 可靠的傳輸服務(wù)娜氏。一個FTP 服務(wù)器進程可同時為多個客戶進程提供服務(wù)拳缠。FTP 的服務(wù)器進程由兩大部分組成:一個主進程,負責(zé)接收新的請求牍白;另外有若干從屬進程脊凰,負責(zé)處理單個請求。其工作步驟如下: (1)打開熟知端口21 (控制端口),使客戶進程能夠連接上狸涌。 (2)等待客戶進程發(fā)連接請求切省。 (3)啟動從屬進程來處理客戶進程發(fā)來的請求。主進程與從屬進程并發(fā)執(zhí)行帕胆,從屬進程對客戶進程的請求處理完畢后即終止朝捆。 (4)回到等待狀態(tài),繼續(xù)接收其他客戶進程的請求懒豹。
32.SMTP簡單郵件傳輸協(xié)議芙盘?
簡單郵件傳輸協(xié)議(Simple Mail Transfer Protocol, SMTP) 是一種提供可靠且有效的電子郵件傳輸?shù)膮f(xié)議,它控制兩個相互通信的SMTP 進程交換信息脸秽。由于SMTP 使用客戶/服務(wù)器方式儒老,因此負責(zé)發(fā)送郵件的SMTP 進程就是SMTP 客戶,而負責(zé)接收郵件的SMTP 進程就是SMTP 服務(wù)器记餐。SMTP 用的是TCP 連接驮樊,端口號為25 。SMTP 通信有以下三個階段:(1) 連接建立(2) 郵件傳送(3) 連接釋放片酝。
33.POP3
郵局協(xié)議(Post Office Protocol, POP) 是一個非常簡單但功能有限的郵件讀取協(xié)議囚衔,現(xiàn)在使用的是它的第3 個版本POP3 。POP3 采用的是“拉" (Pull) 的通信方式雕沿,當(dāng)用戶讀取郵件時练湿,用戶代理向郵件服務(wù)器發(fā)出請求,“拉”取用戶郵箱中的郵件审轮。POP 也使用客戶/服務(wù)器的工作方式肥哎,在傳輸層使用TCP, 端口號為110 。接收方的用戶代理上必須運行POP 客戶程序断国,而接收方的郵件服務(wù)器上則運行POP 服務(wù)器程序贤姆。POP 有兩種工作方式:“下載并保留”和“下載并刪除"。在“下載并保留”方式下稳衬,用戶從郵件服務(wù)器上讀取郵件后霞捡,郵件依然會保存在郵件服務(wù)器上,用戶可再次從服務(wù)器上讀取該郵件薄疚;而使用“下載并刪除“方式時碧信,郵件一旦被讀取,就被從郵件服務(wù)器上刪除街夭,用戶不能再次從服務(wù)器上讀取砰碴。
隨著萬維網(wǎng)的流行,目前出現(xiàn)了很多基于萬維網(wǎng)的電子郵件板丽,如Hotmail 呈枉、Gmail 等趁尼。這種電子郵件的特點是,用戶瀏覽器與Hotmail 或Gmail 的郵件服務(wù)器之間的郵件發(fā)送或接收使用的是HTTP, 而僅在不同郵件服務(wù)器之間傳送郵件時才使用SMTP
34.HTTP超文本傳輸協(xié)議猖辫?
HTTP 定義了瀏覽器(萬維網(wǎng)客戶進程)怎樣向萬維網(wǎng)服務(wù)器請求萬維網(wǎng)文檔酥泞,以及服務(wù)器怎樣把文檔傳送給瀏覽器。從層次的角度看啃憎, HTTP 是面向事務(wù)的(Transaction-oriented) 應(yīng)用層協(xié)議芝囤,它規(guī)定了在瀏覽器和服務(wù)器之間的請求和響應(yīng)的格式與規(guī)則,是萬維網(wǎng)上能夠可靠地交換文件(包括文本辛萍、聲音悯姊、圖像等各種多媒體文件)的重要基礎(chǔ)。
用戶單擊鼠標(biāo)后所發(fā)生的事件按順序如下(以訪問清華大學(xué)的網(wǎng)站為例):
- 瀏覽器分析鏈接指向頁面的URL (http://www.tsinghua.edu.cn /chn/index.htm) 贩毕。
- 瀏覽器向DNS 請求解析www.tsinghuaaedu.CR 的IP 地址悯许。-
- 域名系統(tǒng)統(tǒng)DNS 臚祈出清畢大學(xué)服務(wù)器的IP 地址。
- 瀏覽器與該服務(wù)器建立TCP 連接(默認端口號為80) 耳幢。
- 瀏覽器發(fā)出HTTP 請求: GET /chn/index.htm 岸晦。
- 服務(wù)器通過HTTP 響應(yīng)把文件index.htm 發(fā)送給瀏覽器欧啤。
- TCP 連接釋放睛藻。
- 瀏覽器解釋文件index.htm, 并將Web 頁顯示給用戶。
參考文獻:
[1]謝希仁. 計算機網(wǎng)絡(luò).第5版[M]. 電子工業(yè)出版社, 2008.
[2]王道論壇組, 王道論壇. 2015年計算機網(wǎng)絡(luò)聯(lián)考復(fù)習(xí)指導(dǎo)[M]. 電子工業(yè)出版社, 2014.