UDP协议-UDP内核实现(了解)

时间:2024-04-02 15:58:20

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;
};

image-20240318141607451
对报文的管理->对链表的管理

缓冲区满了丢弃原理:

将结构体指向的缓冲区释放