目錄???????
分層
OSI,TCP/IP,五層協議的體系結構?
物理層有什么作用?
資料鏈路層有什么作用?
網路層有什么作用?
傳輸層有什么作用?
會話層有什么作用?
表示層有什么作用?
應用層有什么作用?
網路層
傳輸層
TCP三次握手程序?
為什么三次握手?
TCP四次揮手程序?
為什么四次揮手?
四次揮手為什么等待2MSL?
四次揮手期間的狀態?
TCP和UDP的區別?
TCP如何保證可靠傳輸?
TCP是大端序還是小端序?
應用層
瀏覽器中輸入url到顯示的程序?
uri和url的區別?
Cookie的作用是什么?和Session有什么區別?
Http的狀態碼分為哪幾類?
HTTP 1.0和HTTP 1.1的主要區別是什么?
簡述http2.0的改進?
http與https的區別
HTTPS建立期間有幾個亂數?
參考
分層
OSI,TCP/IP,五層協議的體系結構?
OSI分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層,
TCP/IP分層(4層):網路介面層、 網際層、運輸層、 應用層,
五層協議(5層):物理層、資料鏈路層、網路層、運輸層、 應用層,
物理層有什么作用?
解決了物理機之間的通信,通過二進制位元流的傳輸來實作,二進制資料表現為電流電壓上的強弱,到達目的地再轉化為二進制機器碼,網卡、集線器作業在這一層,
資料鏈路層有什么作用?
在不可靠的物理介質上提供可靠的傳輸,接收來自物理層的位流形式的資料,并封裝成幀,傳送到上一層;同樣,也將來自上層的資料幀,拆裝為位元流形式的資料轉發到物理層,這一層在物理層提供的位元流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理線路變為無差錯的資料鏈路,提供物理地址尋址功能,交換機作業在這一層,
網路層有什么作用?
將網路地址翻譯成對應的物理地址,并決定如何將資料從發送方路由到接收方,通過路由選擇演算法為分組通過通信子網選擇最佳路徑,路由器作業在這一層,
傳輸層有什么作用?
傳輸層提供了行程間的通信,傳輸層向高層用戶屏蔽了下面網路層的核心細節,使應用程式看起來像是在兩個傳輸層物體之間有一條端到端的邏輯通信信道,
會話層有什么作用?
- 建立會話:身份驗證,權限鑒定等;
- 保持會話:對該會話進行維護,在會話維持期間兩者可以隨時使用這潭訓話傳輸局;
- 斷開會話:當應用程式或應用層規定的超時時間到期后,OSI會話層才會釋放這潭訓話,
表示層有什么作用?
- 網路的安全和保密管理;
- 文本的壓縮與打包;
- 虛擬終端協議(VTP),
應用層有什么作用?
提供應用層協議,如HTTP協議,FTP協議等等,方便應用程式之間進行通信,
網路層
解釋下PING命令?
Ping域名、Ping ip
主機A ping 主機B ---> 構建 ICMP 包 ----> 構建 IP 分組 ----> 決議硬體地址封裝成幀 ----> 物理層發送 ----> 網路層傳輸 ----> 到達主機B ----> 提取IP資料包交給IP層協議 ----> 提取資訊交給ICMP協議,構建ICMP應答包 ----> 發送給主機A
ICMP 請求發送和應答報文 type是 8和0
傳輸層
TCP三次握手程序?
查看:網路-TCP協議詳解自學筆記(例題、代碼、實戰),有圖片,更方便
為什么三次握手?
client發出的第一個連接請求報文段并沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連接釋放以后的某個時間才到達server,本來這是一個早已失效的報文段,但server收到此失效的連接請求報文段后,就誤認為是client再次發出的一個新的連接請求,于是就向client發出確認報文段,同意建立連接,假設不采用“三次握手”,那么只要server發出確認,新的連接就建立了,由于現在client并沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送資料,但server卻以為新的運輸連接已經建立,并一直等待client發來資料,這樣,server的很多資源就白白浪費掉了,采用“三次握手”的辦法可以防止上述現象發生,例如剛才那種情況,client不會向server的確認發出確認,server由于收不到確認,就知道client并沒有要求建立連接,”,主要目的防止server端一直等待,浪費資源,
TCP四次揮手程序?
查看:網路-TCP協議詳解自學筆記(例題、代碼、實戰),有圖片,更方便
為什么四次揮手?
因為TCP是一個全雙工協議,必須單獨拆除每一條信道,4次揮手的目的是終止資料傳輸,并回收資源,此時兩個端點兩個方向的序列號已經沒有了任何關系,必須等待兩方向都沒有資料傳輸時才能拆除虛鏈路,不像初始化時那么簡單,因此必須單獨分別在一個方向上終止該方向的資料傳輸,
如果是三次揮手,會怎么樣?三次的話,被動關閉端在收到FIN訊息之后,需要同時回復ACK和Server端的FIN訊息,如果Server端在該連接上面還有資料要處理,那么Server端還需要等待一段時間才可以關閉另外一個方向的連接,那么這樣的三次揮手就不能滿足條件,
四次揮手為什么等待2MSL?
客戶端等待兩倍的MSL(Maximum Segment Lifetime,報文段最長壽命)時間后關閉連接,因為如果服務器端沒有收到客戶端回復的確認報文段會再次發出連接釋放報文段,2MSL后沒有收到服務器端再次發出的連接釋放報文段,說明服務器端已關閉,
四次揮手期間的狀態?
CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、LAST_ACK、CLOSED,詳細描述見:網路-TCP協議詳解自學筆記(例題、代碼、實戰)
TCP和UDP的區別?
| 比較項 | TCP | UDP |
| 面向連接 | 是 | 否 |
| 可靠/安全 | 是 | 否 |
| 速度 | 慢 | 快 |
| 面向 | 位元組流 | 報文 |
| 應用范圍 | 大量資料 | 少量資料 |
TCP如何保證可靠傳輸?
- 校驗和: TCP 將保持它首部和資料的檢驗和,這是一個端到端的檢驗和,目的是檢測資料在傳輸程序中的任何變化,如果收到段的檢驗和有差錯,TCP 將丟棄這個報文段和不確認收到此報文段,
- TCP 的接收端會丟棄重復的資料,
-
確認應答與序列號:序列號:TCP傳輸時將每個位元組的資料都進行了編號,這就是序列號,確認應答:TCP傳輸的程序中,每次接收方收到資料后,都會對傳輸方進行確認應答,也就是發送ACK報文,這個ACK報文當中帶有對應的確認序列號,告訴發送方,接收到了哪些資料,下一次的資料從哪里發,序列號的作用不僅僅是應答的作用,有了序列號能夠將接收到的資料根據序列號排序,并且去掉重復序列號的資料,這也是TCP傳輸可靠性的保證之一,
-
超時重傳: 當 TCP 發出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段,如果不能及時收到一個確認,將重發這個報文段,
- 流量控制: TCP 連接的每一方都有固定大小的緩沖空間,TCP的接收端只允許發送端發送接收端緩沖區能接納的資料,當接收方來不及處理發送方的資料,能提示發送方降低發送的速率,防止包丟失,TCP 使用的流量控制協議是可變大小的滑動視窗協議,
- 擁塞控制: 當網路擁塞時,減少資料的發送,
- ARQ協議: 也是為了實作可靠傳輸的,它的基本原理就是每發完一個分組就停止發送,等待對方確認,在收到確認后再發下一個分組,
TCP是大端序還是小端序?
所有網路協議都是采用大端的方式來傳輸資料的,所以大端方式又稱為網路位元組序,
應用層
瀏覽器中輸入url到顯示的程序?
1、查詢DNS,獲取域名對應的IP,
(1)檢查瀏覽器快取、檢查本地hosts檔案是否有這個網址的映射,如果有,就呼叫這個IP地址映射,決議完成,
(2)如果沒有,則查找本地DNS決議器快取是否有這個網址的映射,如果有,回傳映射,決議完成,
(3)如果沒有,則查找填寫或分配的首選DNS服務器,稱為本地DNS服務器,服務器接收到查詢時:
如果要查詢的域名包含在本地配置區域資源中,回傳決議結果,查詢結束,此決議具有權威性,
如果要查詢的域名不由本地DNS服務器區域決議,但服務器快取了此網址的映射關系,回傳決議結果,查詢結束,此決議不具有權威性,
(4)如果本地DNS服務器也失效:
如果未采用轉發模式(迭代),本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后,會判斷這個域名(如.com)是誰來授權管理,并回傳一個負責該頂級域名服務器的IP,本地DNS服務器收到頂級域名服務器IP資訊后,繼續向該頂級域名服務器IP發送請求,該服務器如果無法決議,則會找到負責這個域名的下一級DNS服務器(如http://baidu.com)的IP給本地DNS服務器,回圈往復直至查詢到映射,將決議結果回傳本地DNS服務器,再由本地DNS服務器回傳決議結果,查詢完成,
如果采用轉發模式(遞回),則此DNS服務器就會把請求轉發至上一級DNS服務器,如果上一級DNS服務器不能決議,則繼續向上請求,最終將決議結果依次回傳本地DNS服務器,本地DNS服務器再回傳給客戶機,查詢完成,
2、得到目標服務器的IP地址及埠號(http 80埠,https 443埠),會呼叫系統庫函式socket,請求一個TCP套接字,客戶端向服務器發送HTTP請求報文:
(1)應用層:客戶端發送HTTP請求報文,
(2)傳輸層:(加入源埠、目的埠)建立連接,實際發送資料之前,三次握手客戶端和服務器建立起一個TCP連接,
(3)網路層:(加入IP頭)路由尋址,
(4)資料鏈路層:(加入frame頭)傳輸資料,
(5)物理層:物理傳輸bit,
3、服務器端經過物理層→資料鏈路層→網路層→傳輸層→應用層,決議請求報文,發送HTTP回應報文,
4、關閉連接,TCP四次揮手,
5、客戶端決議HTTP回應報文,瀏覽器開始顯示HTML
uri和url的區別?
Cookie的作用是什么?和Session有什么區別?
Cookie 和 Session都是用來跟蹤瀏覽器用戶身份的會話方式,但是兩者的應用場景不太一樣,
Cookie一般用來保存用戶資訊
- 我們在 Cookie 中保存已經登錄過得用戶資訊,下次訪問網站的時候頁面可以自動幫你填寫登錄的一些基本資訊;
- 一般的網站都會有保持登錄也就是說下次你再訪問網站的時候就不需要重新登錄了,這是因為用戶登錄的時候我們可以存放了一個 Token 在 Cookie 中,下次登錄的時候只需要根據 Token 值來查找用戶即可(為了安全考慮,重新登錄一般要將 Token 重寫);
- 登錄一次網站后訪問網站其他頁面不需要重新登錄,
Session 的主要作用就是通過服務端記錄用戶的狀態,典型的場景是購物車,當你要添加商品到購物車的時候,系統不知道是哪個用戶操作的,因為 HTTP 協議是無狀態的,服務端給特定的用戶創建特定的 Session 之后就可以標識這個用戶并且跟蹤這個用戶了,???????
區別:
- cookie資料存放在客戶的瀏覽器上,session資料放在服務器上,
- cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙考慮到安全應當使用session,
- session會在一定時間內保存在服務器上,當訪問增多,會比較占用服務器的性能考慮到減輕服務器性能方面,應當使用COOKIE,
- 單個cookie保存的資料不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie,
- 建議:將登陸資訊等重要資訊存放為SESSION 其他資訊如果需要保留,可以放在COOKIE中
Http的狀態碼分為哪幾類?
- 1** 資訊,服務器收到請求,需要請求者繼續執行操作
- 2** 成功,操作被成功接收并處理
- 3** 重定向,需要進一步的操作以完成請求
- 4** 客戶端錯誤,請求包含語法錯誤或無法完成請求
- 5** 服務器錯誤,服務器在處理請求的程序中發生了錯誤
詳見:網路-http協議學習筆記(訊息結構、請求方法、狀態碼等)
HTTP 1.0和HTTP 1.1的主要區別是什么?
http1.0
- 規定了請求頭和請求尾,回應頭和回應尾(get post)
- 每一個請求都是一個單獨的連接,做不到連接的復用
http1.1的改進
- HTTP1.1默認開啟長連接,在一個TCP連接上可以傳送多個HTTP請求和回應,使用 TCP 長連接的方式改善了 HTTP/1.0 短連接造成的性能開銷,
- 支持管道(pipeline)網路傳輸,只要第一個請求發出去了,不必等其回來,就可以發第二個請求出去,可以減少整體的回應時間,
- 服務端無法主動push
簡述http2.0的改進?
- 提出多路復用,多路復用前,檔案是串行傳輸的,請求a檔案,b檔案只能等待,并且連接數過多,引入多路復用,a檔案、b檔案可以同時傳輸,
- 引入了二進制資料幀,其中幀對資料進行順序標識,有了序列id,服務器就可以進行并行傳輸資料,
http與https的區別
- http所有傳輸的內容都是明文,并且客戶端和服務器端都無法驗證對方的身份,
- https具有安全性的ssl加密傳輸協議,加密采用對稱加密, https協議需要到CA申請證書,一般免費證書很少,需要交費,
HTTPS建立期間有幾個亂數?
3個
參考
常見面試題整理--計算機網路篇(每位開發者必備)
計算機網路常見面試題
計算機網路之面試常考
《計算機網路第七版 謝希仁》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290268.html
標籤:其他
上一篇:Linux初級指令
