Linux系统是用C语言写的,udp结构定义:
typedef struct udp_header
{
uint32_t _src_port : 16;
uint32_t _dst_port : 16;
uint32_t _length : 16;
uint32_t _check_code : 16;
}udp_header;
udp没有发送缓冲区,但是udp要发送的报文需要在内核里面流动,因为需要向上交付,这就注定了网络通信期间系统内存在着大量的udp报文;所以操作系统也需要对这些报文进行管理,即先描述、再组织
struct sk_buff
{
char* start;
char* end;
char* pos;
int type;
//...
struct sk_buff* next;
};
对报文的管理->对链表的管理
缓冲区满了丢弃原理:
将结构体指向的缓冲区释放