今天我們要來認識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的全名是Internet Protocol,屬於網路通訊協議套組的網路層,是我們每台裝置的身分標識,如果要講的白話一點也就是電腦的門牌號碼。
常用的編碼方式
IPv4
最早被廣泛部署的網際協定,由32位元組成,提供約43億個位置,由於網路裝置在21世紀激增,在2011時被用完。
常見格式: 192.168.1.1
IPv6
目前網際協定最新的版本,為IPv4的後繼版本,由128位元組成,解決了IPv4位置不足的問題。
IP的兩大責任
尋址(Addressing):找到目標裝置在哪
分割與傳輸(Routing & Fragmentation): 將大資料拆成小「封包」,透過路由器一站一站傳送到目的地
因為一個裝置通常不會只跑一個服務,可能會同時處理登入、檔案傳輸等,因此需要PORT來區分服務。
TCP的全名為三次握手(Three-way Handshake),屬於在網路層之上的通訊層,存在的目的是確保雙方準備就緒,資料亂傳,可以說是連線的開場儀式。
1.SYN(Synchronize):由Client提供初始序號(Seq),告知伺服器連線要求
2.SYN-ACK(Synchronize+Acknowledge):Server提供它的序號並確認來自Client的序號
3.ACK(Acknowledge):Client確認來自Server的序號
完成這三個步驟後,連線才會正式建立,才能安全的傳輸資料
我們可以用Wireshark來觀察三次握手的流程
1.首先前往Wireshark的下載官網並依需求下載需要的版本
https://www.wireshark.org/download.html
2.根據指示安裝並開啟,開啟後的畫面長這樣
3.選擇目前正在用的網路,並在過濾條件輸入tcp.port == 443,如圖所示
這是Wireshark自己的display filter語法,用來決定要顯示那些封包
結構為
[協定].[欄位] [比較運算子] [值]
而上面的指令意思則為顯示所有TCP封包,443則是因為HTTPS的標準埠號為433,所以這個指令能幫我們過濾使我們只會看到我們要看的三次握手
4.訪問任意https網站,以下放上我訪問Google後的結果
確實可以觀察到Client→Server: SYN,Server→Client: SYN, ACK,Client→Server: ACK,而這表示我們成功看到了TCP三次握手的實際封包
今天我們學習了基本的網路傳輸方式,為我們後續學習TLS提前鋪路,至於為甚麼沒介紹UDP呢?因為我們後面要學的TLS是建立在TCP之上,因此我們沒有介紹UDP