今天我們把昨天看到的各種顏色、協定名稱,拆開來看裡面到底有什麼。
那我們要先介紹網際網路協議套組(英語:Internet Protocol Suite,縮寫IPS),這是一個最基本的封包所經歷的一生
最外層是 Ethernet(乙太網路層),這裡記錄了來源和目的 MAC 位址,就像是郵件上的寄件人和收件人地址。
往裡一層是 IP(網際網路層),這裡有來源 IP 和目的 IP,代表資料要送到哪台電腦。
再往下是 TCP/UDP(傳輸層),這裡有 Port(端口),就像是郵件送到哪一個信箱。TCP 還會有 SYN、ACK 這些標記,控制連線的建立和狀態。
應用層協定,像 DNS、HTTP、HTTPS 等等,才是我們真正看到的內容。
Ethernet 會告訴你哪台電腦傳的,IP 告訴你來源/目的位址,UDP提供來源/目的Port,而 DNS則說明這個封包要問的問題是「某個網址對應哪個 IP」。
上次有提到 TCP 連線裡的 SYN 跟 ACK,今天就來好好聊一下它們。
電腦在傳輸前需要確認是有與另一台主機相互連結,所以為了確保有連接上,採用這樣的方式
TCP 想建立一個連線,需要三步驟:
SYN:我先舉手,跟對方說「欸,我想連線!」
此時SYN = 1,seq = x(隨機選的一個序號)
SYN + ACK:對方點頭,回你「好啊,我收到你的請求,準備好了!」
SYN = 1(我也要同步,建立連線)
ACK = 1(確認A主機的請求)
seq = y(B隨機選的序號y)
ack = x + 1(表示收到了A主機的序號x,要等下個序號)
ACK:我再回一個「確認!」,這樣雙方就正式握好手,可以開始傳資料了。
ACK = 1(A主機再回一個 ACK 封包:)
seq = x + 1 (A的下一個序號)
ack = y + 1 (確認收到B的序號 y)
這三個步驟就叫 三向交握 (Three-way Handshake)。
那為什麼要這麼麻煩?
因為 TCP 要確保兩邊都「真的準備好」了,網路不會因為漏封包或假連線而亂掉。
如果少了這幾個確認步驟,可能資料還沒開始傳就已經掉在路上了。
下期我將帶著大家實際看封包內的詳細資訊隱藏著哪些內容。