1. 程式人生 > >大廠春招面試題(五)計算機網路

大廠春招面試題(五)計算機網路

        個人覺得如果要達到計算機大牛,無論主攻那個技術領域,計算機網路中一些解決問題的思想都能夠讓你受益頗深。

1.  OSI與TCP/IP各層的結構與功能,都有哪些協議。 

下層向上層提供服務。

TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為:

應用層:應用程式間溝通的層,如簡單電子郵件傳輸(SMTP)、檔案傳輸協議(FTP)、網路遠端訪問協議(Telnet),HTTP等。

傳輸層:在此層中,它提供了節點間的資料傳送服務,如傳輸控制協議(TCP)、使用者資料報協議(UDP)等,TCP和UDP給資料包加入傳輸資料並把它傳輸到下一層中,這一層負責傳送資料,並且確定資料已被送達並接收。

互連網層:負責提供基本的資料封包傳送功能,讓每一塊資料包都能夠到達目的主機(但不檢查是否被正確接收),如IP,ICMP。整個網路體系結構貫穿在一起的關鍵層。。

鏈路層:如何兩臺直接相連的計算機之間傳送有限長度的訊息,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送資料。主機與傳輸線路的一個介面。

OSI 七層模型是一種框架性的設計方法,建立七層模型的主要目的是為解決異種網路互連時所遇到的相容性問題,它的最大優點是將服務、介面和協議這三個概念明確地區分開來,通過七個層次化的結構模型使不同的系統不同的網路之間實現可靠的通訊。

應用層:APDU。應用閘道器。包含使用者通常需要的幾種協議:HTTP

SMTPRTPDNS協議。

表示層:PPDU。定義傳遞資訊的語法和語義,不同計算機內部有不同的資料表示法,讓他們能夠進行通訊,定義交換的資料結構。

會話層:SPDU。用於不同機器的使用者建立會話。

傳輸層:報文。傳輸閘道器。必要時把從上層接收的資料分割成更小的單元,並傳遞給網路層。是真正的端到端的層。傳輸層服務的物件通常是應用層的程序,完成傳輸層功能的稱為傳輸實體,既可以是軟體也可以是硬體,比如主機的一個位置或者作業系統核心等。TCPUDP協議)。

網路層:資料包,路由器。向從傳輸層獲取的報文新增一個網路層頭封裝成資料包。IPv4資料包的地址是32位,IPv6資料包的地址128位。在大多數網路中,資料包需要經過多跳才能到達目的地,所以網路層使用路由演算法解決。路由器必須針對每一個數據包選擇最佳路由,因為自上一次選擇路徑之後,最佳路徑可能已經改變。包括最短路徑演算法,泛洪演算法等。

IPICMP協議)。網路中如果存在太多資料包將導致資料包被延遲或者丟失,這種情況成為擁塞。控制擁塞最好的辦法是減少傳輸層注入網路層的負載。如果源主機和目的主機所在的網路型別完全相同,但他們中間卻隔著一個不同型別的網路,解決的辦法就是隧道技術。隧道常用於連線因使用其他網路而被隔離的主機和網路,生成一個新的網路覆蓋在基礎網路上層。

