計算機考研復試面試常問問題 計算機網(wǎng)絡篇(下)
在復習過程中,我用心查閱并整理了在考研復試面試中可能問到的大部分問題,并分點整理了答案,可以直接理解背誦并加上自己的語言潤色!極力推薦打印下來看,效率更高!絕對良心之作!
此系列一共有8篇:編程語言篇|數(shù)據(jù)結構篇|操作系統(tǒng)篇|組成原理篇|計算機網(wǎng)絡篇|數(shù)據(jù)庫篇|軟件工程篇|計算機專業(yè)英語篇(還未全部完成,敬請期待,你們的支持和關注是我最大的動力!)
個人整理,不可用于商業(yè)用途,轉載請注明出處。
作者各個平臺請搜索:程序員寶藏??靵硖剿鲗儆谀愕膶毑匕桑?/p>
需要pdf直接打印版,可在公眾號"程序員寶藏"回復復試上岸獲取(會持續(xù)更新)
需要408電子書2021版,可在公眾號"程序員寶藏"回復408電子書獲取
需要408初試視頻2021版,可在公眾號"程序員寶藏"回復408視頻獲取
需要復試機試視頻,可在公眾號"程序員寶藏"回復機試必過獲取
相對于408初試,復試需要的少多了,加油,大家都可以上岸!?。∽屛覀円黄鹋Γ。。?/strong>
- 第四章、網(wǎng)絡層
- 第五章、傳輸層
- 第六章、應用層
第四章、網(wǎng)絡層
快速喚起記憶知識框架:

