Try   HackMD

TCP/IP 常見問題

  1. 瀏覽器大多是用 TCP傳送,為何要用 TCP ?

    TCP 是一個很嚴謹的協定,需要經過三向交握、四次揮手之後,才會終止這次 TCP 的傳送資料跟連接。
    UDP 則是直接傳送資料,不會去知道有沒有成功收到。(常用:直播,掉封包也沒關係的地方,速度快!)(TCP 嚴謹 速度較慢)

  2. 是不是每個封包都會有,Frame、Ethernet、IPV4、TCP,這四筆資料?

    不一定! 也有可能是用 IPV6,或是如果使用 UDP傳送(TCP就會換成UDP)、網路連結層也可能會用其他方式(手機)

  3. 當發出一個 GET/POST 請求時,中間過程會經過哪些傳輸協定?

    Ans: 舉例 當發出 GET 的時候會發出三次握手,才會開始建立雙向溝通,這時候才能跟對方要資料,對方才會透過 TCP 傳送封包回來,封包整個回傳成功會出現 200 OK ,瀏覽器才可以開始顯示資料。網頁載入進來之後,開始渲染網頁內容,渲染過程中,需要圖片、CSS,瀏覽器繼續發出 HTTP請求到對方伺服器,對方接收到才會用 TCP 回傳封包,還為傳200 OK ,進行到整個完成之後,最後四次揮手結束整個連線。

  4. 一部 100 MB 影片是否能只用一個封包來進行傳送?

    ❌ 否。一個封包最多為 1500 bytes

  5. 如果一個網頁有 10 張圖片,是否要執行十次 TCP 三向交握來獲得?

    ❌ 否。三向交握只需要一次,成功之後即可開始傳送資料

  6. 在 post API 時,可以安心在 http 網站使用,不會被人看到資料或竄改封包

    ❌ 否。https 才有 SSL憑證加密封包(應用層與傳輸層中間有一個 SSL協定,所以傳輸的東西才有加密)

  7. 如果講求傳輸速度,就算資料掉一些也不打緊的話,該用 TCP 還是 UDP 傳輸?

    UDP 不做來回確認。

  8. 只能寫 JavaScript AJAX 來撈 API 資料,無法透過其他方式來發送請求

    ❌ 發送 HTTP request 網路請求也可以透過 POSTMAN、終端機等。

  9. 如果 TCP 傳送封包弄丟了(斷網等),瀏覽器會不會再次向伺服器要資料?

    ⭕ TCP 是一個嚴謹的協定,他會確保資料都有傳送到,才會進行四次揮手結束連線。

  10. 後端語言只能開啟 web 伺服器與接資料庫,無法針對 TCP/IP、UDP 來設計服務?

    ❌ 看應用的方式決定 server 使用的內容。 (ex: PHP UDP server socket 雙向聊天室的溝通)

  11. 如果要看 HTTP 協定傳送, Fiddler、wireshark 都可以?

  12. wireshark 每個封包都一定會有以下內容嗎?( Frame、Ethernet II、Internet Protocol Version 4、Transmission Control Protocol、Hypertext Transfer Protocol)

    ❌ 每個封包都是獨一無二的,內容都會被塞不同的資料,會藉此去做不同的事情。

tags:前端筆記

最後,親愛的大家!我需要你的大聲鼓勵 ٩(⚙ᴗ⚙)۶

如果覺得這篇文章對你有幫助,請給我個一個小小的鼓勵 ❤ 讓我知道,這會成為我寫下去很大的動力。
對了,我還有其他文章,如果有興趣也來逛逛吧!
(文章中如有覺得不妥之處、錯誤內容,也可以透過聯絡我,我會儘速改善,感謝!)

☞ YoJanni 珍妮 2021 正在設計轉職前端的路上,希望大家在學習的路上能夠一起成長
☞ 聯絡我