資料鏈路層:幀。網絡卡,網橋,交換機(現代網橋)。關注如何把原始的傳輸設施變成沒有漏檢傳輸錯誤的線路連線兩臺機器。從網路層接收資料包,新增幀頭、幀尾和有效載荷,封裝成幀。為網路層提供服務,主要就是將資料從源機器的網路層傳送到目的機器的網路層。如果通道上存在噪聲,物理層傳給資料鏈路層的某些位元可能已經發生了變化,資料鏈路層就需要進行差錯檢測和糾正(海明碼,奇偶校驗碼,校驗和等),因為資料鏈路層向物理層提供的是幀,他同樣要把物理層接收的位元流拆分成幀,中間涉及到幀頭幀尾的識別(位元組填充的標誌位元組法,位元填充的標誌位元組法。。。)。識別成幀之後還需要保證順序無差錯的傳遞給網路層。為了保證傳送方傳送幀的速度沒有超過接收方接收的速度,還需要進行流量控制(一種是向傳送發發送資訊允許傳送,一種是限制傳送方傳送速率,前者的方案可以出現在更高層次)。相關協議:單工停-等協議(傳送發發送一幀,等待對方確認到達之後才能繼續傳送);滑動視窗協議(包括一位滑動視窗協議,回退N幀協議和選擇重傳協議);滑動視窗協議:傳送方始終維持一組序號,對應於允許他傳送的幀,把這些幀放到傳送視窗內;接收方也維持一組序號,對應等待他接收的幀。對傳送方而言,當有新的資料包從網路層到來,視窗的上邊界前移一格,當收到一個確認時,下邊界也前移一格,這樣視窗始終維持的是未被確認的幀。傳送方必須在記憶體中儲存所有的幀,以便滿足重傳的需要。回退N幀協議保證資料鏈路層遞交給網路層幀的順序是準確無誤的,所以接收方的資料鏈路層只會接收要傳送給網路層的下一幀,當傳送方傳送了N個幀後,若發現該N幀的前一個幀在計時器超時後仍未返回其確認資訊,則該幀被判為出錯或丟失,此時傳送方重新發送出錯幀及其後的N幀,其他幀接收方都會拒絕。並且對於這些丟棄的幀不返回確認。選擇重傳ARQ協議:為了進一步提高通道的利用率,可設法只重傳出現差錯的資料幀或者是定時器超時的資料幀。但這時必須加大接收視窗,以便先收下發送序號不連續但仍處在接收視窗中的那些資料幀。等到所缺序號的資料幀收到後再一併送交主機。這就是選擇重傳ARQ協議。使用選擇重傳ARQ協議可以避免重複傳送那些本來已經正確到達接收端的資料幀。但我們付出的代價是在接收端要設定具有相當容量的快取空間,這在許多情況下是不夠經濟的。他還有一個介質訪問控制子層(MAC)介質訪問控制子層:多方競爭單個通道使用權時如何分配的協議就在MAC層。多路複用:把單個通道的容量拆分給多個使用者使用比如(頻分多路複用,每個使用者有專用的頻段)。載波偵聽協議:站監聽是否存在載波(是否有傳輸),並據此採取相應的動作。1-堅持載波檢測多路黨文(CMSA):當有一個站需要傳送資料時他首先監聽通道,如果通道空閒他就傳送資料,否者如果通道忙,該站等待直到通道空閒,然後站傳送一幀,如果發生衝突,該站等待一段隨機時間在從頭重複上述過程。因為該站發現通道空閒時傳輸資料的概率為1,所以叫1-堅持。非堅持CMSA是如果需要傳送資料先偵聽通道,如果監聽到通道忙,該站並不對通道持續監聽,而是等待一段時間重複以上步驟。帶衝突檢測的CMSA(CMSA/CD):前面兩種CMSA如果兩個站同時開始傳輸,他們的訊號會產生衝突,通過CMSA/CD協議,站快速檢測到發生了衝突並立即停止傳輸幀。通道分配解決後就是實際應用了:乙太網(802.3)和無線區域網(802.11)。乙太網分為經典乙太網和交換式乙太網(乙太網的乙太網,高速率)。現在只有後者。幀的長度最大1518位元組長,最小64位元組長。因為無線電是半雙工的,不能在同一頻率上傳輸的同時偵聽該頻率上的突發噪聲,為了避免衝突,802.11使用帶有衝突避免的CSMA(CSMA/CA):在傳送前偵聽通道和檢測到衝突後指數回退。許多組織有多個區域網,通過網橋就可以將這些區域網連線起來。即網橋工作在資料鏈路層。每個網橋配備一個大的雜湊表,表裡面列出每個可能的目的地以及他隸屬的輸出埠。網橋第一次接入網路的時候使用泛洪演算法填充雜湊表。

物理層:位元。中繼器,集線器。雙絞線,同軸電纜,光纖。。。如何在不同的介質上以電氣訊號傳輸位元。

2.  TCP與UDP的區別。 

