瀏覽器原理學習--如何保證頁面文件能被完整地送達瀏覽器

在前後端交互過程中,前端頁面所需要的一些頁面信息是通過瀏覽器和後臺服務器之間建立的TCP連接傳輸的。TCP連接就好比實實在在的運輸通道,好比基礎的交通設施,好比道路和橋樑,網絡數據就在這些道路上運輸,到達指定的目的地。

數據的運輸之前,雙方必須達成協議,就好比買賣雙方必須提前溝通好信息:價格是多少,要幾斤幾兩,要哪種成色的貨物等。雙方都達成共識了之後,交流纔會是無障礙的。

如果傳輸數據太大,數據會被拆成一個個小的數據包分別發送,每個數據包會被標上描述順序的標識,等到接收方拿到後,可以按照順序重新組裝成完成的數據。

數據發送之前,首先需要知道數據要發給誰,這就需要網際協議(Internet Protocol,簡稱 IP)來識標,互聯網上每一臺設備都有唯一的IP地址,就和我們的居住地址和門牌一樣,必須唯一才能精確定位。

數據在傳輸前需要經過一層層的處理才能發送,首先需要把目標IP添加到數據包上,還需要把自己的IP也添加上去,這樣目標處理好數據後才知道該把處理好的數據返回給誰。服務器拿到數據後會反向操作數據,即先拆開數據拿到IP相關信息,然後纔拿到最裏面的數據包。

瀏覽器上一般會運行多個程序,而區分這些程序的一個標準就是端口號,請求回來的數據應該給到哪個程序去消費,這就需要UDP來分配了,用戶數據包協議(User Datagram Protocol)的作用就是把數據包送達應用程序。

UDP其中一個功能是通過給數據標識上當前程序運行的端口號,發送請求前,網絡進程已經把端口號或頁籤標識放到數據頭裏了,取回數據後相關信息包括端口號一併帶回來,讓瀏覽器知道取回來的數據是從哪個程序發出的,位於哪個端口或頁簽上,並把數據給到對應的程序消費。

IP和端口號組合在一起共同起到了程序定位的作用,數據就有了明確的傳輸目的了。

UDP傳輸數據的一個缺點就是容易丟包,且不重傳;並且分包數據不是按順序到達時,UDP無法智能地組裝數據,形成完整的數據流,可靠性不是很高。所以主要功能是把數據分配到對應的端口所在程序去。

 

TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議

相較於UDP傳輸,TCP的有點有:

  • 對於數據包丟失的情況,TCP 提供重傳機制;
  • TCP 引入了數據包排序機制,用來保證把亂序的數據包組合成一個完整的文件。

TCP傳輸的主要流程和UDP差不多,除此之外還提供了用於排序的序列號,以便接收端通過序號來重排數據包,這樣就保證了大數據包的完整傳輸。

經典的三次握手四次揮手

爲什麼是3次握手呢?我理解的是,3次溝通是確定雙方都有發送和接收信息的最少次數。第一次:a到b,能確保a有發送能力 ;第二次:b到a,能確保b有接收和發送能力;第三次:a到b,能確保a有接收能力。這樣就能確保雙方都有發送和接收能力,可以建立完整的連接了。

4次揮手依然是爲了確保雙方達成斷開連接的共識的最少次數。a:我要斷開連接了。b:好的,你斷開吧。a(斷開操作):我已經斷開了。b:好的,我知道了(不在傳輸數據)。

TCP的數據重發:

在傳輸數據階段,接收端需要對每個數據包進行確認操作,也就是接收端在接收到數據包之後,需要發送確認數據包給發送端。所以當發送端發送了一個數據包之後,在規定時間內沒有接收到接收端反饋的確認消息,則判斷爲數據包丟失,並觸發發送端的重發機制。同樣,一個大的文件在傳輸過程中會被拆分成很多小的數據包,這些數據包到達接收端後,接收端會按照 TCP 頭中的序號爲其排序,從而保證組成完整的數據。

互聯網中的數據都是通過一個個小的數據包來傳輸的,爲了保證數據傳輸的完整性,TCP提供了重傳機制,降低數據的丟失;爲了能正確的把數據包組裝還原,TCP採用了排序傳輸,給每個數據包標上序號,接收端根據序號排列組裝即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章