當前位置:首頁>職場>面試遇到的網絡問題(如果你訪問一個網站很慢)
發布時間:2024-01-24閱讀(14)
在計算機網絡的應用層你了解多少,是否知道socket套接字有哪些?知道你的網站為什么訪問慢嗎?知道為什么fidder、Charles能抓到你的包嗎?今天我們就來一一揭秘!
一、socket()套接字有哪些?套接字(socket)是網絡中不同主機上的應用進程進行雙向通信的端口的抽象,網絡進程通信的一端就是一個套接字,不同主機上的進程就是通過套接字發送數據報來進行通信的,如TCP協議使用主機的IP地址 端口號來作為TCP連接的端點,這個端點就是套接字。
套接字主要有以下三種類型:
所以總的來說,只要能唯一標識資源的就是URI,在URI的基礎上能給出其資源的訪問方式的就是URL。
三、為什么 fidder,charles 能抓到你的包【抓取數據包的過程】假如我們需要抓取客戶端的數據包,需要監控客戶端與服務器交互之間的網絡節點,監控其中任意一個網絡節點(網卡),獲取所有經過網卡中的數據,對這些數據按照網絡協議進行解析,這就是抓包的基本原理。 而中間的網絡節點不受我們控制,是基本無法實現抓包的,因此只能在客戶端與服務器之間進行抓包。
① 當采用抓包工具抓取 HTTP 數據包時,過程如下:
這里抓包工具相當于透明人,數據經過的時候它一只手接到數據,然后另一只手把數據傳出去。
② 當抓取 HTTPS 數據包時:
這個時候抓包工具對客戶端來說相當于服務器,對服務器來說相當于客戶端。 在這個傳輸過程中,客戶端會以為它就是目標服務器,服務器也會以為它就是請求發起的客戶端。
四、如果你訪問一個網站很慢,怎么排查和解決?網站打開慢的原因有很多,總結一下最常見的幾個。
- 查看本地網絡是否正常,查看網絡帶寬是否被占用,如有其他進程正在占用本地網絡帶寬。
- 若網絡連接正常,那么就應該對該網站的服務器速度進行排查,通過ping命令查看連接到服務器的時間和丟包情況,如果服務器正常,那么丟包率一般不會超過1%, 其次是ping值要小,最后是ping值要穩定,如果ping值的最大和最小差值過大說明路由不穩定。 或者我們查看打開同臺服務器上的其他網站的速度,看打開其他網站的速度是否也慢。
- 如果網站打開速度時快時慢,甚至有時候打不開的情況,那么有可能是空間不穩定,如果確定了是該問題,那么就應該找你的空間商更換空間了,可以選擇購買雙線或多線空間。
- 從網站本身尋找原因,網站的問題主要包括網站程序設計、網頁結構設計和網頁內容三部分。
1、網站程序設計: 當訪問網頁中有拖慢網站打開速度的代碼,會直接影響網站的打開速度,如網頁中使用的統計代碼,一般是要放置在網站末尾的,防止其在加載過程中出現延遲。
2、網頁結構設計: 查看網頁布局的代碼,如果網頁使用的table布局的網頁,查看是否被嵌套次數過多,或者是使用一個大表格分成多個小表格的布局,這個時候可以使用div配合css來改進。
3、網頁內容: 查看網頁中是否有許多大尺寸的圖片和大尺寸的flash存在,我們可以通過降低圖片質量,減少圖片尺寸,少用過多的flash來解決。或者可能是有的網站引用了其他網站的內容, 若某些被引用的網站訪問速度慢或者不存在,該網站的打開速度自然會變慢,所以可以直接減少不必要的加載項。
五、說一下網頁解析的全過程【用戶輸入網址到顯示對應頁面的全過程】在用戶輸入URL之后,瀏覽器首先會進行DNS解析,將用戶輸入的域名解析成web服務器的IP地址,之后會通過該IP地址與服務器進行三次握手建立TCP連接,連接完成之后通過HTTP協議發送客戶端的請求,在服務器接收到該請求之后,會根據該請求體中的內容決定如何獲取目標文件,并且將目標文件返回給客戶端;瀏覽器在收到文件之后,首先會通過解析HTML文件為DOM樹,再解析CSS文件為渲染樹,在CSS文件解析完成之后將根據渲染樹的布局在頁面上顯示網頁;最后客戶端和服務器通過四次揮手斷開連接。
過程如下圖這樣:
其中的名詞解析:
- DNS 解析: 當用戶輸入一個網址并按下回車鍵的時候,瀏覽器獲得一個域名,而在實際通信過程中,我們需要的是一個 IP地址,因此我們需要先把域名轉換成相應 IP 地址。
- TCP 連接: 瀏覽器通過 DNS 獲取到 Web 服務器真正的 IP 地址后,便向 Web 服務器發起 TCP 連接請求,通過 TCP三次握手建立好連接后,瀏覽器便可以將 HTTP 請求數據發送給服務器了。
- 發送 HTTP 請求: 瀏覽器向 Web 服務器發起一個 HTTP 請求,HTTP 協議是建立在 TCP 協議之上的應用層協議,其本質是在建立起的TCP連接中,按照HTTP協議標準發送一個索要網頁的請求。
在這一過程中,會涉及到負載均衡等操作。
拓展:什么是負載均衡?
負載均衡, 英文名為 Load Balance,其含義是指將負載(工作任務)進行平衡、分攤到多個操作單元上進行運行, 例如 FTP 服務器、Web 服務器、企業核心服務器和其他主要任務服務器等,從而協同完成工作任務。
負載均衡建立在現有的網絡之上,它提供了一種透明且廉價有效的方法擴展服務器和網絡設備的帶寬、增加吞吐量、加強網絡處理能力并提高網絡的靈活性和可用性。
負載均衡是分布式系統架構設計中必須考慮的因素之一, 例如天貓、京東等大型用戶網站中為了處理海量用戶發起的請求,其往往采用分布式服務器,并通過引入反向代理等方式將用戶請求均勻分發到每個服務器上,而這一過程所實現的就是負載均衡。
今日總結
- 處理請求并返回: 服務器獲取到客戶端的 HTTP 請求后,會根據 HTTP 請求中的內容來決定如何獲取相應的文件,并將文件發送給瀏覽器。
- 瀏覽器渲染: 瀏覽器根據響應開始顯示頁面,首先解析 HTML 文件構建 DOM 樹,然后解析 CSS文件構建渲染樹,等到渲染樹構建完成后,瀏覽器開始布局渲染樹并將其繪制到屏幕上。
- 斷開連接: 客戶端和服務器通過四次揮手終止 TCP 連接。
今天的內容主要就是學習了網站的請求和顯示過程,了解其中通信的原理,URL和URI的區別、如何解決網站訪問慢等問題。
如果小伙伴們有遇到其他相關的面試題,歡迎在評論區留言提出,我會把大家提出的總結到文章內, 歡迎小伙伴們一起評論區打卡學習!
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