TCP(Transmission ControlProtocol,傳輸控制協議)是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線(三次握手)。一個TCP連線必須要經過三次“對話”才能建立起來。三次“對話”的目的是使資料包的傳送和接收同步,經過三次“對話”之後,主機A才向主機B正式傳送資料。

UDP(User Data Protocol,使用者資料報協議)是與TCP相對應的協議。它是面向非連線的協議,它不與對方建立連線,而是直接就把資料包傳送過去! UDP適用於一次只傳送少量資料、對可靠性要求不高的應用環境。正因為UDP協議沒有連線的過程,所以它的通訊效果高;但也正因為如此,它的可靠性不如TCP協議高。QQ就使用UDP發訊息,因此有時會出現收不到訊息的情況。

tcp協議和udp協議的差別

TCP           UDP

是否連接面向連線    面向非連線

傳輸可靠性可靠        不可靠

應用場合傳輸大量資料 少量資料

速度       慢             快

3.  TCP報文結構。 



4.  TCP的三次握手(建立連線)與四次揮手(斷開連線)過程,各個狀態名稱與含義,TIMEWAIT的作用。 

TCP報文中有幾個欄位需要重點介紹下:

       (1)序號:Seq序號,佔32位,用來標識從TCP源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。

       (2)確認序號:Ack序號,佔32位,只有ACK標誌位為1時,確認序號欄位才有效,Ack=Seq+1。

       (3)標誌位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:

                (A)URG:緊急指標(urgentpointer)有效。

                (B)ACK:確認序號有效。

                (C)PSH:接收方應該儘快將這個報文交給應用層。

                (D)RST:重置連線。

                (E)SYN:發起一個新連線。

                (F)FIN:釋放一個連線。

       需要注意的是:

                (A)不要將確認序號Ack與標誌位中的ACK搞混了

                (B)確認方Ack=發起方Req+1,兩端配對。

(1)第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Server確認。

(2)第二次握手:Server收到資料包後由標誌位SYN=1知道Client請求建立連線,Server將標誌位SYN和ACK都置為1,ack (number)=J+1,隨機產生一個值seq=K,並將該資料包傳送給Client以確認連線請求,Server進入SYN_RCVD狀態

(3)第三次握手:Client收到確認後,檢查ack是否為J+1,ACK是否為1,如果正確則將標誌位ACK置為1,ack=K+1,並將該資料包傳送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連線建立成功,ClientServer進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸資料了


需要客戶端和服務端總共傳送4個包以確認連線的斷開