17.路由器的主要功能?
路由器主要完成兩個功能:一是路由選擇(確定哪一條路徑),二是分組轉發(fā)(當一個分組到達時所采取的動作)。前者是根據(jù)特定的路由選擇協(xié)議構造出路由表,同時經常或定期地和相鄰路由器交換路由信息而不斷地更新和維護路由表。后者處理通過路由器的數(shù)據(jù)流,關鍵操作是轉發(fā)表查詢、轉發(fā)及相關的隊列管理和任務調度等。
- 路由選擇。指按照復雜的分布式算法,根據(jù)從各相鄰路由器所得到的關于整個網(wǎng)絡拓撲的變化情況,動態(tài)地改變所選擇的路由。
- 分組轉發(fā)。指路由器根據(jù)轉發(fā)表將用戶的IP 數(shù)據(jù)報從合適的端口轉發(fā)出去。路由表是根據(jù)路由選擇算法得出的,而轉發(fā)表是從路由表得出的。轉發(fā)表的結構應當使查找過程最優(yōu)化,路由表則需要對網(wǎng)絡拓撲變化的計算最優(yōu)化。在討論路由選擇的原理時,往往不去區(qū)分轉發(fā)表和路由表,而是籠統(tǒng)地使用路由表一詞。
18.動態(tài)路由算法?
1、距離-向量路由算法(例如RIP算法)
在距離-向量路由算法中,所有結點都定期地將它們的整個路由選擇表傳送給所有與之直接相鄰的結點。這種路由選擇表包含:1.每條路徑的目的地(另一結點)。2.路徑的代價(也稱距離)。
在這種算法中,所有結點都必須參與距離向量交換,以保證路由的有效性和一致性,也就是說,所有的結點都監(jiān)聽從其他結點傳來的路由選擇更新信息,并在下列情況下更新它們的路由選擇表:
- 被通告一條新的路由,該路由在本結點的路由表中不存在,此時本地系統(tǒng)加入這條新的路由。
- 發(fā)來的路由信息中有一條到達某個目的地的路由,該路由與當前使用的路由相比,有較短的距離(較小的代價)。此種情況下,就用經過發(fā)送路由信息的結點的新路由替換路由表中到達那個目的地的現(xiàn)有路由。
2、鏈路狀態(tài)路由算法(例如OSPF算法)
鏈路狀態(tài)路由算法要求每個參與該算法的結點都具有完全的網(wǎng)絡拓撲信息,它們執(zhí)行下述兩項任務。第一,主動測試所有鄰接結點的狀態(tài)。兩個共享一條鏈接的結點是相鄰結點,它們連接到同一條鏈路,或者連接到同一廣播型物理網(wǎng)絡。第二,定期地將鏈路狀態(tài)傳播給所有其他結點(或稱路由結點)
距離-向量路由算法與鏈路狀態(tài)路由算法的比較:在距離-向量路由算法中,每個結點僅與它的直接鄰居交談,它為它的鄰居提供從自已到網(wǎng)絡中所有其他結點的最低費用估計。在鏈路狀態(tài)路由算法中,每個結點通過廣播的方式與所有其他結點交談,但它僅告訴它們與它直接相連的鏈路的費用。相較之下,距離~向量路由算法有可能遇到路由環(huán)路等問題。
3、一個自治系統(tǒng)內部所使用的路由選擇協(xié)議稱為內部網(wǎng)關協(xié)議(IGP), 也稱域內路由選擇,具體的協(xié)議有RIP 和OSPF 等。
路由信息協(xié)議(Routing Information Protocol, RIP) 是內部網(wǎng)關協(xié)議IGP) 中最先得到廣泛應用的協(xié)議。RIP 是一種分布式的基于距離向量的路由選擇協(xié)議,其最大優(yōu)點就是簡單。
RIP 規(guī)定:
- 網(wǎng)絡中的每個路由器都要維護從它自身到其他每個目的網(wǎng)絡的距離記錄(因此這是一組距離,稱為距離向量)。
- 距離也稱跳數(shù)(Hop Count), 規(guī)定從一個路由器到直接連接網(wǎng)絡的距離(跳數(shù))為1 。而每經過一個路由器,距離(跳數(shù))加1 。
- RIP 認為好的路由就是它通過的路由器的數(shù)目少,即優(yōu)先選擇跳數(shù)少的路徑。
- RIP 允許一條路徑最多只能包含15 個路由器(即最多允許15 跳)。因此距離等于16 時,它表示網(wǎng)絡不可達??梢奟IP 只適用于小型互聯(lián)網(wǎng)。距離向量路由可能會出現(xiàn)環(huán)路的情況,規(guī)定路徑上的最高跳數(shù)的目的是為了防止數(shù)據(jù)報不斷循環(huán)在環(huán)路上,減少網(wǎng)絡擁塞的可能性。
- RIP 默認在任意兩個使用RIP 的路由器之間每30 秒廣播一次RIP 路由更新信息,以便自動建立并維護路由表(動態(tài)維護)。
開放最短路徑優(yōu)先(OSPF) 協(xié)議是使用分布式鏈路狀態(tài)路由算法的典型代表,也是內部網(wǎng)關協(xié)議(IGP) 的一種。OSPF 與RIP 相比有以下4 點主要區(qū)別:
- OSPF 向本自治系統(tǒng)中的所有路由器發(fā)送信息,這里使用的方法是洪泛法。而RIP 僅向自已相鄰的幾個路由器發(fā)送信息。
- 發(fā)送的信息是與本路由器相鄰的所有路由器的鏈路狀態(tài),但這只是路由器所知道的部分信息?!辨溌窢顟B(tài)”說明本路由器和哪些路由器相鄰及該鏈路的“度量”(或代價)。而在RIP 中,發(fā)送的信息是本路由器所知道的全部信息,即整個路由表。
- 只有當鏈路狀態(tài)發(fā)生變化時,路由器才用洪泛法向所有路由器發(fā)送此信息,并且更新過程收斂得快,不會出現(xiàn)RIP" 壞消息傳得慢"的問題。而在RIP 中,不管網(wǎng)絡拓撲是否發(fā)生變化,路由器之間都會定期交換路由表的信息。
除以上區(qū)別外, OSPF 還有以下特點:
- OSPF 對不同的鏈路可根據(jù)IP 分組的不同服務類型(TOS) 而設置成不同的代價。因此,OSPF 對千不同類型的業(yè)務可計算出不同的路由,十分靈活。
- 如果到同一個目的網(wǎng)絡有多條相同代價的路徑,那么可以將通信量分配給這幾條路徑。這稱為多路徑間的負載平衡。
- 所有在OSPF 路由器之間交換的分組都具有鑒別功能,因而保證了僅在可信賴的路由器之間交換鏈路狀態(tài)信息。
4、 自治系統(tǒng)之間所使用的路由選擇協(xié)議稱為外部網(wǎng)關協(xié)議(EGP), 也稱域間路由選擇,用在不同自治系統(tǒng)的路由器之間交換路由信息,并負責為分組在不同自治系統(tǒng)之間選擇最優(yōu)的路徑。具體的協(xié)議有BGP 。
邊界網(wǎng)關協(xié)議(Border Gateway Protocol, BGP) 是不同自治系統(tǒng)的路由器之間交換路由信息的協(xié)議,是一種外部網(wǎng)關協(xié)議。邊界網(wǎng)關協(xié)議常用于互聯(lián)網(wǎng)的網(wǎng)關之間。路由表包含已知路由器的列表、路由器能夠達到的地址及到達每個路由器的路徑的跳數(shù)。內部網(wǎng)關協(xié)議主要設法使數(shù)據(jù)報在一個AS 中盡可能有效地從源站傳送到目的站。在一個AS內部不需要考慮其他方面的策略。然而BGP 使用的環(huán)境卻不同,主要原因如下:
- 因特網(wǎng)的規(guī)模太大,使得自治系統(tǒng)之間路由選擇非常困難。
- 對于自治系統(tǒng)之間的路由選擇,要尋找最佳路由是很不現(xiàn)實的。
- 自治系統(tǒng)之間的路由選擇必須考慮有關策略。
邊界網(wǎng)關協(xié)議(BGP) 只能力求尋找一條能夠到達目的網(wǎng)絡且比較好的路由(不能兜圈子),而并非尋找一條最佳路由。BGP 采用的是路徑向量路由選擇協(xié)議,它與距離向量協(xié)議和鏈路狀態(tài)協(xié)議有很大的區(qū)別。BGP 是應用層協(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 會話交換路由信息。當所有BGP 發(fā)言人都相互交換網(wǎng)絡可達性的信息后,各BGP 發(fā)言人就可找出到達各個自治系統(tǒng)的較好路由。
19.網(wǎng)絡層轉發(fā)分組的流程?
- 從數(shù)據(jù)報的首部提取目的主機的IP 地址D, 得出目的網(wǎng)絡地址N。
- 若網(wǎng)絡N 與此路由器直接相連,則把數(shù)據(jù)報直接交付給目的主機D, 這稱為路由器的直接交付;否則是間接交付,執(zhí)行步驟3) 。
- 若路由表中有目的地址為D 的特定主機路由(對特定的目的主機指明一個特定的路由,通常是為了控制或測試網(wǎng)絡,或出千安全考慮才采用的),則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則執(zhí)行步驟4)
- 若路由表中有到達網(wǎng)絡N 的路由,則把數(shù)據(jù)報傳送給路由表指明的下一跳路由器;否則,執(zhí)行步驟5) 。
- 若路由表中有一個默認路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認路由器;否則,執(zhí)行步驟6) 。
- 報告轉發(fā)分組出錯。
注意:得到下一跳路由器的IP 地址后并不是直接將該地址填入待發(fā)送的數(shù)據(jù)報,而是將該IP 地址轉換成MAC 地址(通過ARP),將其放到MAC 幀首部中,然后根據(jù)這個MAC 地址找到下一跳路由器。在不同網(wǎng)絡中傳送時, MAC 幀中的源地址和目的地址要發(fā)生變化,但是網(wǎng)橋在轉發(fā)幀時,不改變幀的源地址,請注意區(qū)分。
20.IP地址和MAC地址?
IP 地址是網(wǎng)絡層使用的地址,它是分層次等級的。MAC地址是數(shù)據(jù)鏈路層使用的地址,它是平面式的。在網(wǎng)絡層及網(wǎng)絡層之上使用IP 地址, IP 地址放在IP 數(shù)據(jù)報的首部,而MAC 地址放在MAC 幀的首部。通過數(shù)據(jù)封裝,把IP 數(shù)據(jù)報分組封裝為MAC 幀后,數(shù)據(jù)鏈路層看不見數(shù)據(jù)報分組中的IP地址。
由于路由器的隔離, IP 網(wǎng)絡中無法通過廣播方式依靠MAC 地址來完成跨網(wǎng)絡的尋址,因此在IP 網(wǎng)絡的網(wǎng)絡層只使用IP 地址來完成尋址。尋址時,IP每個路由器依據(jù)其路由表(依靠靜態(tài)路由或動態(tài)路由協(xié)議生成)選擇到目標網(wǎng)絡(即主機號全為0 的網(wǎng)絡地址)需要轉發(fā)到的下一跳(路由器的物理端口號或下一網(wǎng)絡地址),而IP 分組通過多次路由轉發(fā)到達目標網(wǎng)絡后,改為在目標LAN 中通過數(shù)據(jù)鏈路層的MAC 地址以廣播方式尋址。這樣可以提高路由選擇的效率。
注意:路由器由于互聯(lián)多個網(wǎng)絡,因此它不僅有多個IP 地址,也有多個硬件地址。
21.ARP地址解析協(xié)議?
無論網(wǎng)絡層使用什么協(xié)議,在實際網(wǎng)絡的鏈路上傳送數(shù)據(jù)幀時,最終必須使用硬件地址。所以需要一種方法來完成IP 地址到MAC 地址的映射,這就是地址解析協(xié)議(Address Resolution Protocol)。每臺主機都設有一個ARP 高速緩存,用來存放本局域網(wǎng)上各主機和路由器的IP地址到MAC 地址的映射表,稱ARP 表。使用ARP 來動態(tài)維護此ARP 表。
ARP 工作在網(wǎng)絡層,其工作原理如下:主機A 欲向本局域網(wǎng)上的某臺主機B 發(fā)送IP 數(shù)據(jù)報時,先在其ARP 高速緩存中查看有無主機B 的IP 地址。如有,就可查出其對應的硬件地址,再將此硬件地址寫入MAC 幀,然后通過局域網(wǎng)將該MAC 幀發(fā)往此硬件地址。如果沒有,那么就通過使用目的MAC 地址為FF-FF-FF-FF-FF-FF 的幀來封裝并廣播ARP 請求分組,使同一個局域網(wǎng)里的所有主機收到ARP 請求。主機B 收到該ARP 請求后,向主機A 發(fā)出響應ARP 分組,分組中包含主機B 的IP 與MAC 地址的映射關系,主機A 在收到后將此映射寫入ARP 緩存,然后按查詢到的硬件地址發(fā)送MAC 幀。ARP 由于“看到了"IP 地址,所以它工作在網(wǎng)絡層,而NAT路由器由于“看到了“端口,所以它工作在傳輸層。
注意: ARP 用于解決同一個局域網(wǎng)上的主機或路由器的IP 地址和硬件地址的映射問題。如果所要找的主機和源主機不在同一個局域網(wǎng)上,那么就要通過ARP 找到一個位于本局域網(wǎng)上的某個路由器的硬件地址,然后把分組發(fā)送給這個路由器,讓這個路由器把分組轉發(fā)給下一個網(wǎng)絡。剩下的工作就由下一個網(wǎng)絡來做,盡管ARP 請求分組是廣播發(fā)送的,但ARP 響應分組是普通的單播,即從一個源地址發(fā)送到一個目的地址。
22.DHCP動態(tài)主機配置協(xié)議?
動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol, DHCP) 常用于給主機動態(tài)地分配IP 地址,它提供了即插即用聯(lián)網(wǎng)的機制,這種機制允許一臺計算機加入新的網(wǎng)絡和獲取IP 地址而不用手工參與。DHCP 是應用層協(xié)議,它是基于UDP 的。
DHCP 的工作原理如下:使用客戶/服務器方式。需要IP 地址的主機在啟動時就向DHCP 服務器廣播發(fā)送發(fā)現(xiàn)報文,這時該主機就成為DHCP 客戶。本地網(wǎng)絡上所有主機都能收到此廣播報文,但只有DHCP 服務器才回答此廣播報文。DHCP 服務器先在其數(shù)據(jù)庫中查找該計算機的配置信息。若找到,則返回找到的信息。若找不到,則從服務器的IP 地址池中取一個地址分配給該計算機。DHCP 服務器的回答報文稱為提供報文。 DHCP 服務器聚合DHCP 客戶端的交換過程如下:
- DHCP 客戶機廣播"DHCP 發(fā)現(xiàn)“消息,試圖找到網(wǎng)絡中的DHCP 服務器,以便從DHCP服務器獲得一個IP 地址。
- DHCP 服務器收到"DHCP 發(fā)現(xiàn)消息后,向網(wǎng)絡中廣播"DHCP 提供“消息,其中包括提供DHCP 客戶機的IP 地址和相關配置信息。
- DHCP 客戶機收到"DHCP 提供“消息,如果接收DHCP 服務器所提供的相關參數(shù),那么通過廣播"DHCP 請求“消息向DHCP 服務器請求提供IP 地址。
- DHCP 服務器廣播"DHCP 確認“消息,將IP 地址分配給DHCP 客戶機。DHCP 允許網(wǎng)絡上配置多臺DHCP 服務器,當DHCP 客戶機發(fā)出DHCP 請求時,有可能收到多個應答消息。這時, DHCP 客戶機只會挑選其中的一個,通常挑選最先到達的。
DHCP 服務器分配給DHCP 客戶的IP 地址是臨時的,因此DHCP 客戶只能在一段有限的時間內使用這個分配到的IP 地址。DHCP 稱這段時間為租用期。租用期的數(shù)值應由DHCP 服務器自己決定, DHCP 客戶也可在自已發(fā)送的報文中提出對租用期的要求。
23.ICMP網(wǎng)際控制報文協(xié)議?
為了提高IP 數(shù)據(jù)報交付成功的機會,在網(wǎng)絡層使用了網(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 差錯報告報文用于目標主機或到目標主機路徑上的路由器向源主機報告差錯和異常情況。共有以下5種類型:
- 終點不可達。當路由器或主機不能交付數(shù)據(jù)報時,就向源點發(fā)送終點不可達報文。
- 源點抑制。當路由器或主機由于擁塞而丟棄數(shù)據(jù)報時,就向源點發(fā)送源點抑制報文,使源點知道應當把數(shù)據(jù)報的發(fā)送速率放慢。
- 時間超過。當路由器收到生存時間(TTL) 為零的數(shù)據(jù)報時,除丟棄該數(shù)據(jù)報外,還要向源點發(fā)送時間超過報文。當終點在預先規(guī)定的時間內不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報片時,就把已收到的數(shù)據(jù)報片都丟棄,并向源點發(fā)送時間超過報文。
- 參數(shù)問題。當路由器或目的主機收到的數(shù)據(jù)報的首部中有的字段的值不正確時,就丟棄 該數(shù)據(jù)報,并向源點發(fā)送參數(shù)問題報文。
- 改變路由(重定向)。路由器把改變路由報文發(fā)送給主機,讓主機知道下次應將數(shù)據(jù)報發(fā) 送給另外的路由器(可通過更好的路由)。
第五章、傳輸層
快速喚起記憶知識框架:

24.傳輸層的功能?
從通信和信息處理的角度看,傳輸層向它上面的應用層提供通信服務,它屬千面向通信部分的最高層,同時也是用戶功能中的最低層。傳輸層位于網(wǎng)絡層之上,它為運行在不同主機上的進程之間提供了邏輯通信,而網(wǎng)絡層提供主機之間的邏輯通信。顯然,即使網(wǎng)絡層協(xié)議不可靠(網(wǎng)絡層協(xié)議使分組丟失、混亂或重復), 傳輸層同樣能為應用程序提供可靠的服務。
傳輸層的功能如下:
l) 傳輸層提供應用進程之間的邏輯通信(即端到端的通信)。與網(wǎng)絡層的區(qū)別是,網(wǎng)絡層提供的是主機之間的邏輯通信。從網(wǎng)絡層來說,通信的雙方是兩臺主機, IP 數(shù)據(jù)報的首部給出了這兩臺主機的IP 地址。但“兩臺主機之間的通信”實際上是兩臺主機中的應用進程之間的通信,應用進程之間的通信又稱端到端的邏輯通信。
- 復用和分用。復用是指發(fā)送方不同的應用進程都可使用同一個傳輸層協(xié)議傳送數(shù)據(jù);分用是指接收方的傳輸層在剝去報文的首部后能夠把這些數(shù)據(jù)正確交付到目的應用進程。
- 傳輸層還要對收到的報文進行差錯檢測(首部和數(shù)據(jù)部分)。而網(wǎng)絡層只檢查IP 數(shù)據(jù)報的首部,不檢驗數(shù)據(jù)部分是否出錯。
- 提供兩種不同的傳輸協(xié)議,即面向連接的TCP 和無連接的UDP 。而網(wǎng)絡層無法同時實現(xiàn)兩種協(xié)議(即在網(wǎng)絡層要么只提供面向連接的服務,如虛電路;要么只提供無連接服務,如數(shù)據(jù)報,而不可能在網(wǎng)絡層同時存在這兩種方式)。
25.UDP協(xié)議?
RFC 768 定義的UDP 只是做了傳輸協(xié)議能夠做的最少工作,它僅在IP 的數(shù)據(jù)報服務之上增加了兩個最基本的服務:復用和分用以及差錯檢測。如果應用程序開發(fā)者選擇UDP 而非TCP,那么應用程序幾乎直接與IP 打交道。為什么應用開發(fā)人員寧愿在UDP 之上構建應用,也不選擇TCP? 既然TCP 提供可靠的服務,而UDP 不提供,那么TCP 總是首選嗎?答案是否定的,因為有很多應用更適合用UDP,主要是因為UDP 具有如下優(yōu)點:
- UDP 無須建立連接。因此UDP 不會引入建立連接的時延。試想如果DNS 運行在TCP 而非UDP 上,那么DNS 的速度會慢很多。HTTP 使用TCP 而非UDP, 是因為對于基于文本數(shù)據(jù)的Web網(wǎng)頁來說可靠性是至關重要的。
- 無連接狀態(tài)。TCP 需要在端系統(tǒng)中維護連接狀態(tài)。此連接狀態(tài)包括接收和發(fā)送緩存、擁塞控制參數(shù)和序號與確認號的參數(shù)。而UDP 不維護連接狀態(tài),也不跟蹤這些參數(shù)。因此,某些專用應用服務器使用UDP 時,一般都能支持更多的活動客戶機
- 分組首部開銷小。TCP 有20B 的首部升銷,而UDP 僅有8B 的升銷。
- 應用層能更好地控制要發(fā)送的數(shù)據(jù)和發(fā)送時間。UDP 沒有擁塞控制,因此網(wǎng)絡中的擁塞不會影響主機的發(fā)送效率。某些實時應用要求以穩(wěn)定的速度發(fā)送,能容忍一些數(shù)據(jù)的丟失,但不允許有較大的時延,而UDP 正好滿足這些應用的需求。UDP 常用于一次性傳輸較少數(shù)據(jù)的網(wǎng)絡應用如DNS 、SNMP 等,因為對千這此應用,若采用TCP, 則將為連接創(chuàng)建、維護和拆除帶來不小的開銷。UDP 也常用于多媒體應用(如IP 電話、實時視頻會議、流媒體等),顯然,可靠數(shù)據(jù)傳輸對這些應用來說并不是最重要的,但TCP的擁塞控制會導致數(shù)據(jù)出現(xiàn)較大的延遲,這是它們不可容忍的。
UDP 提供盡最大努力的交付,即不保證可靠交付,但這并不意味著應用對數(shù)據(jù)的要求是不可靠的,因此所有維護傳輸可靠性的工作需要用戶在應用層來完成。應用實體可以根據(jù)應用的需求來靈活設計自己的可靠性機制。
26.TCP協(xié)議?
TCP 是在不可靠的IP 層之上實現(xiàn)的可靠的數(shù)據(jù)傳輸協(xié)議,它主要解決傳輸?shù)目煽俊⒂行?、無丟失和不重復問題。TCP 是TCP/IP 體系中非常復雜的一個協(xié)議,主要特點如下:
- TCP 是面向連接的傳輸層協(xié)議。
- 每條TCP 連接只能有兩個端點,每條TCP 連接只能是點對點的(一對一)。
- TCP 提供可靠的交付服務,保證傳送的數(shù)據(jù)無差錯、不丟失、不重復且有序。
- TCP 提供全雙工通信,允許通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù),為此TCP 連接的兩端都設有發(fā)送緩存和接收緩存,用來臨時存放雙向通信的數(shù)據(jù)。發(fā)送緩存用來暫時存放以下數(shù)據(jù):(1)發(fā)送應用程序傳送給發(fā)送方TCP 準備發(fā)送的數(shù)據(jù);(2)TCP 已發(fā)送但尚未收到確認的數(shù)據(jù)。接收緩存用來暫時存放以下數(shù)據(jù):(1)按序到達但尚未被接收應用程序收取的數(shù)據(jù);(2)不按序到達的數(shù)據(jù)。
TCP連接的建立
在TCP 連接建立的過程中,要解決以下三個問題:
- 要使每一方都能夠確知對方的存在。
- 要允許雙方協(xié)商一些參數(shù)(如最大窗口值、是否使用窗口擴大選項、時間戳選項及服務質量等)。
- 能夠對運輸實體資源(如緩存大小、連接表中的項目等)進行分配。
三次握手建立連接
第一步:客戶機的TCP 首先向服務器的TCP 發(fā)送一個連接請求報文段。這個特殊的報文段中不含應用層數(shù)據(jù),其首部中的SYN標志位被置為1 。另外,客戶機會隨機選擇一個起始序號seq = x(連接請求報文不攜帶數(shù)據(jù),但要消耗一個序號)。
第二步:服務器的TCP 收到連接請求報文段后,如同意建立連接,就向客戶機發(fā)回確認,并為該TCP 連接分配TCP 緩存和變量。在確認報文段中, SYN 和ACK 位都被置為1, 確認號字段的值為x+ 1, 并且服務器隨機產生起始序號seq= y( 確認報文不攜帶數(shù)據(jù),但也要消耗一個序號)。確認報文段同樣不包含應用層數(shù)據(jù)。
第三步:當客戶機收到確認報文段后,還要向服務器給出確認,并且也要給該連接分配緩存和變量。這個報文段的ACK 標志位被置1, 序號字段為x+ 1, 確認號字段ack=y+ 1 。該報文段可以攜帶數(shù)據(jù),若不攜帶數(shù)據(jù)則不消耗序號。
成功進行以上三步后,就建立了TCP 連接,接下來就可以傳送應用層數(shù)據(jù)。TCP 提供的是全雙工通信,因此通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù)。另外,值得注意的是,服務器端的資源是在完成第二次握手時分配的,而客戶端的資源是在完成第三次握手時分配的,這就使得服務器易于受到SYN 洪泛攻擊。

