UDP | TCP |
---|---|
报头复杂 | 报头简单 |
面向无连接的通讯协议,UDP 数据包括目的端口号和源端口 | 三次握手建立连接,通讯完成四次挥手 |
确认,窗口、重传、阻塞等控制机制 | 快,可以实现广播 |
服务器常用的UDP端口号有:53(DNS)、69(TFTP)、161(SNMP) | 可以都非公认端口 |
在部分受限的网络环境中,UDP协议被受限,但TCP不受限制。Kali Linux提供一个UDP转TCP隧道工具udptunnel。可以通过 TCP 连接双向传输 UDP 数据包。它的主要目的(和最初的动机)是允许多媒体会议穿越只允许传出 TCP 连接的防火墙。
udptunnel -s TCP-port [-r] [-v] UDP-addr/UDP-port[/ttl]
tetzlav@81-89-105-86:~$ udptunnel -s 9999 -v 81.89.105.86/8888
Listening for TCP connections on port 9999
TCP connection from 81.89.105.86/52501
udptunnel -c TCP-addr[/TCP-port] [-r] [-v] UDP-addr/UDP-port[/ttl]
root@OpenWrt:/tmp# udptunnel -c 81.89.105.86/9999 127.0.0.1/8888 -v
Connected TCP to 81.89.105.86/9999
$ udptunnel -h
Usage: udptunnel -s TCP-port [-r] [-v] UDP-addr/UDP-port[/ttl]
or udptunnel -c TCP-addr[/TCP-port] [-r] [-v] UDP-addr/UDP-port[/ttl]
-s: Server mode. Wait for TCP connections on the port.
-c: Client mode. Connect to the given address.
-r: RTP mode. Connect/listen on ports N and N+1 for both UDP and TCP.
Port numbers must be even. # 传输RTP和RTCP的数据
-v: Verbose mode. Specify -v multiple times for increased verbosity.