(1)第一次揮手:Client傳送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀態。

  (2)第二次揮手:Server收到FIN後,傳送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。

 (3)第三次揮手:Server傳送一個FIN,用來關閉Server到Client的資料傳送,Server進入LAST_ACK狀態。

  (4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著傳送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。

為什麼連線的時候是三次握手,關閉的時候卻是四次握手?

答:因為當Server端收到Client端的SYN連線請求報文後,可以直接傳送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連線時,當Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能傳送FIN報文,因此不能一起傳送。故需要四步握手。


5.  TCP擁塞控制。 

當提供給任何網路的負載超過他的處理能力時,擁塞便會產生。當路由器上的佇列增長到很大時網路層檢測到擁塞,網路層會通過丟棄資料包來緩解擁塞,傳輸層會受到網路層返回回來的擁塞資訊並減慢他傳送到網路的流量速率。TCP的擁塞控制會維持一個擁塞視窗,視窗大小是任何時候傳送端可以往網路傳送的位元組數。那速率就是視窗大小除以連線的往返時間了。除了一個擁塞視窗還要維護一個流量控制視窗,流量控制視窗指出了接收端可以緩衝的位元組數,要併發跟蹤這兩個視窗,可能傳送的位元組數是這兩個視窗中較小的那個。

慢速啟動演算法:該演算法是一個線性增長和乘法增長相混合的方法。當建立連線時,傳送端初始化一個很小的擁塞視窗,然後傳送方傳送初始視窗大小的資料,如果有一個段在計時器超時前得到確認,那麼視窗就增加一個段的位元組量,每經過一個往返時間視窗就增加一倍。雖然叫慢速啟動演算法,但是他以指數增長,可以說並不慢。由於慢速啟動導致擁塞視窗按指數增長,最終會出現他將太多的資料包以過快的速度發到網路,在路由器上產生佇列,因為他們傳遞到接收端的速度不夠快所以會發生丟包和擁塞。所以傳送端為了控制慢啟動演算法會為每個連線維持一個慢啟動閾值,擁塞視窗會不斷增大直到擁塞視窗大小超過閾值或者接收端視窗滿。當擁塞視窗到達閾值,TCP就從慢速啟動(指數增大)切換到線性增大,即每經過一個往返時間擁塞視窗只增加一段,但是增長的結果仍然是擁塞視窗過大導致丟包,每當檢測到丟包(超時),慢啟動閾值就會設定為當前擁塞視窗的一半,整個過程在重新啟動。

傳送端如何發現丟包了呢?當一個數據包的後續包在該資料包之前達到接收端時,接收端就會被觸發傳送一些具有相同確認號的確認段,稱為重複確認。因為包會選擇網路中不同的路徑,所以他們確實可能沒按一定順序到達接收端,不過仍然會發送重複確認。當收到三個重複確認即使計時器沒有超時,被認為丟棄的包也會被重傳。這種啟發機制稱為快速重傳。重傳就像丟包一樣,閾值設為當前擁塞視窗的一半,擁塞視窗大小設為一個包,慢啟動重頭開始。如下所示:


但這是88年釋出的4.2BSD TCP Tahoe。

90年釋出的4.3BSD TCP Tahoe加入了快速恢復機制。把擁塞視窗快速重傳時視窗大小減半,而不是變為1。丟包後每個往返時間擁塞視窗減半,每收到一個重複確認都會發送一個新的包,快速重傳一個往返時間後丟失的包將被確認,快速回復結束,擁塞視窗設定帶一個新的慢啟動閾值,並開始按線性增長,避免了慢速啟動。後來發生丟包再快速恢復。

6.  TCP滑動視窗與回退N針協議。 

當接收端視窗滿了的時候,傳送端停止傳送,等待接收主機上的應用程序從緩衝區取走一些資料。到那時候TCP實體可以向傳送端宣告一個更大的視窗,傳送端才可以繼續傳送資料。但這裡有兩種特殊情況:1.緊急資料仍可以傳送比如允許使用者殺死遠端主機的一個程序。2.傳送端可以傳送一個位元組的段以便強制接收端告知下一個期望的位元組和視窗大小,這種資料包稱為視窗探測。

7. Http的報文結構。 

8. Http的狀態碼含義。 

http://www.cnblogs.com/Yiaos/p/6279058.html

9. Http request的幾種型別。 

HTTP協議中共定義了八種方法或者叫“動作”來表明對請求URI指定的資源的不同操作方式,具體介紹如下:

OPTIONS:返回伺服器針對特定資源所支援的HTTP請求方法。也可以向Web伺服器傳送'*'的請求來測試伺服器的功能性。

HEAD:得到和GET請求一樣的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,獲取包含在響應訊息頭中的元資訊。

GET:向特定的資源發出請求。

POST:向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。

PUT:向指定資源位置上傳其最新內容。

DELETE:請求伺服器刪除Request-URI所標識的資源。

TRACE:回顯伺服器收到的請求,主要用於測試或診斷。

CONNECT:HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。

   雖然HTTP的請求方式有8種,但是我們在實際應用中常用的也就是get和post,其他請求方式也都可以通過這兩種方式間接的來實現。

10. Http1.1和Http1.0的區別 

11. Http怎麼處理長連線。 

http://www.cnblogs.com/0201zcr/p/4694945.html

12. Cookie與Session的作用和原理。 

cookie指的就是瀏覽器裡面能永久儲存的一種資料。僅僅是瀏覽器實現的一種資料儲存功能。HTTP1.0協議是無狀態的協議。一旦資料交換完畢,客戶端與伺服器端的連線就會關閉,再次交換資料需要建立新的連線。這就意味著伺服器無法從連線上跟蹤會話。要跟蹤該會話,必須引入一種機制。Cookie就是這樣的一種機制。它可以彌補HTTP協議無狀態的不足。在Session出現之前,基本上所有的網站都採用Cookie來跟蹤會話。Cookie實際上是一小段的文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發一個Cookie,以便給每個客戶端分配不同的“身份標識”。客戶端瀏覽器會把Cookie儲存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認使用者狀態,送出特定的網頁內容給你。伺服器還可以根據需要修改Cookie的內容。

session就是會話。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查詢該客戶的狀態就可以了。Session相當於程式在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。當程式需要為某個客戶端的請求建立一個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了一個session標識(稱為session id),如果已包含則說明以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端建立一個session並且生成一個與此session相關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字串,這個session id將被在本次響應中返回給客戶端儲存。儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識傳送給伺服器。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時,仍然能夠把session id傳遞迴伺服器。

具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。

13. 電腦上訪問一個網頁,整個過程是怎麼樣的:DNS、HTTP、TCP、OSPF、IP、ARP。(可以結合下面PING的過程,但不完全一樣)

網路層四個主要的協議:   

網際協議IP:負責在主機和網路之間定址和路由資料包。

地址解析協議ARP已經知道了一個主機的IP地址,需要找到其對應的實體地址。因為將IP資料報封裝到MAC幀裡面的時候需要知道目的地址的MAC地址。地址解析協議ARP的作用就是根據主機的IP地址來獲得實體地址。每個主機都設有一個ARP快取記憶體(ARP cache),這裡面放著的是主機已經知道的IP地址和MAC地址的對映表,並且這個對映表還是經常動態更新的。也有可能在ARP快取記憶體中查不到主機B的IP地址(主機A快取為空,或主機B剛加入區域網),這樣也就無法知道主機B的MAC地址,這時候就需要使用到ARP了,按以下步驟來獲得主機B的硬體地址。

①主機A的ARP程序在本區域網上廣播發送一個ARP請求分組,以廣播的形式

②在本區域網上的所有主機上執行的ARP程序都受到了這個ARP請求分組。

③主機B在ARP請求分組中發現了自己的IP地址,就向A主機發送ARP響應分組,以單播的形式直接發給A。同時主機B知道了A的IP地址和MAC地址,就將主機A的IP地址和MAC地址寫入ARP快取記憶體中。其他主機在對比IP地址之後,發現與自己的IP地址不同,就丟掉分組。

④主機A收到主機B的ARP響應分組之後,這樣就知道了主機B的MAC地址,同時把主機B的IP地址和MAC地址寫入ARP快取記憶體。

如果主機A和主機B進行不在同一個區域網。首先主機A將主機B的IP地址同自己的子網掩碼進行比對,發現不在同一區域網內,則利用ARP請求分組,根本區域網上的路由器的IP地址來獲取路由器的MAC地址,然後將剩下的工作交給路由器去做即可。

2)ARP的四種典型情況