四次握手釋放連接
第一步:客戶機打算關閉連接時,向其TCP 發(fā)送一個連接釋放報文段,并停止發(fā)送數(shù)據(jù),主動關閉TCP 連接,該報文段的FIN 標志位被置1, seq= u, 它等于前面已傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1 (FIN 報文段即使不攜帶數(shù)據(jù),也要消耗一個序號)。TCP 是全雙工的,即可以想象為一條TCP 連接上有兩條數(shù)據(jù)通路。發(fā)送FIN 報文時,發(fā)送FIN 的一端不能再發(fā)送數(shù)據(jù),即關閉了其中一條數(shù)據(jù)通路,但對方還可以發(fā)送數(shù)據(jù)。
第二步:服務器收到連接釋放報文段后即發(fā)出確認,確認號是ack = u + 1, 而這個報文段自己的序號是V, 等于它前面已傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1 。此時,從客戶機到服務器這個方向的連接就釋放了, TCP 連接處于半關閉狀態(tài)。但服務器若發(fā)送數(shù)據(jù),客戶機仍要接收,即從服務器到客戶機這個方向的連接并未關閉。
第三步:若服務器已經沒有要向客戶機發(fā)送的數(shù)據(jù),就通知TCP 釋放連接,此時其發(fā)出FIN= 1 的連接釋放報文段。
第四步:客戶機收到連接釋放報文段后,必須發(fā)出確認。在確認報文段中, ACK 字段被置為1, 確認號ack= w + 1, 序號seq= u + 1 。此時TCP 連接還未釋放,必須經過時間等待計時器設置的時間2MSL 后, A 才進入連接關閉狀態(tài)。

