iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Security

Izumi從零開始的30日WEB馬拉松系列 第 17

Day17-認識TCP/IP及網路通訊基礎

  • 分享至 

  • xImage
  •  

今天我們要來認識TCP/IP及網路通訊基礎,為我們之後要學TLS鋪路,因為TLS是建立在TCP之上的通訊協定,但TLS又是現在大部分通訊時會使用到的安全協定,不能不學,所以今天我們先學這些基礎的東西,後面再來學TLS。

網路通訊協議套組

通常分成七層OSI模型與四層TCP/IP模型,前者通常是理論模型;後者為實際網路模型,我們今天要介紹的則是後者,而我們今天會介紹的有其中兩層(網路層、傳輸層)

  • 網路介面層 (Link Layer)
    包含 OSI 的「實體層 + 資料鏈路層」
    技術:Ethernet、Wi-Fi、ARP。
    例子:確保資料能在同一區域內傳送。

  • 網路層 (Internet Layer)
    包含 OSI 的「網路層」
    技術:IP、ICMP。
    例子:決定資料要怎麼跨國到達另一個 IP。

  • 傳輸層 (Transport Layer)
    TCP、UDP。
    例子:網頁用 TCP。

  • 應用層 (Application Layer)
    包含 OSI 的「會話層、表示層、應用層」
    技術:HTTP、DNS、SMTP、TLS/SSL。
    例子:瀏覽器的HTTPS

IP簡單介紹

什麼是IP?

IP的全名是Internet Protocol,屬於網路通訊協議套組的網路層,是我們每台裝置的身分標識,如果要講的白話一點也就是電腦的門牌號碼。

  • 常用的編碼方式
    IPv4
    最早被廣泛部署的網際協定,由32位元組成,提供約43億個位置,由於網路裝置在21世紀激增,在2011時被用完。
    常見格式: 192.168.1.1
    IPv6
    目前網際協定最新的版本,為IPv4的後繼版本,由128位元組成,解決了IPv4位置不足的問題。

  • IP的兩大責任

尋址(Addressing):找到目標裝置在哪
分割與傳輸(Routing & Fragmentation): 將大資料拆成小「封包」,透過路由器一站一站傳送到目的地

PORT簡單介紹

什麼是埠號?

因為一個裝置通常不會只跑一個服務,可能會同時處理登入、檔案傳輸等,因此需要PORT來區分服務。

  • 常見埠號
    80:HTTP(網頁)
    443:HTTPS(安全網頁)
    22:SSH(遠端登入)
    53:DNS

TCP簡單介紹

什麼是TCP?

TCP的全名為三次握手(Three-way Handshake),屬於在網路層之上的通訊層,存在的目的是確保雙方準備就緒,資料亂傳,可以說是連線的開場儀式。

三次握手的流程

1.SYN(Synchronize):由Client提供初始序號(Seq),告知伺服器連線要求

2.SYN-ACK(Synchronize+Acknowledge):Server提供它的序號並確認來自Client的序號

3.ACK(Acknowledge):Client確認來自Server的序號

完成這三個步驟後,連線才會正式建立,才能安全的傳輸資料

TCP的小小實作

我們可以用Wireshark來觀察三次握手的流程

1.首先前往Wireshark的下載官網並依需求下載需要的版本
https://www.wireshark.org/download.html

2.根據指示安裝並開啟,開啟後的畫面長這樣

https://ithelp.ithome.com.tw/upload/images/20250927/20178008x8HksMoEzj.png

3.選擇目前正在用的網路,並在過濾條件輸入tcp.port == 443,如圖所示
https://ithelp.ithome.com.tw/upload/images/20250927/20178008FBhFbg7joX.png

這是Wireshark自己的display filter語法,用來決定要顯示那些封包

結構為

[協定].[欄位] [比較運算子] [值]

而上面的指令意思則為顯示所有TCP封包,443則是因為HTTPS的標準埠號為433,所以這個指令能幫我們過濾使我們只會看到我們要看的三次握手

4.訪問任意https網站,以下放上我訪問Google後的結果

https://ithelp.ithome.com.tw/upload/images/20250927/201780082a6t00JxTY.png

確實可以觀察到Client→Server: SYN,Server→Client: SYN, ACK,Client→Server: ACK,而這表示我們成功看到了TCP三次握手的實際封包

今日小結

今天我們學習了基本的網路傳輸方式,為我們後續學習TLS提前鋪路,至於為甚麼沒介紹UDP呢?因為我們後面要學的TLS是建立在TCP之上,因此我們沒有介紹UDP


上一篇
Day16-Session與JWT的比較
下一篇
Day-18 認識SQL Injection
系列文
Izumi從零開始的30日WEB馬拉松22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言