瀏覽器大多是用 TCP傳送,為何要用 TCP ?
TCP 是一個很嚴謹的協定,需要經過三向交握、四次揮手之後,才會終止這次 TCP 的傳送資料跟連接。
UDP 則是直接傳送資料,不會去知道有沒有成功收到。(常用:直播,掉封包也沒關係的地方,速度快!)(TCP 嚴謹 速度較慢)
是不是每個封包都會有,Frame、Ethernet、IPV4、TCP,這四筆資料?
不一定! 也有可能是用 IPV6,或是如果使用 UDP傳送(TCP就會換成UDP)、網路連結層也可能會用其他方式(手機)
當發出一個 GET/POST 請求時,中間過程會經過哪些傳輸協定?
Ans: 舉例 當發出 GET 的時候會發出三次握手,才會開始建立雙向溝通,這時候才能跟對方要資料,對方才會透過 TCP 傳送封包回來,封包整個回傳成功會出現 200 OK ,瀏覽器才可以開始顯示資料。網頁載入進來之後,開始渲染網頁內容,渲染過程中,需要圖片、CSS,瀏覽器繼續發出 HTTP請求到對方伺服器,對方接收到才會用 TCP 回傳封包,還為傳200 OK ,進行到整個完成之後,最後四次揮手結束整個連線。
一部 100 MB 影片是否能只用一個封包來進行傳送?
❌ 否。一個封包最多為 1500 bytes
如果一個網頁有 10 張圖片,是否要執行十次 TCP 三向交握來獲得?
❌ 否。三向交握只需要一次,成功之後即可開始傳送資料
在 post API 時,可以安心在 http 網站使用,不會被人看到資料或竄改封包
❌ 否。https 才有 SSL憑證加密封包(應用層與傳輸層中間有一個 SSL協定,所以傳輸的東西才有加密)
如果講求傳輸速度,就算資料掉一些也不打緊的話,該用 TCP 還是 UDP 傳輸?
UDP 不做來回確認。
只能寫 JavaScript AJAX 來撈 API 資料,無法透過其他方式來發送請求
❌ 發送 HTTP request 網路請求也可以透過 POSTMAN、終端機等。
如果 TCP 傳送封包弄丟了(斷網等),瀏覽器會不會再次向伺服器要資料?
⭕ TCP 是一個嚴謹的協定,他會確保資料都有傳送到,才會進行四次揮手結束連線。
後端語言只能開啟 web 伺服器與接資料庫,無法針對 TCP/IP、UDP 來設計服務?
❌ 看應用的方式決定 server 使用的內容。 (ex: PHP UDP server socket 雙向聊天室的溝通)
如果要看 HTTP 協定傳送, Fiddler、wireshark 都可以?
⭕
wireshark 每個封包都一定會有以下內容嗎?( Frame、Ethernet II、Internet Protocol Version 4、Transmission Control Protocol、Hypertext Transfer Protocol)
❌ 每個封包都是獨一無二的,內容都會被塞不同的資料,會藉此去做不同的事情。
前端筆記