1. 程式人生 > >wireshark相關協議詳解和nc命令建立對話

wireshark相關協議詳解和nc命令建立對話

TFTP簡介:

  1. tftp簡單的檔案傳輸協議,用於實現誤判系統引導、小檔案傳輸、系統映象升級引導等
  2. TFTP基於UDP協議設計(69)埠採用停止等待方式進行檔案傳輸,採用超時重傳機制進行重傳
  3. TFTP將傳輸資料時將檔案資料切割成塊512位元組方式傳輸,當最後一塊不是512位元組,則表示傳輸完成。
  4. TFTP支援ASCII碼(文字,模式)和Octet(二進位制模式)兩種方式傳輸,可對檔案進行讀和寫兩種操作 自己搭建TFTP伺服器卡伊參考 https://edu.51cto.com/course/2453.html 陳鑫老師的課程 在這裡插入圖片描述 上圖,圖中1是一塊,讀塊的開始。 2是指明tftp的埠號是69 對於TFTP伺服器來說,要是隻有一個與使用者連線的話使用的是669號埠但是,當多個埠連線進來的時候,TFTP就會使用其他的高階口號進行連線,這是TFTP特殊的地方

下圖中,一個讀塊的資料幀包括,1讀資料請求,2原始檔名字,型別是Octet二進位制的形式進行傳輸。 在這裡插入圖片描述

其中用到了MSS和MTU: MTU與MSS的區別: mtu是網路傳輸最大報文包,mss是網路傳輸資料最大值。 mss加包頭資料就等於mtu. 簡單說拿TCP包做例子。 報文傳輸1400位元組的資料的話,那麼mss就是1400,再加上20位元組IP包頭,20位元組tcp包頭,那麼mtu就是1400+20+20. 當然傳輸的時候其他的協議還要加些包頭在前面,總之mtu就是總的最後發出去的報文大小。mss就是你需要發出去的資料大小。 1.MSS: Maxitum Segment Size 最大分段大小 2.MSS最大傳輸大小的縮寫,是TCP協議裡面的一個概念。 3.MSS就是TCP資料包每次能夠傳輸的最大資料分段。為了達到最佳的傳輸效能TCP協議在建立連線的時候通常要協商雙方的MSS值,這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP資料包包頭的大小20Bytes和TCP資料段的包頭20Bytes)所以往往MSS為1460。通訊雙方會根據雙方提供的MSS值得最小值確定為這次連線的最大MSS值。

在這裡插入圖片描述

在這裡插入圖片描述

tcp中的序列號能夠保證在進行是資料傳輸的過程中,客戶端和伺服器的互動不會被黑客使用欺騙手段欺騙,保證資料的安全。 在這裡插入圖片描述

在這裡插入圖片描述

採用wireshark抓包對上述過程進行說明: 從圖中可以看出,第一個[SYN]包的資訊是,客戶端高數伺服器我的埠是33162我想訪問你的埠23,伺服器迴應[SYN,ACK]允許你訪問埠23,我想訪問你的埠33162,然後客戶端迴應[ACK]建立連線 在這裡插入圖片描述

下圖中圈出的地方 push是緊急的意思: 在這裡插入圖片描述

在這裡插入圖片描述

NC命令

測試協議的時候若是沒有資料抓包可一下linux上自己創造,比如使用: nc 命令: 可以使用linux自帶的nc命令進行聊天,再使用wireshark進行抓包; nc -l 1234 # Server 1 nc 127.0.0.1 1234 # 127.0.0.1 換成 Server 1 的 IP 即可. 開啟兩個終端之後,就可以直接進行相互之間的通話了,想結束聊天可以使用^D (Ctrl + D)

掃描PORT看那個Port是開放的 nc -v -w 2 localhost -z 30-80

    localhost [127.0.0.1] 80 (http) open
    localhost [127.0.0.1] 53 (domain) open

傳送資料

cat filename | nc -l 9090 # 通過 9090 port 傳送 filename 的檔案內容
nc localhost 9090 # 接收 9090 port 傳來檔案內容

檔案傳送

nc -l 1234 > filename # 接收 Server 先建立 (Port: 1234)
nc 127.0.0.1 1234 < test.txt # 傳送 Server 然後建立連線併產送檔案的內容. (要j是使用的是其他的IP將127.0.0.1換成要使用的額IP)
Server 端加密: nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
Client 端解密: mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567

nc 與 telnet 連通

nc -l 1234 # 建立 1234 port socket server
telnet localhost 1234 # 連到 socket server
# 再來互相打字, 都可以相互接收
Server 直接開啟一個 Shell: nc -l 1567 -e /bin/bash -i
Client 連進來: nc 172.31.100.7 1567

nc 跑影音流

    Server: cat video.avi | nc -l 1567
    Client: nc localhost 1567 | mplayer -vo x11 -cache 3000 -