①傳送方是主機,要把IP資料報傳送到本網路上的另一個主機。這時利用ARP找到目的主機的硬體地址。

②傳送方是主機,要把IP資料報傳送到另一個網路上的一個主機。這時利用ARP找到本網速上的一個路由器的硬體地址,然後把剩下的工作交給路由器去完成。

③傳送方是路由器,要把IP資料報傳送到另一個網路上的一個主機。這時利用ARP找到本網路上的另一個路由器的硬體地址,然後把剩下的工作交個這個路由器去完成。

④傳送方是路由器,要把IP資料報傳送到本網路上的一個主機。這時利用ARP找到目的主機的硬體地址。

網際控制訊息協議ICMPICMP是TCP/IP協議族的一個子協議,工作在網路互聯層(網路層)。ICMP協議是一種面向無連線的協議,用於傳輸出錯報告控制資訊。用於在IP主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料,但是對於使用者資料的傳遞起著重要的作用。ICMP的一個重要應用就是分組網間探測PING(Packe InterNet Groper),用來測試主機之間的連通性。PING使用了ICMP回送請求與回送回答報文。PING是應用層直接使用網路層ICMP的一個例子,沒有經過傳輸層的TCP或UDP。

互聯組管理協議IGMP被IP主機拿來向本地多路廣播路由器報告主機組成員。

