從2023年
,世界上第乙個網際網路web網頁誕生,到現在2023年
,已經過去了30多個年頭。
我們每天都可以通過網際網路搜尋資訊,檢視新聞,打遊戲,辦公。
網際網路的使用已經融入
我們的生活,再也離不開了(特別是我們這一批依賴於網際網路生存的程式設計師)
那麼對於網際網路中資料的傳輸過程
,你了解多少呢?面試遇到類似的問題你能答上來嗎?
今天我將結合動畫形式和大家聊聊網路傳輸資料的過程
。
當我們在瀏覽器中輸入我們的**,網路就開始資料傳輸了。
比如我們輸入
那麼瀏覽器就會根據我們輸入的這個url,進行解析。
一般乙個url
的格式如下:
其中:
經過這樣的解析,最後會形成乙個叫做請求訊息
的東西,也叫請求報文。
這個請求報文的一般格式是這樣的:
(請求行)
(請求頭header)
(請求體body)
name=123
到此乙個請求報文
,或者叫http請求訊息,就生成好了。
但是瀏覽器的工作還沒完成哦,
在這之後,瀏覽器還做了一件事,就是去dns伺服器
上查詢這個網域名稱對應的ip位址
。
當然瀏覽器本身是查詢不了的,需要借助電腦上的dns解析器
,其實就是乙個dns客戶端
。
dns,網域名稱系統(英文:domain name system,縮寫:dns)是網際網路的一項服務。它作為將網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使人更方便地訪問網際網路
dns解析器
會向dns伺服器
傳送查詢訊息,帶著這個網域名稱。
然後dns伺服器就會返回相應的響應訊息
,帶上網域名稱對應的ip位址
。
到此,瀏覽器的工作就完成了,接下來就交給作業系統中的tcp協議棧
,也就是我們常說的傳輸層。
說到tcp,可能有人就會問了,tcp
到底在哪呢,到底是啥呢?
所以可以理解為乙個tcp程序
,管理著tcp
相關的流、進行tcp協議
相關的工作。
tcp拿到資料之後,首先要做的就是把資料分成乙個個資料報
。
主要是為了資料傳輸的穩定、安全
:
所以網際網路就基於包交換
來傳輸資訊,也限定了每個資料報的大小。
tcp層
的第乙個工作,就將剛才拿到的資料分成乙個個資料報
,然後做第二步工作:加頭資訊
。
這兩個資訊在資料雙向傳輸中發揮了重要的作用,關係到資料的拼裝、資料重傳
等,下次說到三次握手的時候會說到。
加上了tcp頭資訊
的資料報,就改名叫做tcp資料報
。
然後將這個tcp資料報傳送給ip協議模組
。
首先我們要明確的一點就是,網路中資料不是一下就從客戶端傳到伺服器端的,中間會穿插很多路由器轉接。
路由器是連線兩個或多個網路的硬體裝置,在網路間起閘道器的作用,是讀取每乙個資料報中的位址然後決定如何傳送的專用智慧型性的網路裝置。就像這樣:
再說回資料傳輸
,
ip模組
拿到tcp資料報之後,又要開始新增資料頭資訊,首先增加了乙個ip頭資訊:
ip頭資訊
中包含了目的地的ip位址
。
ip模組
會將這個資料報傳送給資料鏈路層。
資料鏈路層
是負責網路在現實世界的乙個表現,比如乙太網,wi-fi
。
資料鏈路層拿到資料報之後,會轉換成電訊號或者光訊號
。
電訊號是指隨著時間而變化的電壓或電流.然後通過
網線或者光纖
傳送出去,再由路由器等**裝置一步步到底我們的目的地——伺服器。
資料的接收和傳送的過程完全相反。
到此,整個網路通訊就簡單介紹完了。
排序演算法原來是這麼排的
常用的排序演算法有以下幾類 插入排序 直接插入排序,希爾排序 選擇排序 簡單選擇排序,堆排序 交換排序 氣泡排序,快速排序 歸併排序,基數排序。排序方法選擇得當與否直接影響程式執行的速度和輔助儲存空間的占有量,進而影響整個軟體的效能。下面對這些演算法一一的介紹他們究竟是怎麼排的。插入排序 直接插入排...
漲知識 遊戲預設WASD原來是這麼來的
漲知識 遊戲預設wasd原來是這麼來的,wasd 這幾個按鍵如今基本是預設設定。當滑鼠成為 3d 遊戲的標配後,至少對於慣用右手的玩家來說,再去使用方向鍵實在是很不舒服,你需要伸出左手跨過整個前胸才能夠著那幾個方向鍵,wasd 顯然要更加舒適,也更容易能使用 shift 和空格鍵。不過即使如今 wa...
網路訪問速度變慢,原來是DNS設定的緣故
在debian裡面訪問網路很慢,一直以為是在天威下不能使用天威加速器的原因.今天搬了新家設定網路後ping www.baidu.com 非常非常的慢,就試著用baidu.com的ip ping了一下,感覺超快.這時我意識到肯定是網域名稱解析出了問題.開啟路由器一查原來主dns都沒有辦法ping通,將...