socket()接口与内核协议栈的挂接
来源:互联网 发布:缺少网络协议怎么办 编辑:程序博客网 时间:2024/06/05 16:57
最近在看Brdige的代码,发现一个问题,同样的调用ioctl接口实现添加网桥、删除网桥、网桥增加网卡、网桥删除网卡等操作,一个应用层的接口,却通过两条路径实现,sock_ioctl和RTNETLINK(这本就不是一个级别的东西),而应用层的brctl-utils源码中并没有直接使用PF_NETLINK协议簇的情况,让我感到非常奇怪,因此想把glibc到系统调用,到协议簇注册,以及和VFS的关系再理一下。
这篇博客主要分析框架和流程,对于一些具体的细节,并不取讨论。所谓框架,指关键的数据结构、操作以及逻辑分层。此篇博客耗时12小时。
1、socket()到系统调用
Linux下,用户空间的调用的socket()接口由glibc实现,man socket如下,三个参数domain,type和protocol:
1
2
3
4
5
6
7
NAME
socket - create an endpoint for communication
SYNOPSIS
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
libc实现系统调用同名函数通常使用INT 0x80 + 系统调用号的方式陷入内核,一般来说,read对应sys_read,write对应sys_write.但是,socket系列却不是这样,为了节约系统调用号,将所有的
这篇博客主要分析框架和流程,对于一些具体的细节,并不取讨论。所谓框架,指关键的数据结构、操作以及逻辑分层。此篇博客耗时12小时。
1、socket()到系统调用
Linux下,用户空间的调用的socket()接口由glibc实现,man socket如下,三个参数domain,type和protocol:
1
2
3
4
5
6
7
NAME
socket - create an endpoint for communication
SYNOPSIS
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
libc实现系统调用同名函数通常使用INT 0x80 + 系统调用号的方式陷入内核,一般来说,read对应sys_read,write对应sys_write.但是,socket系列却不是这样,为了节约系统调用号,将所有的
0 0
- socket()接口与内核协议栈的挂接
- socket()接口与内核协议栈的挂接
- Linux内核协议栈之socket接口的内核实现(v2.6.18)
- Linux内核-协议栈-从BSD Socket接口层到传输层1
- Linux内核协议栈的socket查找缓存路由机制
- Linux内核协议栈的socket查找缓存路由机制
- socket协议的接口测试方法
- Linux内核协议栈(附4) accept得到新的socket的本端端口号是什么?
- Linux内核协议栈(2) 由简单的socket编程例子开始
- Linux内核协议栈(附2)内核如何通过file对象找到对应的socket对象?
- php socket 如何向https协议的接口发送数据
- TCP/IP协议与socket的关系
- 关于socket与网络协议的整理
- Linux内核网络协议栈1- socket文件系统注册
- Linux内核网络协议栈3-创建socket(1)
- Linux内核网络协议栈4-创建socket(2)
- Linux内核网络协议栈5-socket地址绑定
- Linux内核网络协议栈7-socket端口管理
- 为 Key-Value 数据库实现MVCC 事务
- Java实现文件上传
- java 枚举的使用 enum
- visual assist设置快捷键(其它安装的插件设置快捷键也在这里)
- JQuery实现页面的表格数据的增加与分页
- socket()接口与内核协议栈的挂接
- bat批处理文件学习笔记
- 数据库表记录的一种同步方案
- Python 语法之操作符和表达式
- MYSQL中replace into的用法
- 概率DP总结 by kuangbin
- 让自己成为太阳
- googleplay 付费(转)
- 日本作者Kardi Teknomo的网络教程