title: go全棧面試題(5) -網路程式設計面試題
tags: go
author: clown95
在向下的過程中,需要新增下層協議所需要的首部或者尾部,而在向上的過程中不斷拆開首部和尾部。
路由器只有下面三層協議,因為路由器位於網路核心中,不需要為程序或者應用程式提供服務,因此也就不需要運輸層和應用層。
交換機只有下面兩層協議
它只有四層,相當於五層協議中資料鏈路層和物理層合併為網路介面層。
現在的 tcp/ip 體系結構不嚴格遵循 osi 分層概念,應用層可能會直接使用 ip 層或者網路介面層。
tcp/ip 協議族是一種沙漏形狀,中間小兩邊大,ip 協議在其中占用舉足輕重的地位。
udp 的特點及使用場景
:
udp 不提供複雜的控制機制,利用 ip 提供面向無連線的通訊服務,隨時都可以傳送資料,處理簡單且高效,經常用於以下場景:
包總量較小的通訊(dns、snmp)
廣播通訊
tcp 的特點及使用場景
:
相對於 udp,tcp 實現了資料傳輸過程中的各種控制,可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
在對可靠性要求較高的情況下,可以使用 tcp,即不考慮 udp 的時候,都可以選擇 tcp。
假設 a 為客戶端,b 為伺服器端。
為了防止已失效的連線請求報文段突然又傳送到了服務端,占用伺服器資源。 (假設主機a為客戶端,主機b為伺服器端)
第三次握手是為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。
客戶端傳送的連線請求如果在網路中滯留,那麼就會隔很長一段時間才能收到伺服器端發回的連線確認。客戶端等待乙個超時重傳時間之後,就會重新請求連線。但是這個滯留的連線請求最後還是會到達伺服器,如果不進行三次握手,那麼伺服器就會開啟兩個連線。如果有第三次握手,客戶端會忽略伺服器之後傳送的對滯留連線請求的連線確認,不進行第三次握手,因此就不會再次開啟連線。
資料傳輸結束後,通訊的雙方都可釋放連線。現在 a 的應用程序先向其 tcp 發出連線釋放報文段,並停止再傳送資料,主動關閉 tcp連線。
客戶端傳送了 fin 連線釋放報文之後,伺服器收到了這個報文,就進入了 close-wait 狀態。這個狀態是為了讓伺服器端傳送還未傳送完畢的資料,傳送完畢之後,伺服器會傳送 fin 連線釋放報文。
伺服器返回的響應報文中第一行為狀態行,包含了狀態碼以及原因短語,用來告知客戶端請求的結果。
狀態碼類別
原因短語
1xxinformational(資訊性狀態碼)
接收的請求正在處理
2xxsuccess(成功狀態碼)
請求正常處理完畢
3xxredirection(重定向狀態碼)
需要進行附加操作以完成請求
4xxclient error(客戶端錯誤狀態碼)
伺服器無法處理請求
5xxserver error(伺服器錯誤狀態碼)
伺服器處理請求出錯
post請求不能被快取
post請求相對get請求是「安全」的
get用於資訊獲取,而且是安全的和冪等的.
post是用於修改伺服器上的資源的請求
傳送包含未知字元的使用者輸入時,post 比 get 更穩定也更可靠
引申:說完原理性的問題,我們從表面上來看看get和post的區別:
http協議是無狀態的(stateless),指的是協議對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。也就是說,開啟乙個伺服器上的網頁和上一次開啟這個伺服器上的網頁之間沒有任何聯絡。
http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線,更不能代表http使用的是udp協議(無連線)。
缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
面試題(二)網路
預設情況是kill的引數是 15 kill 15是告訴程序你需要被關閉,請自行停止執行並退出 kill 9表示程序被終止,需要立即退出4 top 檢視當前主機狀態 5 mv 移動檔案 mv a aa b 將a資料夾下的空資料夾aa移動到b資料夾下面 f 如果目標存在就強制覆蓋 t 先指定要移動到的位...
網路程式設計面試題
tcp ip模型實際上是osi模型的乙個濃縮版本,它只有四個層次 應用層 對應這osi的應用層 表示層 會話層 傳輸層 對應著osi的傳輸層 網路層 對應著osi的網路層 網路介面層 對應著osi的資料鏈路層和物理層 osi模型的網路層同時支援面向連線和無連線的通訊,但是傳輸層只支援面向連線的通訊 ...
面試題系列(五) 網路協議
udp 是使用者資料報協議 主要用在實時性要求高以及對質量相對較弱的地方,但面對現在高質量的線路不是容易丟包除非是一些擁塞條件下,如流 tcp 是傳輸控制協議 是面連線的,那麼執行環境必然要求其可靠性不可丟包有良好的擁塞控制機制如http ftp telnet 等 三次握手 第一次握手 建立連線時,...