對上述TCP 連接建立和釋放的總結如下:
- 連接建立。分為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)絡,保證網(wǎng)絡中的路由器或鏈路小致過載。出現(xiàn)擁塞時,端點并不了解到擁塞發(fā)生的細節(jié),對通信連接的端點來說,擁塞往往表現(xiàn)為通信時延的增加。當然,擁塞控制和流量控制也有相似的地方,即它們都通過控制發(fā)送方發(fā)送數(shù)據(jù)的速率來達到控制效果。
擁塞控制與流量控制的區(qū)別:擁塞控制是讓網(wǎng)絡能夠承受現(xiàn)有的網(wǎng)絡負荷,是一個全局性的過程,涉及所有的主機、所有的路由器,以及與降低網(wǎng)絡傳輸性能有關的所有因素。相反,流量控制往往是指點對點的通信量的控制,即接收端控制發(fā)送端,它所要做的是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來得及接收。
1、慢開始算法(接收窗口rwnd,擁塞窗口cwnd) 在TCP 剛剛連接好并開始發(fā)送TCP 報文段時,先令擁塞窗口cwnd = 1, 即一個最大報文段長度MSS 。每收到一個對新報文段的確認后,將cwnd 加1, 即增大一個MSS 。用這樣的方法逐步增大發(fā)送方的擁塞窗口cwnd, 可使分組注入網(wǎng)絡的速率更加合理。使用慢開始算法后,每經過一個傳輸輪次(即往返時延RTT), 擁塞窗口cwnd 就會加倍,即cwnd 的大小指數(shù)式增長。這樣,慢開始一直把擁塞窗口cwnd 增大到一個規(guī)定的慢開始門限ssthresh(闊值),然后改用擁塞避免算法。
2、擁塞避免算法 擁寒避免算法的做法如下:發(fā)送端的擁塞窗口cwnd 每經過一個往返時延RTT 就增加一個MSS的大小,而不是加倍,使cwnd 按線性規(guī)律緩慢增長(即加法增大),而當出現(xiàn)一次超時(網(wǎng)絡擁塞)時,令慢開始門限ssthresh 等于當前cwnd 的一半(即乘法減?。?。

3、快重傳 快重傳技術使用了冗余ACK 來檢測丟包的發(fā)生。同樣,冗余ACK 也用千網(wǎng)絡擁塞的檢測(丟了包當然意味著網(wǎng)絡可能出現(xiàn)了擁塞)。快重傳并非取消重傳計時器,而是在某些情況下可更早地重傳丟失的報文段。當發(fā)送方連續(xù)收到三個重復的ACK 報文時,直接重傳對方尚未收到的報文段,而不必等待那個報文段設置的重傳計時器超時。
4、快恢復 快恢復算法的原理如下:發(fā)送端收到連續(xù)三個冗余ACK (即重復確認)時,執(zhí)行“乘法減小”算法,把慢開始門限ssthresh 設置為出現(xiàn)擁塞時發(fā)送方cwnd 的一半。與慢開始(慢開始算法將擁塞窗口cwnd 設置為1) 的不同之處是,它把cwnd 的值設置為慢開始門限ssthresh 改變后的數(shù)值,然后開始執(zhí)行擁塞避免算法("加法增大")'使擁塞窗口緩慢地線性增大。由于跳過了cwnd 從1 起始的慢開始過程,所以被稱為快恢復。
28.為何不采用“三次握手“釋放連接,且發(fā)送最后一次握手報文后要等待2MSL 的時間呢?
原因有兩個:
- 保證A 發(fā)送的最后一個確認報文段能夠到達B 。如果A 不等待2MSL, 若A 返回的最后確認報文段丟失,則B 不能進入正常關閉狀態(tài),而A 此時已經關閉,也不可能再重傳。
- 防止出現(xiàn)“已失效的連接請求報文段“。A 在發(fā)送最后一個確認報文段后,再經過2MSL可保證本連接持續(xù)的時間內所產生的所有報文段從網(wǎng)絡中消失。
服務器結束TCP 連接的時間要比客戶機早一些,因為客戶機最后要等待2MSL 后才可進入CLOSED 狀態(tài)。
29.為什么不采用“兩次握手”建立連接呢?
這主要是為了防止兩次握手情況下已失效的連接請求報文段突然又傳送到服務器而產生錯誤。考慮下面這種情況??蛻鬉 向服務器B 發(fā)出TCP 連接請求,第一個連接請求報文在網(wǎng)絡的某個結點長時間滯留, A 超時后認為報文丟失,千是再重傳一次連接請求, B 收到后建立連接。數(shù)據(jù)傳輸完畢后雙方斷開連接。而此時,前一個滯留在網(wǎng)絡中的連接請求到達服務器B, 而B 認為A 又發(fā)來連接請求,此時若使用“三次握手”,則B 向A 返回確認報文段,由于是一個失效的請求,因此A 不予理睬,建立連接失敗。若采用的是“兩次握手”,則這種情況下B 認為傳輸連接已經建立,并一直等待A 傳輸數(shù)據(jù),而A 此時并無連接請求,因此不予理睬,這樣就造成了B的資源白白浪費。
第六章、應用層
快速喚起記憶知識框架:

30.DNS域名解析協(xié)議?
域名解析是指把域名映射成為IP 地址或把IP 地址映射成域名的過程。前者稱為正向解析,后者稱為反向解析。當客戶端需要域名解析時,通過本機的DNS 客戶端構造一個DNS 請求報文,以UDP 數(shù)據(jù)報方式發(fā)往本地域名服務器。域名解析有兩種方式:遞歸查詢和遞歸與迭代相結合的查詢。
31.FTP文件傳輸協(xié)議?
文件傳輸協(xié)議(file Transfer Protocol, FTP) 是因特網(wǎng)上使用得最廣泛的文件傳輸協(xié)議。FTP提供交互式的訪問,允許客戶指明文件的類型與格式,并允許文件具有存取權限。它屏蔽了各計算機系統(tǒng)的細節(jié),因而適合于在異構網(wǎng)絡中的任意計算機之間傳送文件。FTP 提供以下功能: (1)提供不同種類主機系統(tǒng)(硬、軟件體系等都可以不同)之間的文件傳輸能力。 (2)以用戶權限管理的方式提供用戶對遠程FTP 服務器上的文件管理能力。 (3)以匿名FTP 的方式提供公用文件共享的能力。
FTP 采用客戶/服務器的工作方式,它使用TCP 可靠的傳輸服務。一個FTP 服務器進程可同時為多個客戶進程提供服務。FTP 的服務器進程由兩大部分組成:一個主進程,負責接收新的請求;另外有若干從屬進程,負責處理單個請求。其工作步驟如下: (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 使用客戶/服務器方式,因此負責發(fā)送郵件的SMTP 進程就是SMTP 客戶,而負責接收郵件的SMTP 進程就是SMTP 服務器。SMTP 用的是TCP 連接,端口號為25 。SMTP 通信有以下三個階段:(1) 連接建立(2) 郵件傳送(3) 連接釋放。
33.POP3
郵局協(xié)議(Post Office Protocol, POP) 是一個非常簡單但功能有限的郵件讀取協(xié)議,現(xiàn)在使用的是它的第3 個版本POP3 。POP3 采用的是“拉" (Pull) 的通信方式,當用戶讀取郵件時,用戶代理向郵件服務器發(fā)出請求,“拉”取用戶郵箱中的郵件。POP 也使用客戶/服務器的工作方式,在傳輸層使用TCP, 端口號為110 。接收方的用戶代理上必須運行POP 客戶程序,而接收方的郵件服務器上則運行POP 服務器程序。POP 有兩種工作方式:“下載并保留”和“下載并刪除"。在“下載并保留”方式下,用戶從郵件服務器上讀取郵件后,郵件依然會保存在郵件服務器上,用戶可再次從服務器上讀取該郵件;而使用“下載并刪除“方式時,郵件一旦被讀取,就被從郵件服務器上刪除,用戶不能再次從服務器上讀取。
隨著萬維網(wǎng)的流行,目前出現(xiàn)了很多基于萬維網(wǎng)的電子郵件,如Hotmail 、Gmail 等。這種電子郵件的特點是,用戶瀏覽器與Hotmail 或Gmail 的郵件服務器之間的郵件發(fā)送或接收使用的是HTTP, 而僅在不同郵件服務器之間傳送郵件時才使用SMTP
34.HTTP超文本傳輸協(xié)議?
HTTP 定義了瀏覽器(萬維網(wǎng)客戶進程)怎樣向萬維網(wǎng)服務器請求萬維網(wǎng)文檔,以及服務器怎樣把文檔傳送給瀏覽器。從層次的角度看, HTTP 是面向事務的(Transaction-oriented) 應用層協(xié)議,它規(guī)定了在瀏覽器和服務器之間的請求和響應的格式與規(guī)則,是萬維網(wǎng)上能夠可靠地交換文件(包括文本、聲音、圖像等各種多媒體文件)的重要基礎。
用戶單擊鼠標后所發(fā)生的事件按順序如下(以訪問清華大學的網(wǎng)站為例):
- 瀏覽器分析鏈接指向頁面的URL (http://www.tsinghua.edu.cn /chn/index.htm) 。
- 瀏覽器向DNS 請求解析www.tsinghuaaedu.CR 的IP 地址。-
- 域名系統(tǒng)統(tǒng)DNS 臚祈出清畢大學服務器的IP 地址。
- 瀏覽器與該服務器建立TCP 連接(默認端口號為80) 。
- 瀏覽器發(fā)出HTTP 請求: GET /chn/index.htm 。
- 服務器通過HTTP 響應把文件index.htm 發(fā)送給瀏覽器。
- TCP 連接釋放。
- 瀏覽器解釋文件index.htm, 并將Web 頁顯示給用戶。

參考文獻:
[1]謝希仁. 計算機網(wǎng)絡.第5版[M]. 電子工業(yè)出版社, 2008.
[2]王道論壇組, 王道論壇. 2015年計算機網(wǎng)絡聯(lián)考復習指導[M]. 電子工業(yè)出版社, 2014.