該層裝置有三層交換機,路由器。

http://blog.csdn.net/guoweimelon/article/details/50865642

14. Ping的整個過程。ICMP報文是什麼。 

ping某個域名相對於ping IP地址來說,多了一些步驟,主要用來獲取域名對應的IP地址,整個過程如下:

1、主機查詢本地系統Hosts檔案的DNS快取,如果存在該域名對應的IP,則獲取IP,跳轉到第8步;如果不存在,則繼續。

2、主機向本網路路由器發起請求,查詢路由DNS快取,如果存在該域名對於的IP,則獲取IP,跳轉到第8步;如果不存在,則繼續。

3、路由器向本地ISP(網際網路提供商)的DNS伺服器發起請求,查詢DNS伺服器的快取,如果存在該域名對應的IP,則跳轉到第7步;如果不存在,則繼續。

4、本地DNS伺服器向根域名伺服器發起請求,根域名伺服器告訴本地伺服器,下一次應查詢的頂級域名伺服器dns.com的IP地址。

5、本地域名伺服器向頂級域名伺服器dns.com進行查詢,頂級域名伺服器dns.com告訴本地域名伺服器,下一步應查詢的許可權伺服器dns.abc.com的IP地址。

6、本地域名伺服器向許可權域名伺服器dns.abc.com進行查詢,許可權域名伺服器dns.abc.com告訴本地域名伺服器,所查詢的主機的IP地址。 

7、本地域名伺服器最後把查詢結果——該域名對應的IP地址告訴給主機。

8、至此,主機知道了該域名的IP地址。

----------------------------------(以上部分主要是根據域名獲取對應的IP地址,涉及DNS)-----------------------------------

9、主機通過子網掩碼判斷該IP地址是本網段還是跨網段,由於本網段比較簡單,我們以跨網段進行講解。

10、主機先檢視本地ARP快取記憶體,查看錶中是否有本網路路由器(閘道器)的MAC地址,如果有,則獲取MAC地址,跳轉到第12步;如果沒有,則繼續。

11、主機使用ARP解析協議獲取到本網段路由的MAC地址。

12、至此,主機知道本網路一個路由的MAC地址。

---------------------------------(以上部分主要是獲取本網路一個路由的MAC地址,涉及ARP)-----------------------------

13、主機將ICMP報文封裝成IP資料報,IP資料報的源地址為主機的IP地址,目的地址是域名對應的IP地址;

14、主機將IP資料報封裝成MAC幀,MAC幀的源地址為主機的MAC地址,目的地址是路由器的MAC地址;

12、路由器接收到ICMP報文之後,發現MAC幀的目的地址是自己,IP地址是主機想要訪問的IP地址,則將MAC幀的源地址改為自己的MAC地址,目的地址改為本網段另一個路由的MAC地址(也要通過ARP協議獲取),轉發下去...

13、直到最後一個路由根據ARP協議,找到了主機想要訪問的IP地址對應的主機的MAC地址,然後將ICMP報文封裝成MAC幀傳送給該域名主機。

14、由於ARP協議具有相互學習性,域名主機接收到主機發送的ICMP回送請求報文之後,將向本網路路由傳送ICMP回送回答報文,該路由又會轉發下去...

15、當主機收到域名主機發送的ICMP回送回答報文之後,這樣就表明該主機到域名主機是連通可達的。

15. C/S模式下使用socket通訊,幾個關鍵函式。 

見部落格

16. IP地址分類。 

http://blog.csdn.net/panjunnn/article/details/5653388/

17. 路由器與交換機區別。 

路由器和交換機,二者區別如下:

1,路由器工作於網路層,能夠識別IP地址,並根據IP地址轉發資料包,並維護著路由表,能夠基於路由表進行最佳路線選擇;

2,路由器上還能開啟ACL訪問控制列表、NAT地址轉換等功能,擴充套件網路應用,;

3,傳統交換機工作於資料鏈路層,能夠識別MAC地址,根據MAC地址轉發資料幀,並維護著一張橋表,根據橋表上MAC地址和埠的對應關係進行資料幀轉發。

4,交換機能夠隔離衝突域,並劃分VLAN。