計算機網路面試的常見問題

2021-09-27 07:35:01 字數 3866 閱讀 3918

osi(應用層,表示層,會話層,傳輸層,網路層,資料鏈路層,物理層) 7層

tcp/ip(應用層,傳輸層,網路層,資料鏈路層) 4層

每一層的協議如下:分五類,由32bit(4bytes)組成,點分十進位制。

e類位址

http特點:

無連線:http/1.1之前,由於無狀態特點,每次請求需要通過tcp三次握手四次揮手,和伺服器重新建立連線。比如某個客戶機在短時間多次請求同乙個資源,伺服器並不能區別是否已經響應過使用者的請求,所以每次需要重新響應請求,需要耗費不必要的時間和流量。

基於請求和響應:基本的特性,由客戶端發起請求,服務端響應

簡單快速、靈活

通訊使用明文、請求和響應不會對通訊方進行確認、無法保護資料的完整性

http協議傳輸資料以明文形式顯示

https特點:

基於http協議,通過ssl或tls提供加密處理資料、驗證對方身份以及資料完整性保護

特點:

區別:三次握手:

說明:1)syn和ack是標誌位(0/1)(ack=1表明ack有效),seq是序列號,ack是確認號。

2)給對方的確認方式就是把對方傳來的seq+1並賦給ack。

為什麼需要三次握手呢?為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。

比如:client發出的第乙個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是乙個早已失效的報文段,但是server收到此失效的連線請求報文段後,就誤認為是client再次發出的乙個新的連線請求,於是就向client發出確認報文段,同意建立連線。假設不採用「三次握手」,那麼只要server發出確認,新的連線就建立了,由於client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料,但server卻以為新的運輸連線已經建立,並一直等待client發來資料。所以沒有採用「三次握手」,這種情況下server的很多資源就白白浪費掉了。

四次揮手:

說明:1)syn攻擊 用眾多偽造ip位址向伺服器傳送syn=1(請求連線),讓伺服器處於syn-rcvd狀態,但都無法第三次握手(因為偽造ip不存在)

2)4次揮手中的fin就相當於三次握手中的syn。

3)序號seq,確認序號ack,確認標誌位ack作用還是一樣的,就是確認作用(把seq加上1賦給ack,並把ack置1)

4)為什麼乙個3次1個4次不一樣?

因為兩端的資料並不是同時傳送完,所以兩端誰傳送完資料都需要自己告訴對方一次,並且對方確認一次。

為什麼需要四次揮手呢?

tcp是全雙工模式,當client發出fin報文段時,只是表示client已經沒有資料要傳送了,client告訴server,它的資料已經全部傳送完畢了;但是,這個時候client還是可以接受來server的資料;當server返回ack報文段時,表示它已經知道client沒有資料傳送了,但是server還是可以傳送資料到client的;當server也傳送了fin報文段時,這個時候就表示server也沒有資料要傳送了,就會告訴client,我也沒有資料要傳送了,如果收到client確認報文段,之後彼此就會愉快的中斷這次tcp連線。

客戶端瀏覽器通過dns解析到www.baidu.com的ip位址220.181.27.48,通過這個ip位址找到客戶端到伺服器的路徑。客戶端瀏覽器發起乙個http會話到220.161.27.48,然後通過tcp進行封裝資料報,輸入到網路層。

在客戶端的傳輸層(新增tcp頭),把http會話請求分成報文段,新增源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇乙個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用ip層的ip位址查詢目的端。

客戶端的網路層(新增ip頭)不用關係應用層或者傳輸層的東西,主要做的是通過查詢路由表確定如何到達伺服器,期間可能經過多個路由器,這些都是由路由器來完成的工作,我不作過多的描述,無非就是通過查詢路由表決定通過那個路徑到達伺服器。

客戶端的鏈路層(新增mac頭),包通過鏈路層傳送到路由器,通過鄰居協議查詢給定ip位址的mac位址,然後傳送arp請求查詢目的位址,如果得到回應後就可以使用arp的請求應答交換的ip資料報現在就可以傳輸了,然後傳送ip資料報到達伺服器的位址。

這是傳輸層的兩個協議,先說一下傳輸層的兩大功能:

傳輸層和網路層的區別:

udp(user data protocol)使用者資料報協議

tcp(transmission control protocol)傳輸控制協議

什麼是tcp連線

tcp連線是一種抽象的概念,表示一條可以通訊的鏈路。

每個tcp連線有且僅有兩個端點,表示通訊的雙方,且雙方在任意時刻都可以作為傳送者和接受者。

什麼是套接字

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 transfer protocal),簡單檔案傳輸協議,該協議在熟知埠69上使用udp服務。

答:建立連線的過程是利用客戶伺服器模式,假設主機a為客戶端,主機b為伺服器端。

核心瀏覽器

tridentie、傲遊、360安全瀏覽器、獵豹安全瀏覽器

gecko火狐瀏覽器

presto(已廢棄)opera前核心

webkit

蘋果的safari瀏覽器

blink

chrome瀏覽器、opera

(2)路由器 路由器(router)是一種計算機網路裝置,提供了路由與轉送兩種重要機制,可以決定資料報從**端到目的端所經過的路由路徑(host到host之間的傳輸路徑),這個過程稱為路由;將路由器輸入端的資料報移送至適當的路由器輸出端(在路由器內部進行),這稱為轉送。路由工作在osi模型的第三層——即網路層,例如網際協議。 路由器的乙個作用是連通不同的網路,另乙個作用是選擇資訊傳送的線路。路由器與交換器的差別,路由器是屬於osi第三層的產品,交換器是osi第二層的產品(這裡特指二層交換機)。

(3)閘道器 閘道器(gateway),閘道器顧名思義就是連線兩個網路的裝置,區別於路由器(由於歷史的原因,許多有關tcp/ip

的文獻曾經把網路層使用的路由器(router)稱為閘道器,在今天很多區域網採用都是路由來接入網路,因此現在通常指的閘道器就是路由器的ip),經常在家

庭中或者小型企業網路中使用,用於連線區域網和internet。 閘道器也經常指把一種協議轉成另一種協議的裝置,比如語音閘道器。

詳細:

計算機網路常見問題總結

http 響應碼 301 和 302 代表的是什麼?有什麼區別?forward 和 redirect 的區別?簡述 tcp 和 udp 的區別?tcp 為什麼要三次握手?兩次不行麼?為什麼?說一下 tcp 粘包是怎麼產生的?osi 的七層模型都有哪些?get 和 post 請求有什麼區別?如何實現跨...

計算機網路的面試常見的問題

1 tcp和udp的對比?2 tcp的3次握手和四次揮手過程 3 post和get的對比?4 在遊覽器輸入乙個 到接受到響應中間涉及的協議?1 查快取 2 dns解析 3 獲取ip 4 建立tcp連線 5 發http資料 6 接受http資料並解析 7 close 5 http狀態碼 6 http和...

面試 計算機網路 計算機網路概述

隨著技術的發展,電信網路和有線電視網路都逐漸融入了現代計算機網路的技術,這就產生了 網路融合 的概念。連通性 共享 網際網路的拓撲結構雖然非常複雜,並且在地理上覆蓋了全球,但從其工作方式上看,可以劃分為以下的兩大塊 2 核心部分 由大量網路和連線這些網路的路由器組成。這部分為邊緣部分提供服務 提供連...