iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
1

第四層的目的是為數據傳輸提供可靠性、流量控制、壅塞控制、多路複用等服務,這一層之上的應用也有了port的概念,除了要指定ip address之外,還需要指定port才能到達網路服務的接收端,如果說ip address是電腦的地址的話,那port就是電腦裡應用的地址。

第四層中以UDP和TCP最有名,UDP不提供任何可靠性、流量控制等服務,他只管送,所以他相較TCP更快,但是傳輸過程中可能會掉數據,經常用在視訊或live等要求即時但中途掉數據也沒關係的應用。打個比方來說,TCP就像是匯款,一定要確定對方的帳戶存在才會真的匯錢過去,UDP就像是郵差,亂填一個地址郵差還是會送,只是找不到目的包裹會被退回(丟失封包)

到目前為止,我們解析了長度為14的第二層鏈接層header以及長度為20的第三層ip層header,UDP的header長度為8bytes,分別代表source port, destination port, udp長度以及checksum,各佔2bytes

src_port, dest_port, udp_len, checksum = struct.unpack('!4H', packet[34:42])

  • src_port:來源應用的port
  • dest_port:目的地應用的port
  • udp_len:代表ump header + udp data的長度
  • checksum:檢驗數據是否傳輸過程中出錯

測試及驗證可以用這個指令
echo "This is my data" > /dev/udp/172.17.0.3/3000 # 172.17.0.3就是目的地ip

UDP比較簡單,所以他的header也沒有蘊含什麼資料,下一個TCP將會非常精彩他的header有許多資料保證了在不可靠的網路下能保證穩定傳輸

系列的成果將會放在這:https://github.com/kaichiachen/pytcpdump
文章配合著程式碼有助於學習 :)


上一篇
Day11 題外話 - 如何利用ARP發起中間人攻擊(Man-in-the-Middle)
下一篇
Day13 解析第四層-TCP的封包結構(1)
系列文
那些年還給老師的TCP/IP五層結構 - 用Python進行網路封包分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言