1. 程式人生 > >計算機網絡--運輸層

計算機網絡--運輸層

sha odi 三次握手 lose 網絡協議 servers 請求頭 序號 put

● 請你說明一下,TCP協議的4次握手。

考察點:TCP協議

參考回答:

由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

TCP的連接的拆除需要發送四個包,因此稱為四次揮手(four-way handshake)。客戶端或服務器均可主動發起揮手動作,在socket編程中,任何一方執行close()操作即可產生揮手操作。

(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。

(2)服務器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。

(3)服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。

(4)客戶端A發回ACK報文確認,並將確認序號設置為收到序號加1。

技術分享圖片

● 談一下,為什麽tcp為什麽要建立連接?

考察點:TCP

參考回答:

保證可靠傳輸。

● 請你解釋一下TCP為什麽可靠一些

考察點:TCP

參考回答:

三次握手,超時重傳,滑動窗口,擁塞控制。

● 請說明一下哪種應用場景會使用TCP協議,使用它的意義

考察點:TCP協議

參考回答:

當對網絡通訊質量有要求的時候,比如:整個數據要準確無誤的傳遞給對方,這往往用於一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸文件的協議,POP、SMTP等郵件傳輸的協議

● 簡單描述一下,TCP的連接和釋放過程。

考察點:網絡基礎

參考回答:

三次握手的過程

1)主機A向主機B發送TCP連接請求數據包,其中包含主機A的初始序列號seq(A)=x。(其中報文中同步標誌位SYN=1,ACK=0,表示這是一個TCP連接請求數據報文;序號seq=x,表明傳輸數據時的第一個數據字節的序號是x);

2)主機B收到請求後,會發回連接確認數據包。(其中確認報文段中,標識位SYN=1,ACK=1,表示這是一個TCP連接響應數據報文,並含主機B的初始序列號seq(B)=y,以及主機B對主機A初始序列號的確認號ack(B)=seq(A)+1=x+1)

3)第三次,主機A收到主機B的確認報文後,還需作出確認,即發送一個序列號seq(A)=x+1;確認號為ack(A)=y+1的報文;

四次揮手過程

假設主機A為客戶端,主機B為服務器,其釋放TCP連接的過程如下:
1) 關閉客戶端到服務器的連接:首先客戶端A發送一個FIN,用來關閉客戶到服務器的數據傳送,然後等待服務器的確認。其中終止標誌位FIN=1,序列號seq=u。
2) 服務器收到這個FIN,它發回一個ACK,確認號ack為收到的序號加1。
3) 關閉服務器到客戶端的連接:也是發送一個FIN給客戶端。

4) 客戶段收到FIN後,並發回一個ACK報文確認,並將確認序號seq設置為收到序號加1。 首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。 技術分享圖片

三次握手

技術分享圖片

四次揮手

● 請解釋一下,http請求中的304狀態碼的含義

考察點:http

參考回答:

304(未修改)自從上次請求後,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。如果網頁自請求者上次請求後再也沒有更改過,您應將服務器配置為返回此響應(稱為 If-Modified-Since HTTP 標頭)。服務器可以告訴 Googlebot 自從上次抓取後網頁沒有變更,進而節省帶寬和開銷。

● 請你說明一下,SSL四次握手的過程

考察:HTTP加密協議

參考回答:

1、 客戶端發出請求

首先,客戶端(通常是瀏覽器)先向服務器發出加密通信的請求,這被叫做ClientHello請求。

2、服務器回應

服務器收到客戶端請求後,向客戶端發出回應,這叫做SeverHello。

3、客戶端回應

客戶端收到服務器回應以後,首先驗證服務器證書。如果證書不是可信機構頒布、或者證書中的域名與實際域名不一致、或者證書已經過期,就會向訪問者顯示一個警告,由其選擇是否還要繼續通信。

4、服務器的最後回應

服務器收到客戶端的第三個隨機數pre-master key之後,計算生成本次會話所用的"會話密鑰"。然後,向客戶端最後發送下面信息。

(1)編碼改變通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送。

(2)服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供客戶端校驗。

至此,整個握手階段全部結束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的HTTP協議,只不過用"會話密鑰"加密內容。

● 請你講講http1.1和1.0的區別

考察點:http

參考回答:

主要區別主要體現在:

緩存處理,在HTTP1.0中主要使用header裏的If-Modified-Since,Expires來做為緩存判斷的標準,HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。

帶寬優化及網絡連接的使用,HTTP1.0中,存在一些浪費帶寬的現象,例如客戶端只是需要某個對象的一部分,而服務器卻將整個對象送過來了,並且不支持斷點續傳功能,HTTP1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206(Partial Content),這樣就方便了開發者自由的選擇以便於充分利用帶寬和連接。

錯誤通知的管理,在HTTP1.1中新增了24個錯誤狀態響應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生沖突;410(Gone)表示服務器上的某個資源被永久性的刪除。

Host頭處理,在HTTP1.0中認為每臺服務器都綁定一個唯一的IP地址,因此,請求消息中的URL並沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一臺物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),並且它們共享一個IP地址。HTTP1.1的請求消息和響應消息都應支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)。

長連接,HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲,在HTTP1.1中默認開啟Connection: keep-alive,一定程度上彌補了HTTP1.0每次請求都要創建連接的缺點。

● 請談一下,你知道的http請求,並說明應答碼502和504的區別

考察點:http協議

參考回答:

OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務器發送‘*‘的請求來測試服務器的功能性。

HEAD:向服務器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應消息頭中的元信息。

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

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

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

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

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

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

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

502:作為網關或者代理工作的服務器嘗試執行請求時,從上遊服務器接收到無效的響應。

504:作為網關或者代理工作的服務器嘗試執行請求時,未能及時從上遊服務器(URI標識出的服務器,例如HTTP、FTP、LDAP)或者輔助服務器(例如DNS)收到響應。

● 請說明一下http和https的區別

考察點:http協議

參考回答;

https協議要申請證書到ca,需要一定經濟成本;2) http是明文傳輸,https是加密的安全傳輸;3) 連接的端口不一樣,http是80,https是443;4)http連接很簡單,沒有狀態;https是ssl加密的傳輸,身份認證的網絡協議,相對http傳輸比較安全。

● 請講一下瀏覽器從接收到一個URL,到最後展示出頁面,經歷了哪些過程。

考察點:http協議

參考回答:

1.DNS解析 2.TCP連接 3.發送HTTP請求 4.服務器處理請求並返回HTTP報文 5.瀏覽器解析渲染頁面

計算機網絡--運輸層