計算機網絡知多少-第1篇

一、?從輸入URL到頁面展示到底發生了什么?

1. 首先瀏覽器會查看電腦本地緩存,如果有直接返回,否則需要進行下一步的網絡請求。

2. 在網絡請求之前,需要先進行DNS解析,來找到請求域名的ip地址。如果是HTTPS請求,則還需要建立TLS連接。

DNS解析過程:假設你是一個旅行者到一個陌生城市問路,首先你會先問到隨便一個路人(本地瀏覽器緩存),再問到一個本地居民(本地host文件),還是不知道路,此時你可能會看看路標(路由器緩存),最終你還是被自己路癡屬性給震驚了,請了一個導游(DNS服務器),還是不行,最終問了導游基地的人(根DNS服務器),真好奇你去了個啥地方,最終找到了請求域名的ip地址。原來是一家有名的餐館!】

3. 建立通道:瀏覽器與服務器ip地址建立TCP連接。連接建立好之后,瀏覽器把請求頭,請求行等信息,再加上和該域名相關的cookies一起發送給服務器。(配送原材料和訂單信息)

4. 服務器收到請求頭信息,根據請求頭生成響應數據。(根據原材料和訂單信息,制作出一道美味的菜,并且用盒子打包好)

5. 瀏覽器解析響應頭,如果響應頭狀態碼是301,302,會重定向到新地址;如果是字節流類型,會將請求提交給下載管理器;如果是HTML類型,會進行下一步渲染(查看盒子外殼附有的信息)

6. 瀏覽器解析HTML文件,呈現最終渲染界面(品嘗美味佳肴~)

二、三次握手

第一次握手:客戶端向服務器端發送SYN報文,初始化序列號ISN(seq = x),然后客戶端進入SYN_SEND狀態,等待服務器確認。

第二次握手:服務器發送ACK確認客戶端SYN報文(ack = x + 1),然后再發送一個SYN(seq = y),服務器端進入SYN_RECV狀態。

第三次握手:客戶端接收到ACK, SYN報文,ACK確認服務器端(ack = y + 1),然后客戶端和服務器端都進入ESTABLISHED狀態。

就像是在建立一個友誼的過程一樣:

  1. 打招呼:

    想象你和一個新朋友第一次見面。你會向他們打個招呼,說:“嗨,你好!”這就像是客戶端(你)向服務器(新朋友)發送了一個“嗨,你好”的消息,告訴服務器你想和它建立連接。
  2. 確認招呼:

    新朋友收到你的招呼后,會回復:“嗨,你好!”。這時,你知道對方愿意和你成為朋友。這就像是服務器回復一個“嗨,你好”的消息,并表示愿意和你建立連接。這時,雙方都知道對方想要建立連接。
  3. 最后確認:

    你想確認一下朋友確實愿意和你一起玩,于是你說:“好的,我們一起玩吧!”這就像是客戶端發送最后一條消息,表示確認建立連接。而服務器也確認了,于是雙方都知道可以開始愉快地交流了。

解釋一下SYN

SYN是TCP(傳輸控制協議)中的一個標志位,代表同步(Synchronize)。在TCP的三次握手過程中,SYN用于建立連接的初始階段。

具體來說,在三次握手中的第一步,客戶端發送一個帶有SYN標志的TCP報文給服務器。這個報文告訴服務器客戶端想要建立連接,并且包含了一些初始化的序列號。這個序列號用于標識數據流的起始點。

服務器在收到帶有SYN標志的TCP報文后,會回復一個帶有SYN和ACK(確認)標志的報文。這個報文表明服務器同意建立連接,并且服務器也選擇了自己的初始化序列號。

SYN標志的使用是為了在建立連接時進行同步,確保客戶端和服務器在傳輸數據之前都了解對方的狀態,并且序列號的初始化是同步的。這有助于防止混淆和確保可靠的數據傳輸。

3. 四次揮手

  1. 告別請求:

    想象你和朋友在一起愉快玩耍,但是你覺得差不多該回家了。于是,你告訴朋友:“我要回家了,再見!”這就像是客戶端發送一個FIN報文給服務器,表示希望斷開連接,并且報文中有一個序列號seq=x。
  2. 確認告別:

    你的朋友接收到你的告別后,會回應:“好的,再見!”這就像是服務器回復一個ACK報文給客戶端,同時把你的序列號值+1,作為ACK報文的序列號seq=x+1。這時,服務器進入CLOSE-WAIT狀態,而客戶端進入FIN-WAIT-2狀態。
  3. 朋友也要告別:

    現在輪到你的朋友想回家了,他也告訴你:“我也要回家了,再見!”這就像是服務器發送一個FIN報文給客戶端,報文中有一個序列號seq=y+1,然后服務器進入LAST-ACK狀態。
  4. 最后確認告別:

    你收到朋友的告別后,回應:“好的,再見!”這就像是客戶端發送一個ACK報文給服務器,同時把朋友的序列號值+1作為ACK報文的序列號seq=y+2。此時客戶端進入TIME-WAIT狀態,而服務器在收到你的ACK報文后進入CLOSE狀態。如果客戶端等待2MSL(Maximum Segment Lifetime)沒有收到回復,才最終關閉連接。

