前端必会的网络知识
講真我不喜歡這部分內容,雖然是通信出生,但是通信的知識它不進腦子呀,也不知道為啥會學通信。不過有些知識點算是通信和互聯網的常識,那也沒辦法,還是得學。只做自己喜歡的事太奢侈了,我們這些普通人能有什么辦法呢,學唄!
先來點簡簡單單的計算機常識吧,不寫出來怕記不住呀
馮諾依曼式計算機
要分清楚計算機之父是馮諾依曼,艾倫·麥席森·圖靈是計算機科學之父。
說一下什么是馮諾依曼式計算機,簡單來說,就是你現在接觸到的什么電腦、筆記本、平板、手機、電子手表之類的都是馮諾依曼式計算機,具體是滿足下面條件的電子設備
- 運算器:CPU,GPU(顯卡)
- 儲存器
- 內存RAM:讀寫速度快,斷電清空數據
- 硬盤ROM:數據持久化,讀寫速度相對較慢
- 控制器:主板上的一些器件
- 輸入設備:鍵盤,鼠標,麥克風,網口
- 輸出設備:顯示器,耳機,網口
【注】網口既是輸出設備又是輸入設備
這就是我不喜歡的點!對子網劃分一竅不通……
IP地址
IP地址的格式
IP地址為32位地址,分為四個八位段——xxx.xxx.xxx.xxx,每個段0~255,每個段都是由8個0、1組成的
IP地址的分類
IP地址分為ABCDE五類,其中D(多播)E類(試驗)咱用不著
- A類從0.0.0.0~127.255.255.255;
- B類從128.0.0.0~191.255.255.255;
- C類從192.0.0.0~223.255.255.255。
一個IP地址分為兩個部分(網絡ID和主機ID)
- A類前8位為網絡ID,后24位為主機ID
- B類前16位為網絡ID,后16位為主機ID
- C類前24位為網絡ID,后8位為主機ID
- DE類不區分網絡ID和主機ID(管他呢,反正咱也用不著)
關于IP和子網劃分我get到的東西
參考了這兩篇博客https://www.cnblogs.com/kangxinxin/p/9917961.html、IP子網劃分
我需要了解的知識點:子網劃分是為了解決IP資源不足的情況;子網掩碼可以隱藏子網,使外部看網絡沒有什么變化;同一網段下的主機IP地址不能相同,且相互之間可以通信;不同網段的主機之間想要通信需要經過服務器;能被別人訪問到的服務器需要公網IP;
在通信面前我宛如一個智障……
域名與DNS解析
域名:www.baidu.com
【注】不能通過域名直接訪問到計算機,但是域名和IP有對應關系
當在瀏覽器中輸入域名并按下回車后,瀏覽器查找IP的過程:瀏覽器緩存——>本機host——>從家中的路由器開始一級一級向上尋找——>LDNS(城市級別)服務器一級一級向上找——>gDNS(全球級別)服務器。該過程中,任何階段找到域名對應的IP則直接進行訪問。
五層網絡模型
數據從客戶端傳送給服務端時,依次在數據前加上HTTP協議、TCP協議、IP協議、數據鏈路層協議和物理層協議(注,物理層協議在最外層,因為是最后加上去的),經過互聯網傳輸后到達服務器,再依次去掉協議,這里相當于堆棧,first in last out.
物理層:物理層就是硬件,網卡端口、網線等;
數據鏈路層:規定了設備之間數據傳輸的格式,即0100110001
網絡層:尋找IP地址
運輸層:向用戶提供可靠的端到端(end-to-end)服務;
應用層:為應用軟件提供了服務,實現了HTTP協議
HTTP協議
HTTP協議分為請求和響應兩部分
請求(Request):
- 請求行:請求方式 url 協議版本;
- GET
- POST
- Host:訪問的域名
- Connection:keep-alive
- User-Agent
- Cookie
響應(Response)
- 響應頭
- 數據體
- 協議版本 狀態碼 message
GET與POST的區別
這個要劃重點了
1.如果沒有任何前提,不適用任何規范,只考慮語法和理論上的HTTP協議,GET和POST幾乎沒有什么區別,只有名字不一樣。
2.如果是基于RFC規范
1).理論上:GET與POST具有相同語法,但語義不同,GET是來獲取數據的,POST是提交數據的,其他方面沒有區別
2).實際上:各種瀏覽器是這個規范的實現者
常見不同
- GET的數據在URL是可見的(注:在URL可見不意味著在瀏覽器的地址欄內可見),POST請求不顯示在URL中;
- GET對長度是有限制的,POST長度是無限的;
- GET請求的數據可以收藏為標簽,POST請求到的數據不可收藏為標簽;
- GET請求后,按后退按鈕和刷新按鈕無影響,POST數據會重新被提交;
- GET編碼類型:application/x-www-form-url,POST的編碼方式有很多種:encodeapplication/x-www-form-urlencode,或者multipart/form-data;
- GET歷史參數會被保留到瀏覽器里,POST不會保存在瀏覽器中的;
- GET只允許ASCII編碼,POST沒有編碼限制,允許發二進制的;
- GET與POST相比.GET安全性較差,因為所發的數據時URL的一部分;
Cookie與Session
JS存的數據,在頁面關閉的時候就清除了,但是比如當我們登錄某寶時,關閉某一網頁,在某寶另一頁面,依舊有我們的登錄信息,這是因為有Cookie的存在,它可以持久化存儲數據,且cookie既是保存在瀏覽器里,也是存放在不同的域名下的.
我們來講解登錄的過程:
注:如果別人復制了你的cookie,就可以在他的電腦上登錄你的賬號了
cookie是保存在瀏覽器中的數據,而session是將登錄信息存在服務器端,session比cookie更安全,但是如果用戶量很大的時候,很消耗服務器的資源.
頁面
頁面的本質是帶有HTML格式的字符串
接下類講一下瀏覽器向服務器請求一個頁面的本質
服務器
眾所周知,服務器是一臺計算機,這臺計算機只提供服務(不是用戶用的,一般是Linux操作系統)
但是我們通常說的服務器實際上指的是服務容器,不是服務器
服務容器:是一個程序,可以監聽一個端口,讀取文件,并返回
如果我們想通過訪問服務容器的方式來訪問我們自己寫的頁面,就得安裝服務容器的程序
大白話就是給編輯器裝個插件,我用的是VS Code,安裝的插件Live Server
發送請求的方式
???暫時????就寫到這吧,后面講跨域吧
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: 一张图get jQuery所有方法
- 下一篇: 响应式原理