BSD socket层几个函数的介绍:
sock_alloc()获取一个inode结构,并初始化返回所需socket结构
sock_release_peer()仅用于UNIX域
sock_release()用于释放关闭一个套接字,调用sock_ops_release,sock_ops是一个proto_ops结构,是一个操作函数的集合;
sock_close()call sock_release() call sock_release_peer();
sock_socket(),其中type的判断如下:
SOCK_STREAM:流式数据交换TCP
SOCK_DGRAM:报文数据交换UDP
SOCK_SEQPACKET:序列报文套接字,内核树立方式
SOCK_RAW:原始套接字,直接传输层发送数据,应用程序自行建立传输首部
SOCK_PACKET:包类型套接字,直接网络层发送,应用程序自行建立网络层首部
sock_socketpair()只用于UNIX域,应用于两个进程间交换数据,类似于管道;
sock_accept()判断SO_ACCEPTCON标志置1,然后调用sock_alloc()分配一个新的套接字,再用sock->ops->dup拷贝监听套接字设置到新的套接字。
INET层:
proto数据结构,定义了传输层操作的一些列函数指针和字段,每个传输层协议都对应一个proto字段。对核对于管理proto数据结构,通过一个sock_array[]数组来实现并通过进程通行的端口作为下标插入到此数组中。sock_array有256个元素,每个元素都是一个链表,而端口号范围可以达到65536,其中1024以下保留给系统使用。具体的计算方法是取余:
n%SOCK_ARRAY_SIZE=N
分享到:
相关推荐
BSD的TCP/IP协议栈BSD的TCP/IP协议栈BSD的TCP/IP协议栈BSD的TCP/IP协议栈
具体内容包括网络栈总体架构分析、网络协议头文件分析、BSD socket 层实现分析、INET socket 层实现分析、网络层实现分析、链路层实现分析、网络设备驱动程序分析、系统网络栈初始化等内容。 本书适合 Linux 网络...
BSD协议栈路由模拟器 2.0 <br>操作说明: <br>本软件是利用winpcap的库文件与网卡进行交换,运行前请安装winpcap3.0以上版本。 支持路由查询配置功能,含ospf
具体内容包括网络栈总体架构分析、网络协议头文件分析、BSD socket层实现分析、INET socket层实现分析、网络层实现分析、链路层实现分析、网络设备驱动程序分析、系统网络栈初始化等内容。 本书适合Linux网络开发...
linux内核TCP/IP协议栈解析,Linux的网络协议栈Linux的协议栈其实是源于BSD的协议栈,它向上以及向下的接口以及协议栈本身的软件分层组织的非常好,适合中、高级开发人员
一些概念 微内核(Microkernel kernel): 在微内核中,大部分内核都作为独立的进程在特权状态下运行,...BSD风格就是通常说的 socket、bind、connect、listen、send和recv等系统接口的调用风格。 ..... ..... .....
(1)Socket应用层的各种网络应用程序基本上都是通过LinuxSocket编程接口来和内核空间的网络协议栈通信的。LinuxSocket是从BSDSocket发展而来的,它是Linux操作系统的重要组成部分之一,它是网络应用程序的基础。从...
具体内容包括网络栈总体架构分析、网络协议头文件分析、BSDsocket层实现分析、INETsocket层实现分析、网络层实现分析、链路层实现分析、网络设备驱动程序分析、系统网络栈初始化等内容。, 《Linux内核网络栈源代码...
iPhone网络通讯之BSD Socket篇 iPhone网络通讯之BSD Socket篇
VxWorks网络协议栈是VxWorks内部的一个BSD4.4兼容的实时TCP/IP协议栈,它从基于BSD4.3的协议栈升级而来,增加了完全 的路由支持以及Internet的一些新特性,使得VxWorks的网络性能更加优越。
TCP IP协议栈 第三卷参考代码,C语言编写
winsocket -BSD socket 入门讲义
cocos2d-x c++ BSD Socket.
Linux的协议栈其实是源于BSD的协议栈,它向上以及向下的接口以及协议栈本身的软件分层组织的非常好。 Linux的协议栈基于分层的设计思想,总共分为四层,从下往上依次是 :物理层,链路层,网络层,应用层。 ...
Unix/Linux BSD 套接字(Socket) 编程必备
ios bsd socket 客户端发送和接收数据