為什么會有四次揮手,因為TCP是全雙工通信,可以雙向傳輸數據。任何一方都可以在數據傳送結束后發出連續釋放的通知。

4. TCP與UDP

TCP(傳輸控制協議 Transmission Control Protocol):面向連接,可靠,基于字節流的傳輸層通信協議。

UDP(用戶數據報協議User Datagram Protocol):為應用程序提供了一種無需建立連接就可以發送封裝的IP數據包的方法。

類比一下:

  1. TCP,可靠快遞服務:

    • 概念: TCP就像一種可靠的快遞服務,是一種有序、向連接的服務,確保數據按照順序安全地傳送。
    • 特點: 它就像你寄出的包裹,有詳細記錄、需要簽收、傳輸慢但可靠,占用的資源較多。
  2. UDP,快速直達服務:

    • 概念: UDP則是一種快速直達的服務,不需事先建立連接,直接發送數據,速度快但不保證可靠性。
    • 特點: 這就像你隨手扔出的明信片,速度快,但可能有些信件丟失,資源消耗較少。
  3. 區別:

    • 連接性: TCP像是有追蹤號的包裹,而UDP則是不需要追蹤號的明信片。
    • 可靠性: TCP提供有序、可靠的服務,就像精細的快遞服務,而UDP則不做保證,數據傳遞不需要給出任何確認,且不保證數據不丟失以及到達順序,就像簡單的明信片。
    • 狀態: TCP保留發送和接收的狀態,而UDP則是無狀態的,不保留記錄。
    • 傳輸形式: TCP面向字節流的,像是整體傳輸的包裹,而UDP面向報文的,則是一張張獨立的明信片。
    • 效率: TCP由于追蹤號等機制,效率較低,而UDP由于簡單,傳輸較快。
  4. 使用場景:

    • TCP: 適用于對數據可靠性要求高的場景,如網頁瀏覽、文件傳輸、郵件傳輸等,就像你寄重要文件的包裹。
    • UDP: 適用于對速度要求高,能容忍少量數據丟失的場景,如視頻直播、實時游戲,就像你發送一些小禮物的明信片。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715786.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C語言】熟悉文件基礎知識

歡迎關注個人主頁:逸狼 創造不易,可以點點贊嗎~ 如有錯誤,歡迎指出~ 文件 為了數據持久化保存,使用文件,否則數據存儲在內存中,程序退出,內存回收,數據就會丟失。 程序設計中&…

微信小程序,h5端自適應登陸方式

微信小程序端只顯示登陸(獲取opid),h5端顯示通過賬戶密碼登陸 例如: 通過下面的變量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交歷史

命令說明git log查看歷史提交記錄git blame (file)以列表形式查看指定文件的歷史修改記錄 git log 在使用 Git 提交了若干更新之后,又或者克隆了某個項目,想回顧下提交歷史,我們可以使用 git log 命令查看。 git log 命令用于查看 Git 倉庫中…

LIN基礎:從LIN Frame開始

目錄: 1、LIN的網絡拓撲 2、LIN Frame 1)Header 2)Response 3、LIN的通信規則 1)LIN的發送行為示例 2)LIN的接收行為示例 雖然LIN總線的通信速率不高,工程中,最高的速率也就19200bps。…

c語言extern關鍵字

extern 是C和C中的關鍵字,用于聲明一個變量或函數的存在,但不進行定義。 它通常用于在一個源文件中引用另一個源文件中定義的變量或函數。 例如,extern int x; 表示 x 是一個整數變量,但它的實際定義將在其他文件中。在引用它的文…

StarRocks——Stream Load 事務接口實現原理

目錄 前言 一、StarRocks 數據導入 二、StarRocks 事務寫入原理 三、InLong 實時寫入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 詳細流程 3.3.1 任務寫入數據 3.3.2 任務保存檢查點 3.3.3 任務如何確認保存點成功 3.3.4 任務如何初始化 3.4 Exactly Once 保證…

Leetcode - 周賽386

目錄 一,3046. 分割數組 二,3047. 求交集區域內的最大正方形面積 三,3048. 標記所有下標的最早秒數 I 四,3049. 標記所有下標的最早秒數 II 一,3046. 分割數組 將題目給的數組nums分成兩個數組,且這兩個…

探索RedisJSON:將JSON數據力量帶入Redis世界

