文章目录
一、linux常用网络命令
netstat
netstat
netstat -l # 只列出listen状态服务
netstat -n # 将显示的信息用数字(id)代替
netstat -p # 显示端口和进程pid的关联
netstat -t # tcp
netstat -u # udp
netstat -a # 显示所有服务
pidof
获取某个进程名的进程 pid
pidof 进程名
二、UPD协议
协议格式
- 16位源端口号:表示数据从哪里来。
- 16位目的端口号:表示数据要到哪里去。
- 16位UDP长度:表示整个数据报(UDP首部+UDP数据)的长度。
- 16位UDP检验和:如果UDP报文的检验和出错,就会直接将报文丢弃。
报头
定长报头
struct udp_hdr
{
unsigned int src_port:16;//源端口号
unsigned int dst_port:16;//目的端口号
unsigned int udp_len:16;//UDP长度
unsigned int udp_check:16;//UDP检验和
}
udp 协议的特点
- 无连接:知道对端ip:端口就直接进行数据传输,不需要建立连接。
- 不可靠:没有确认机制,没有重传机制;如果网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。
- 面向数据报:不能够灵活的控制读写数据的次数和数量,必须一次性读完,不会拆分也不会合并。
udp缓冲区
-
UDP没有真正意义上的发送缓冲区。调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。
-
UDP具有接收缓冲区。只是一味地接收,并不能保证报文的顺序;如果缓冲区满了,再到达的UDP数据就会被丢弃。
-
UDP的socket既能读,也能写,因此UDP是全双工的。
udp 使用注意事项
UDP 报文中的 16 位长度字段,限制了 udp 报文的长度为 64KB,有效载荷选用 512 字节