整理一下計算機網路部分的面試常考點,參考書籍:《計算機網路》第五版 謝希仁的那本,希望對大家有所幫助
OSI,TCP/IP,五層協議的體系結構,以及各層協議
OSI分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。物理層:通過媒介傳輸位元,確定機械及電氣規範(位元Bit)
資料鏈路層:將位元組裝成幀和點到點的傳遞(幀Frame)
網路層:負責資料包從源到宿的傳遞和網際互連(包PackeT)
傳輸層:提供端到端的可靠報文傳遞和錯誤恢復(段Segment)
會話層:建立、管理和終止會話(會話協議資料單元SPDU)
表示層:對資料進行翻譯、加密和壓縮(表示協議資料單元PPDU)
應用層:允許訪問OSI環境的手段(應用協議資料單元APDU)
IP地址的分類
A類地址:以0開頭, 第一個位元組範圍:0~127(1.0.0.0 - 126.255.255.255);
B類地址:以10開頭, 第一個位元組範圍:128~191(128.0.0.0 - 191.255.255.255);
C類地址:以110開頭, 第一個位元組範圍:192~223(192.0.0.0 - 223.255.255.255);
10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。(Internet上保留地址用於內部)
IP地址與子網掩碼相與得到主機號
ARP是地址解析協議,簡單語言解釋一下工作原理。
1:首先,每個主機都會在自己的ARP緩衝區中建立一個ARP列表,以表示IP地址和MAC地址之間的對應關係。
2:當源主機要傳送資料時,首先檢查ARP列表中是否有對應IP地址的目的主機的MAC地址,如果有,則直接傳送資料,如果沒有,就向本網段的所有主機傳送ARP資料包,該資料包包括的內容有:源主機 IP地址,源主機MAC地址,目的主機的IP 地址。
3:當本網路的所有主機收到該ARP資料包時,首先檢查資料包中的IP地址是否是自己的IP地址,如果不是,則忽略該資料包,如果是,則首先從資料包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經存在,則覆蓋,然後將自己的MAC地址寫入ARP響應包中,告訴源主機自己是它想要找的MAC地址。
4:源主機收到ARP響應包後。將目的主機的IP和MAC地址寫入ARP列表,並利用此資訊傳送資料。如果源主機一直沒有收到ARP響應資料包,表示ARP查詢失敗。
廣播傳送ARP請求,單播傳送ARP響應。
各種協議
ICMP協議: 因特網控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。
TFTP協議: 是TCP/IP協議族中的一個用來在客戶機與伺服器之間進行簡單檔案傳輸的協議,提供不復雜、開銷不大的檔案傳輸服務。
HTTP協議: 超文字傳輸協議,是一個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。
DHCP協議: 動態主機配置協議,是一種讓系統得以連線到網路上,並獲取所需要的配置引數手段。
NAT協議:網路地址轉換屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化為合法IP地址的轉換技術,
DHCP協議:一個區域網的網路協議,使用UDP協議工作,用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段。
描述:RARP
RARP是逆地址解析協議,作用是完成硬體地址到IP地址的對映,主要用於無盤工作站,因為給無盤工作站配置的IP地址不能儲存。工作流程:在網路中配置一臺RARP伺服器,裡面儲存著IP地址和MAC地址的對映關係,當無盤工作站啟動後,就封裝一個RARP資料包,裡面有其MAC地址,然後廣播到網路上去,當伺服器收到請求包後,就查詢對應的MAC地址的IP地址裝入響應報文中發回給請求者。因為需要廣播請求報文,因此RARP只能用於具有廣播能力的網路。
TCP三次握手和四次揮手的全過程
三次握手:
第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也傳送一個SYN包(syn=y),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=y+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。
握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,TCP連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,TCP 連線都將被一直保持下去。
四次握手
與建立連線的“三次握手”類似,斷開一個TCP連線則需要“四次握手”。
第一次揮手:主動關閉方傳送一個FIN,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不 會再給你發資料了(當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可 以接受資料。
第二次揮手:被動關閉方收到FIN包後,傳送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號)。
第三次揮手:被動關閉方傳送一個FIN,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。
第四次揮手:主動關閉方收到FIN後,傳送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。
在瀏覽器中輸入www.baidu.com後執行的全部過程
1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到伺服器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝資料包,輸入到網路層。
2、在客戶端的傳輸層,把HTTP會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇一個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用IP層的IP地址查詢目的端。
3、客戶端的網路層不用關係應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。
4、客戶端的鏈路層,包通過鏈路層傳送到路由器,通過鄰居協議查詢給定IP地址的MAC地址,然後傳送ARP請求查詢目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP資料包現在就可以傳輸了,然後傳送IP資料包到達伺服器的地址。
TCP和UDP的區別?
TCP提供面向連線的、可靠的資料流傳輸,而UDP提供的是非面向連線的、不可靠的資料流傳輸。
TCP傳輸單位稱為TCP報文段,UDP傳輸單位稱為使用者資料包。
TCP注重資料安全性,UDP資料傳輸快,因為不需要連線等待,少了許多操作,但是其安全性卻一般。
TCP對應的協議和UDP對應的協議
TCP對應的協議:
(1) FTP:定義了檔案傳輸協議,使用21埠。
(2) Telnet:一種用於遠端登陸的埠,使用23埠,使用者可以以自己的身份遠端連線到計算機上,可提供基於DOS模式下的通訊服務。
(3) SMTP:郵件傳送協議,用於傳送郵件。伺服器開放的是25號埠。
(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110埠。
(5)HTTP:是從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。
UDP對應的協議:
(1) DNS:用於域名解析服務,將域名地址轉換為IP地址。DNS用的是53號埠。
(2) SNMP:簡單網路管理協議,使用161號埠,是用來管理網路裝置的。由於網路裝置很多,無連線的服務就體現出其優勢。
(3) TFTP(Trival File Tran敏感詞er Protocal),簡單檔案傳輸協議,該協議在熟知埠69上使用UDP服務。
DNS域名系統,簡單描述其工作原理。
當DNS客戶機需要在程式中使用名稱時,它會查詢DNS伺服器來解析該名稱。客戶機傳送的每條查詢資訊包括三條資訊:包括:指定的DNS域名,指定的查詢型別,DNS域名的指定類別。基於UDP服務,埠53. 該應用一般不直接為使用者使用,而是為其他應用服務,如HTTP,SMTP等在其中需要完成主機名到IP地址的轉換。
面向連線和非面向連線的服務的特點是什麼?
面向連線的服務,通訊雙方在進行通訊之前,要先在雙方建立起一個完整的可以彼此溝通的通道,在通訊過程中,整個連線的情況一直可以被實時地監控和管理。
非面向連線的服務,不需要預先建立一個聯絡兩個通訊節點的連線,需要通訊的時候,傳送節點就可以往網路上傳送資訊,讓資訊自主地在網路上去傳,一般在傳輸的過程中不再加以監控。
TCP的三次握手過程?為什麼會採用三次握手,若採用二次握手可以嗎?
答:建立連線的過程是利用客戶伺服器模式,假設主機A為客戶端,主機B為伺服器端。
(1)TCP的三次握手過程:主機A向B傳送連線請求;主機B對收到的主機A的報文段進行確認;主機A再次對主機B的確認進行確認。
(2)採用三次握手是為了防止失效的連線請求報文段突然又傳送到主機B,因而產生錯誤。失效的連線請求報文段是指:主機A發出的連線請求沒有收到主機B的確認,於是經過一段時間後,主機A又重新向主機B傳送連線請求,且建立成功,順序完成資料傳輸。考慮這樣一種特殊情況,主機A第一次傳送的連線請求並沒有丟失,而是因為網路節點導致延遲達到主機B,主機B以為是主機A又發起的新連線,於是主機B同意連線,並向主機A發回確認,但是此時主機A根本不會理會,主機B就一直在等待主機A傳送資料,導致主機B的資源浪費。
(3)採用兩次握手不行,原因就是上面說的實效的連線請求的特殊情況。
埠及對應的服務?
服務 |
埠號 |
服務 |
埠號 |
FTP |
21 |
SSH |
22 |
telnet |
23 |
SMTP |
25 |
Domain(域名伺服器) |
53 |
HTTP |
80 |
POP3 |
110 |
NTP(網路時間協議) |
123 |
MySQL資料庫服務 |
3306 |
Shell或 cmd |
514 |
POP-2 |
109 |
SQL Server |
1433 |
IP資料包的格式
IP資料包由首部 和資料 兩部分組成。首部由固定部分和可選部分 組成。首部的固定部分有 20 位元組。可選部分的長度變化範圍為1——40位元組。固定部分的欄位:
欄位名 |
位數(bit) |
欄位名 |
位數 |
版本 |
4 Ipv4 |
首部長度 |
4(表示的最大數為15個單位,一個單位表示4位元組) |
服務型別 |
8 以前很少用 |
總長度 |
16 (首部和資料部分的總長度,因此資料包的最大長度為65535位元組,即64KB,但是由於鏈路層的MAC都有一定的最大傳輸單元,因此IP資料包的長度一般都不會有理論上的那麼大,如果超出了MAC的最大單元就會進行分片) |
標識 |
16 (相同的標識使得分片後的資料包片能正確的重灌成原來的資料包) |
標誌 |
3 (最低位MF=1表示後面還有分片,MF=0表示這是若干個資料包片的最後一箇中間位DF=0才允許分片) |
片偏移 |
片偏移指出較長的分組在分片後,某片在原分組中的相對位置,都是8位元組的偏移位置 |
生存時間 |
資料包在網路中的生存時間,指最多經過路由器的跳數 |
協議 |
8 (指出該資料包攜帶的資料是何種協議,以使得目的主機的IP層知道應將資料部分上交給哪個處理程式)如ICMP=1 IGMP=2 TCP=6 EGP=8 IGP=9 UDP=17 Ipv6=41 OSPF=89 |
首部校驗和 |
這個部分只校驗首部,不包括資料部分,計算方法:將首部劃分為多個16位的部分,然後每個16位部分取反,然後計算和,再將和取反放到首部校驗和。接收方收到後按同樣的方法劃分,取反,求和,在取反,如果結果為零,則接收,否則就丟棄 |
源地址 |
32 |
目的地址 |
32 |
TCP資料包的格式?
一個TCP報文段分為首部和資料兩部分。首部由固定部分和選項部分組成,固定部分是20位元組。TCP首部的最大長度為60。首部固定部分欄位:
欄位名 |
位元組(Byte) |
欄位名 |
位元組(Byte) |
源埠 |
2 |
目的埠 |
2 |
序號 |
4 |
確認號 |
4,是期望收到對方的下一個報文段的資料的第一個位元組的序號 |
資料偏移 |
4bit 指出TCP報文段的資料起始處距離TCP報文段的起始有多遠 |
保留 |
6bit |
緊急位元URG |
確認位元ACK |
只有當ACK=1時,確認號欄位才有效 |
|
推送位元PSH |
復位位元RST |
||
同步位元SYN |
終止位元FIN |
||
視窗 |
2 |
檢驗和 |
2 (包括首部和資料兩部分,同時還要加12位元組的偽首部進行校驗和計算) |
選項 |
長度可變(範圍1——40) |
TCP的12位元組偽首部:
源IP地址(4) |
目的IP地址(4) |
0 (1) |
6(1) 代表這是TCP,IP協議中提到過 |
TCP長度(2) |
TCP資料包的格式?
使用者資料包UDP由首部和資料部分組成。首部只有8個位元組,由4個欄位組成,每個欄位都是兩個位元組。
欄位名 |
位元組 |
欄位名 |
位元組 |
源埠 |
2 |
目的埠 |
2 |
長度 |
2 |
檢驗和 |
2 (檢驗首部和資料,加12位元組的偽首部) |
UDP的12位元組偽首部:
源IP地址(4) |
目的IP地址(4) |
0 (1) |
17(1) 代表這是UDP |
UDP長度(2) |
乙太網MAC幀格式?
前導碼 | 前定界符 | 目的地址 | 源目的地址 | 長度欄位 | 資料欄位 | 校驗欄位 |
7B | 1B | 6B | 6B | 2B | 46-1500 | 4B |
瞭解交換機、路由器、閘道器的概念,並知道各自的用途
1)交換機
在計算機網路系統中,交換機是針對共享工作模式的弱點而推出的。交換機擁有一條高頻寬的背部匯流排和內部交換矩陣。交換機的所有的埠都掛接在這條背 部匯流排上,當控制電路收到資料包以後,處理埠會查詢記憶體中的地址對照表以確定目的MAC(網路卡的硬體地址)的NIC(網路卡)掛接在哪個埠上,通過內部 交換矩陣迅速將資料包傳送到目的埠。目的MAC若不存在,交換機才廣播到所有的埠,接收埠迴應後交換機會“學習”新的地址,並把它新增入內部地址表 中。
交換機工作於OSI參考模型的第二層,即資料鏈路層。交換機內部的CPU會在每個埠成功連線時,通過ARP協議學習它的MAC地址,儲存成一張 ARP表。在今後的通訊中,發往該MAC地址的資料包將僅送往其對應的埠,而不是所有的埠。因此,交換機可用於劃分資料鏈路層廣播,即衝突域;但它不 能劃分網路層廣播,即廣播域。
交換機被廣泛應用於二層網路交換,俗稱“二層交換機”。
交換機的種類有:二層交換機、三層交換機、四層交換機、七層交換機分別工作在OSI七層模型中的第二層、第三層、第四層盒第七層,並因此而得名。
2)路由器
路由器(Router)是一種計算機網路裝置,提供了路由與轉送兩種重要機制,可以決定資料包從來源端到目的端所經過 的路由路徑(host到host之間的傳輸路徑),這個過程稱為路由;將路由器輸入端的資料包移送至適當的路由器輸出端(在路由器內部進行),這稱為轉 送。路由工作在OSI模型的第三層——即網路層,例如網際協議。
路由器的一個作用是連通不同的網路,另一個作用是選擇資訊傳送的線路。 路由器與交換器的差別,路由器是屬於OSI第三層的產品,交換器是OSI第二層的產品(這裡特指二層交換機)。
3)閘道器
閘道器(Gateway),閘道器顧名思義就是連線兩個網路的裝置,區別於路由器(由於歷史的原因,許多有關TCP/IP 的文獻曾經把網路層使用的路由器(Router)稱為閘道器,在今天很多區域網採用都是路由來接入網路,因此現在通常指的閘道器就是路由器的IP),經常在家 庭中或者小型企業網路中使用,用於連線區域網和Internet。 閘道器也經常指把一種協議轉成另一種協議的裝置,比如語音閘道器。
在傳統TCP/IP術語中,網路裝置只分成兩種,一種為閘道器(gateway),另一種為主機(host)。閘道器能在網路間轉遞資料包,但主機不能 轉送資料包。在主機(又稱終端系統,end system)中,資料包需經過TCP/IP四層協議處理,但是在閘道器(又稱中介系 統,intermediate system)只需要到達網際層(Internet layer),決定路徑之後就可以轉送。在當時,閘道器 (gateway)與路由器(router)還沒有區別。
在現代網路術語中,閘道器(gateway)與路由器(router)的定義不同。閘道器(gateway)能在不同協議間移動資料,而路由器(router)是在不同網路間移動資料,相當於傳統所說的IP閘道器(IP gateway)。
閘道器是連線兩個網路的裝置,對於語音閘道器來說,他可以連線PSTN網路和乙太網,這就相當於VOIP,把不同電話中的模擬訊號通過閘道器而轉換成數字訊號,而且加入協議再去傳輸。在到了接收端的時候再通過閘道器還原成模擬的電話訊號,最後才能在電話機上聽到。
對於乙太網中的閘道器只能轉發三層以上資料包,這一點和路由是一樣的。而不同的是閘道器中並沒有路由表,他只能按照預先設定的不同網段來進行轉發。閘道器最重要的一點就是埠對映,子網內使用者在外網看來只是外網的IP地址對應著不同的埠,這樣看來就會保護子網內的使用者。