
linux网络内核
......
RT-2022
这个作者很懒,什么都没留下…
展开
-
UDP protocol--udp_rcv
网络层对数据包处理完成后,会调用传输层的handler进行后续处理,UDP层的handler是在inet初始化注册的。inet_init inet_add_protocol(&udp_protocol, IPPROTO_UDP)udp_protocol定义如下:static struct net_protocol udp_protocol = { .early_demux = udp_v4_early_demux, .early_demux_handler = udp_v4_early原创 2022-03-19 16:35:45 · 4126 阅读 · 0 评论 -
UDP socket--udp_table
udp_table用于存放udp socket,其定义如下:struct udp_table { struct udp_hslot *hash; //hash table, sockets are hashed on (local port) struct udp_hslot *hash2;//hash table, sockets are hashed on (local port, local address) unsigned int mask;//number of slots in ha原创 2022-03-10 17:47:07 · 2844 阅读 · 0 评论 -
UDP socket--sendto and recvfrom
sendto系统调用原型sendto( int fd, void * buff, size_t len,unsigned int flags, struct sockaddr *addr,int addr_len)内核中处理流程:sendto( int fd, void * buff, size_t len,unsigned int flags, struct sockaddr *addr,int addr_len) __sys_sendto(fd, buff, len, flags, NU原创 2022-03-02 20:51:14 · 2042 阅读 · 0 评论 -
UDP socket--bind
创建一个udp socket后,此时socket中并没有任何地址相关的信息,服务器端需要将本地Ip地址及端口号bind到socket上。应用层会调下如下socket API:bind(fd, (struct sockaddr)&addr, addr_len)fd:socket所关联的文件描述符addr:本地地址及端口号addr_len:地址长度内核中的执行流程:bind(fd, (struct sockaddr)&addr, addr_len) __sys_bind(fd,原创 2022-03-02 10:46:52 · 2651 阅读 · 0 评论 -
INET LAYER--UDP socket
struct udp_sockstruct udp_sock 代表一个UDP socket,其结构如下:struct udp_sock { struct inet_sock inet { struct sock sk; … … INET specified … … } … … UDP specified … …}UDP socket创建当通过系统调用创建一个UDP socket时,内核中的处理流程如下:socket(AF_INET,SOCK_DGRAM, 0)原创 2022-02-28 15:51:46 · 387 阅读 · 0 评论 -
INET LAYER--struct sock
struct sock 是socket在网络层的表示,是网络层非常重要的一个数据结构,具体定义如下:struct sock{ struct sock_common __sk_common; socket_lock_t sk_lock; atomic_t sk_drops; int sk_rcvlowat; struct sk_buff_head sk_error_queue; struct sk_buff_head sk_receive_queue; /* * The backl原创 2022-02-26 20:05:00 · 196 阅读 · 0 评论 -
INET Layer
Linux 内核中定义了众多协议簇,在 include/linux/socket.h中定义如下:/* Supported address families. */#define AF_UNSPEC 0#define AF_UNIX 1 /* Unix domain sockets */#define AF_LOCAL 1 /* POSIX name for AF_UNIX */#define AF_INET 2 /* Internet IP Protocol */#define AF_原创 2022-02-26 19:04:43 · 419 阅读 · 0 评论 -
socket layer
Linux socket 层处于应用层与协议层之间,为应用层提供访问接口,对协议层进行抽象,屏蔽各协议间的差异。数据结构struct socket { socket_state state; short type; unsigned long flags; struct file *file; struct sock *sk; const struct proto_ops *ops; struct socket_wq wq;};sk:指向协议层sockops: 协议相关原创 2022-02-26 13:19:01 · 218 阅读 · 0 评论