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
分享到:
相关推荐
2. **套接字地址族层**:基于BSD Socket接口的不同协议栈入口,例如TCP/IP网络协议栈使用AF_INET套接字地址族,本地进程间通信则可能使用AF_UNIX域套接字等。 3. **网络协议层**:实现具体的网络协议族,如TCP/IP...
Linux协议栈是操作系统的核心组成部分,负责处理网络通信的各个层面,包括从应用层的数据传递到物理层的帧传输。在Linux系统中,TCP/IP协议栈的实现基于源代码,这为开发者提供了深入理解网络通信机制的窗口。下面将...
Linux网络系统由硬件层、数据链路层、IP层、INET Socket层和BSD Socket层以及应用层组成。这些层次分别对应于网络协议栈的不同部分,其中内核部分包括硬件层至IP层,而应用层则涉及用户空间的网络编程。 作者深入...
首先,TCP协议栈是基于TCP/IP模型构建的,该模型由五层组成:应用层、BSD Socket层、网络层、INET Socket层和硬件层。应用层是用户与网络交互的接口,如HTTP、FTP等协议在此层工作;BSD Socket层是应用程序与网络...
在文章的后半部分,讨论了Linux网络系统的结构和实现技术,包括BSD Socket层、套接字地址族层、INET Socket层等。文章还讨论了Linux网络协议栈的整体层次结构和一些关键数据结构的实现细节。 本文提出了基于Linux的...
### Linux协议栈阅读笔记知识点详解 #### 一、协议栈概述 ...通过以上知识点的详细解释,我们可以深入了解Linux协议栈的基本概念和技术细节,这对于进一步研究和开发基于Linux的网络应用程序具有重要的指导意义。
在Linux系统中,TCP/IP协议栈的实现是通过一系列相互关联的层次结构完成的,如BSD Socket层、INET Socket层和IP层。BSD Socket层提供了通用的套接字管理,支持基于IP的协议;INET Socket层管理TCP和UDP的传输端点;...
Linux下的TCP/IP协议栈包含了BSD Socket层,这一层提供了通用的套接字管理,支持INET Socket层处理TCP和UDP的传输端点。IP层则是协议栈的关键部分,它为数据添加IP头并负责数据包的路由。在IP层之下,有各种具体的...
本书主要对Linux 1.2.13内核协议栈的全部源代码做了详细的分析,该版本所有代码都在一个文件夹中,每种协议的实现都只有一个文件与之对应,分析该版本源代码可以方便读者迅速掌握Linux网络协议结构。 本书共分为5个...
Linux TCP/IP协议栈是操作系统内核中的核心组件,负责网络数据的传输和处理。它遵循了OSI模型的七层架构,但在Linux中通常被简化为四层:应用层、传输层、网络层和数据链路层。在这个文档中,我们将深入探讨Linux ...
Linux TCP/IP协议栈是操作系统中处理网络通信的核心组件,它负责实现Internet协议族(Internet Protocol Suite)中的TCP/IP协议。在阅读Linux内核的TCP/IP源代码时,理解其架构和主要组件至关重要。以下是对Linux...
Linux内核网络栈代码主要由四个层次组成:BSD socket层、INET socket层、TCP/UDP层和IP层。 BSD socket层:这是一个抽象的网络接口层,提供了基本的socket操作,包括socket创建、连接、发送和接收等。BSD socket层...
- **inet_proto_init**:这是INET域的初始化入口函数,由`proto_init`调用,用于初始化TCP/IP协议栈。 #### 第2章:BSD socket层实现分析 本章分析了Linux内核中BSD socket层的实现细节,重点关注net/protocol.c和...
- Socket是网络通信中的接口,可以看作是应用程序与网络协议栈之间的桥梁。 - 在Linux中,Socket主要基于Berkeley套接字API,源自BSD(Berkeley Software Distribution)系统。 2. **创建Socket**: - 使用`...
INET SOCKET主要处理TCP/IP协议栈中的工作,包括IP层和TCP/UDP等传输层协议。 3. **IP 层** - **Socket缓存**:为了提高性能,Linux内核会缓存socket结构,减少内存分配的开销。 - **接收IP包**:内核通过`...
INET Sockets层是Linux网络结构的关键部分,它支持TCP/IP协议栈。TCP/IP协议栈中的每一层都有其特定的职责,如链路层处理物理网络连接,网络层(IP层)负责数据包的路由,传输层(TCP/UDP层)处理端到端的数据传输,...
Linux 作为一个单一内核的操作系统,协议栈的实现嵌在系统内核中,本文分析了 TCP/IP 协议的基本原理以及 Linux 中的 TCP/IP 网络层次结构,重点介绍了 Linux 环境下的 socket 编程。 Linux 环境下的网络编程是指在...
Linux下的TCP/IP协议栈借鉴了4.4 BSD的模型,并支持BSD Socket编程模型。在Linux中,TCP/IP协议栈可以被细分为以下几个层次: 1. **Socket接口**:为用户提供Socket API,使得开发人员能够创建和管理Socket。 2. **...