耍廢也要有期限,期限是25分鐘,這樣才不會浪費太多時間,
我去買了全家的橘香巧克力,跟我所想的味道一樣,坦白說我不喜歡,
不是不好吃,是味道很奇怪,真要說的話,我覺得之前的小農鮮奶霜淇淋比較好吃,
然後更好吃的是草莓,比草莓更好吃的是抹茶,我期待這兩種口味回歸的時候。
今天懶洋洋的,連早上也被我刻意睡過去(平常的話就早起拚進度了阿)
我到現在還是什麼都不太想做!!
但是我今天無論如何都要完成昨天的功課,所以我提早停止耍廢了:
1.當發出一個 GET/POST 請求時,中間過程會經過哪些傳輸協定
[img]https://upload.cc/i1/2021/12/02/2f4oPT.png[/img]
一開始瀏覽器會先跟伺服器進行三向交握,接著瀏覽器會對伺服器發出request請求,
ex: get HTTP:www.google.tw 網址,在應用層HTTP發送,
之後伺服器在TCP傳輸層傳輸封包給瀏覽器,傳輸完成之後伺服器會傳送
HTTP 200 OK狀態碼,如果還有其他檔案例如CSS檔或是圖檔,
會再發出一次request請求,程序如上,等檔案都傳輸完成結束的時候,會進行
TCP四次揮手中止連線。
2.前端該理解的 TCP/IP 觀念
https://yakimhsu.com/project/project_w4_Network_TCP_IP.html
TCP/IP有四層,分別是應用層,HTTP就算是應用層,
傳輸層,TCP、UDP就算是傳輸層,
網路層,IP就算是網路層,
網路連結層,Ethernat乙太網就算是網路連結層。
3.在與後端介接 API 時,如何透過 TCP/IP 、wireshark、Fiddler 來觀察是否 ok
可以先用終端機ping網址,可以獲取該網址的IP,使用ip.src=="IP位置" or
ip.dst=="IP位置"篩選TCP封包,此時wireshark或是Fiddler可以看到各個封包的資訊
包括是否傳輸成功200 OK,和觀察封包大小,如果最後有四次揮手那就算OK了
4.輸入瀏覽器網址後,過程中發生了哪些事?
https://cythilya.github.io/2018/11/26/what-happens-when-you-type-an-url-in-the-browser-and-press-enter/
當使用者在瀏覽器網址列輸入網址並送出後,browser process 的 ui thread 接收到使
用者輸入的資料,ui thread 會要求發出網路請求,此時 network thread 開始執行
DNS lookup、建立連線,而當連線成功、資料傳輸完畢後,network thread 通知 ui
thread 資料已準備好,browser process 利用 IPC 將資料傳遞給 render process 以進
行頁面渲染,渲染完畢即可讓使用者看到畫面。
當使用者在瀏覽器網址列鍵入網址,瀏覽器的 ui thread 接收到輸入的資料,network
thread 便開始將這網址字串進行解析以便下載資源,而這個網址字串會解析成以下部份
…
協定類型:http、https、ftp 等。
伺服器位址:這裡可以放域名(domain name)或 IP address,若為域名就需要做 DNS
解析,例如:www.sample.com。
埠號:預設為 80,若為預設就不用寫出來。
資源層級 UNIX 檔案路徑,例如:/main/page/。
檔案名:index.html。
查詢(query string):以問號 ? 開始,並以 & 分隔,例如:?keyword=abc&happy=abc
。
片段 ID(fragment):以 hash 開頭,常用於定位,例如:#heading-1
URL 解析完畢後,若伺服器位址的地方是放置域名而非 IP address 就需要做 DNS 解析
以得到 IP,接著再建立 TCP/IP 連線來傳輸檔案。備註,由前面所述可知,網路連線是
single thread 的,一個請求即使用一個 network thread。
TCP/IP(Transmission Control Protocol/Internet Protocol)是網路上的一種通訊協
定,用於在不同設備或環境間傳送訊息。另,HTTPS 是指將 HTTP 使用 SSL 加密後再利
用 TCP 發送,加強安全性。TCP/IP 會經由三次握手建立連線,再經由四次揮手斷開連線
。
客戶端發送請求後,伺服器收到請求會進行處理並回應,而 HTTP 請求或回應訊息的結構
是:方法、通用標頭、請求或回應標頭、請求或回應身體。
客戶端(意即瀏覽器的 renderer process)收到從伺服器的回應後後會開始做解析和渲
染,這部份的流程為
=======================我坦白說以上我都看不太懂===============================
當你輸入網址後,瀏覽器會進行以下一系列流程,透過域名伺服器(Domain Name
Server, DNS) ,去進行域名解析,查找域名是對應哪個 IP 地址,最後從該 IP 地址獲
取網頁等網絡資源。
當域名解析成功,找到相關 IP 地址,接下來到Web伺服器處理請求,
當 web serve r接收到一個 HTTP 請求 (request),便會進行一個網站處理流程,最後產
生一個 HTML 的響應(response)給瀏覽器。
最後伺服器將處理好的HTML,交給瀏覽器處理,最後顯示在你的屏幕上
接下來就是瀏覽器進行處理, 伺服器將處理好的HTML字符串交給瀏覽器後被一句句讀取
解析。過程主要分為載入,解析,渲染。
=====================以上我看得懂但是又覺得太簡化了==========================
補充:
IPV4與IPV6的差別:
這兩個世代的網路協定,最明顯的差異就在於其提供的網路位址數量。IPv4的位址格式是
採用32位元長度,位址能提供2的32次方個,換算後約42億個。雖然IPv4有這麼多IP位址
,但依舊在2011年的2月3日消耗殆盡。
而IPv6的位址格式則採用128位元長度,其位址能提供2的128次方個。它所能提供的IP位
址,遠遠超過IPv4的數量,預估能讓地球上每個人都分到100萬個IP位址,或是地球上每
平方公尺面積皆提供1000多個IP位址。簡而言之,轉換到IPv6後,IP位址的數量多到幾乎
不可能用盡。