探索RedisJSON:將JSON數據力量帶入Redis世界 當我們談論數據存儲和查詢時,Redis和JSON都是無法忽視的重要角色。Redis以其高效的鍵值存儲、快速的讀/寫速度、以及豐富的數據結構贏得了開發者的喜愛。而JSON,作為一種輕量級的數據交換格式&am…

「Vue3系列」Vue3 條件語句/循環語句

文章目錄 一、Vue3 條件語句1. v-if2. v-else-if 和 v-else3. v-show4. 使用計算屬性進行條件渲染5. v-if與v-show比較v-ifv-show性能考慮使用場景 二、Vue3 循環語句1. 遍歷數組2. 遍歷對象3. 使用索引4. 注意事項 三、相關鏈接 一、Vue3 條件語句 在 Vue 3 中,你…

盲人出行:科技創造美好的未來

在繁忙的都市中,我每天都要面對許多挑戰,盲人出行安全保障一直難以得到落實。我看不見這個世界,只能依靠觸覺和聽覺來感知周圍的一切。然而,我從未放棄過對生活的熱愛和對未來的憧憬。在一次機緣巧合下,我認識了一款名…

C3_W2_Collaborative_RecSys_Assignment_吳恩達_中英_Pytorch

Practice lab: Collaborative Filtering Recommender Systems(實踐實驗室:協同過濾推薦系統) In this exercise, you will implement collaborative filtering to build a recommender system for movies. 在本次實驗中,你將實現協同過濾來構建一個電影推薦系統。 …

VLAN實驗報告

實驗要求: 實驗參考圖: 實驗過程: r1: [r1]int g 0/0/0.1 [r1-GigabitEthernet0/0/0.1]ip address 192.168.1.1 24 [r1-GigabitEthernet0/0/0.1]dot1q termination vid 2 [r1-GigabitEthernet0/0/0.1]arp broadcast enable [r1]int g 0/0/…

Mysql學習之MVCC解決讀寫問題

多版本并發控制 什么是MVCC MVCC (Multiversion Concurrency Control)多版本并發控制。顧名思義,MVCC是通過數據行的多個版本管理來實現數據庫的并發控制。這項技術使得在InnoDB的事務隔離級別下執行一致性讀操作有了保證。換言之&#xff0…

django的模板渲染中的【高級定制】:按數據下標id來提取數據

需求: 1:在一個頁面中顯示一張數據表的數據 2:不能使用遍歷的方式 3:頁面中的數據允許通過admin后臺來進行修改 4:把一張數據表的某些內容渲染到[xxx.html]頁面 5:如公司的新商品頁面,已有固定的…

《夢幻西游》本人收集的34個單機版游戲,有詳細的視頻架設教程,值得收藏

夢幻西游這款游戲,很多人玩,喜歡研究的趕快下載吧。精心收集的34個版本。不容易啊。里面有詳細的視頻架設教程,可以外網呢。 《夢幻西游》本人收集的34個單機版游戲,有詳細的視頻架設教程,值得收藏 下載地址&#xff1…

FDM打印機學習

以下內容摘自網絡,僅供學習討論,侵刪。 持續更新。。。 FDM打印機是通過噴頭融化絲狀耗材(PLA,ABS等材料),然后逐層涂在熱床上,一層一層逐級抬高。 結構分類 Prusa i3型是一種龍門結構&#…

JavaWeb 下拉菜單怎么實現選擇不同的顏色?

在JavaWeb中實現下拉菜單選擇不同顏色的功能是一種常見的需求&#xff0c;可以通過HTML、CSS和JavaScript結合Java后端來實現。 第一步&#xff1a;編寫HTML頁面 首先&#xff0c;我們需要創建一個HTML頁面&#xff0c;其中包含一個下拉菜單和一個用于顯示顏色的區域。 <…

python 爬取文本內容并寫入json文件

背景: 項目需要從html 提取說明書目錄 實現: 由于html是包含所有內容,所以將其中目錄部分手動重新生成一個html 文件dir26.html python import requests from bs4 import BeautifulSoup import jsonfilename "dir26.html" # 替換為實際的文件路徑 with open(fil…

ES 備份索引

1、先創建索引 PUT file_info_sps_demo1 {"settings": {"index": {"number_of_shards": "1","blocks": {"read_only_allow_delete": "true"},"max_result_window": "500000",&quo…

階躍信號與沖擊信號

奇異信號&#xff1a;信號與系統分析中&#xff0c;經常遇到函數本身有不連續點&#xff08;跳變電&#xff09;或其導函數與積分有不連續點的情況&#xff0c;這類函數稱為奇異函數或奇異信號&#xff0c;也稱之為突變信號。以下為一些常見奇異函數。 奇異信號 單位斜變信號 …