UDP協議測試
我們一般想到測試連通性時第一考慮到的就是使用ping命令。
但是我們知道ping命令使用的是icmp協議,屬於tcp/ip協議中的一個子協議,所以我們可以用ping或tcping命令來測試tcp的連通性還可以測試延遲情況。
但是當我們需要測試udp連接的時候ping命令顯然沒有任何作用,也就是說ping命令無法對udp進行測試
我們知道socket端口可以通過telnet x.x.x.x port來測試主機與目標端口的網絡是否通暢。那么udp端口如何測試呢:
這時候我們可以用到netcat,這個命令被譽為是網絡中的“瑞士軍刀”,功能非常強大,測試udp只是其中的一個功能變通。
在安全領域nc常用來端口監聽轉發,用的比較多的也是windows版的NC,在運維中需要常用到linux上的nc,而一般linux會默認集成這個命令,根據不同系統命令不同,有的為“nc”,有的為“netcat”,大家可以根據實際系統嘗試下。
UDP端口連接測試:
2.向UDP端口發送消息: nc -vu x.x.x.x xxxx
3.通過抓包命令進行抓包,接收UDP端口抓包: tcpdump -i eth0 -s 0 port 1814(注:抓包需要root權限)
udp數據發送測試
1,UDP 的小程序
我自己寫了一個UDP 的小程序,有一個UDP 的server,而且有UDP的client。
然后執行server和client,然后用tcpdump將該端口的UDP數據報文抓取出來。
執行的過程是這樣的。
client向server發送"xiyou"
server向client應答"wangzhe"
client程序在主機example上運行(192.168.0.18)
server程序在主機linux上運行(192.168.0.9)
2,UDP數據報文
linux@linux:~$ sudo tcpdump -vvv -X udp port 7777 [sudo] password for linux: tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 11:03:01.923227 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 48) example.local.43521 > linux.7777: [udp sum ok] UDP, length 20 0x0000: 4500 0030 0000 4000 4011 b677 c0a8 0190 E..0..@.@..w.... 0x0010: c0a8 0165 aa01 1e61 001c 4c34 7869 796f ...e...a..L4xiyo 0x0020: 7500 0000 0000 0000 0000 0000 0000 0000 u............... 11:03:01.923343 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 48) linux.7777 > example.local.43521: [bad udp cksum 6869!] UDP, length 20 0x0000: 4500 0030 0000 4000 4011 b677 c0a8 0165 E..0..@.@..w...e 0x0010: c0a8 0190 1e61 aa01 001c 8473 7761 6e67 .....a.....swang 0x0020: 7a68 6500 0000 0000 0000 0000 0000 0000 zhe.............
由上面的報文可知,有兩個UDP數據報文。
第一個報文是example主機上的client向server發送數據。
4500 0030 0000 4000 4011 b677 c0a8 0190 c0a8 0165 這20個數據是IP首部。
aa01 1e61 001c 4c34 這8個字節是UDP的首部。
7869 796f 7500 0000 0000 0000 0000 0000 0000 0000 這20個數據是我用sendto函數發送的
數據。
而將char req[20] = "xiyou" 的ASCII碼(16進制)就是:
78 69 79 6f 75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
第二個報文是linux向主機example做出的應答。
4500 0030 0000 4000 4011 b677 c0a8 0165 c0a8 0190 這20個數據是IP首部。
1e61 aa01 001c 8473 這8個字節是UDP首部。
7761 6e67 7a68 6500 0000 0000 0000 0000 0000 0000 這20個數據是應用層的數據。
而將char reply[20] = "wangzhe"的ASCII碼(16進制)就是:
77 61 6e 67 7a 68 65 0 0 0 0 0 0 0 0 0 0 0 0 0
由此看出,應用層的數據沒有夾雜其他的參數,全部是數據,均是字符的ASCII碼。
原文地址