`
waterlife
  • 浏览: 67885 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux协议栈之BSD和INET socket层(二)

阅读更多

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

分享到:
评论

相关推荐

    基于Linux网络协议栈的嵌入式开发

    2. **套接字地址族层**:基于BSD Socket接口的不同协议栈入口,例如TCP/IP网络协议栈使用AF_INET套接字地址族,本地进程间通信则可能使用AF_UNIX域套接字等。 3. **网络协议层**:实现具体的网络协议族,如TCP/IP...

    linux协议栈源码阅读笔记

    Linux协议栈是操作系统的核心组成部分,负责处理网络通信的各个层面,包括从应用层的数据传递到物理层的帧传输。在Linux系统中,TCP/IP协议栈的实现基于源代码,这为开发者提供了深入理解网络通信机制的窗口。下面将...

    基于Linux网络协议栈实现及应用.pdf

    Linux网络系统由硬件层、数据链路层、IP层、INET Socket层和BSD Socket层以及应用层组成。这些层次分别对应于网络协议栈的不同部分,其中内核部分包括硬件层至IP层,而应用层则涉及用户空间的网络编程。 作者深入...

    linux下网络协议栈的分析与原始套接口开发的设计与实现

    首先,TCP协议栈是基于TCP/IP模型构建的,该模型由五层组成:应用层、BSD Socket层、网络层、INET Socket层和硬件层。应用层是用户与网络交互的接口,如HTTP、FTP等协议在此层工作;BSD Socket层是应用程序与网络...

    基于Linux的嵌入式Web服务器网络协议栈的设计.pdf

    在文章的后半部分,讨论了Linux网络系统的结构和实现技术,包括BSD Socket层、套接字地址族层、INET Socket层等。文章还讨论了Linux网络协议栈的整体层次结构和一些关键数据结构的实现细节。 本文提出了基于Linux的...

    Linux协议栈阅读笔记

    ### Linux协议栈阅读笔记知识点详解 #### 一、协议栈概述 ...通过以上知识点的详细解释,我们可以深入了解Linux协议栈的基本概念和技术细节,这对于进一步研究和开发基于Linux的网络应用程序具有重要的指导意义。

    一种基于Linux系统的TCP_IP协议栈的实现 (1).pdf

    在Linux系统中,TCP/IP协议栈的实现是通过一系列相互关联的层次结构完成的,如BSD Socket层、INET Socket层和IP层。BSD Socket层提供了通用的套接字管理,支持基于IP的协议;INET Socket层管理TCP和UDP的传输端点;...

    一种基于Linux系统的TCP_IP协议栈的实现.pdf

    Linux下的TCP/IP协议栈包含了BSD Socket层,这一层提供了通用的套接字管理,支持INET Socket层处理TCP和UDP的传输端点。IP层则是协议栈的关键部分,它为数据添加IP头并负责数据包的路由。在IP层之下,有各种具体的...

    LINUX-1.2.13内核网络栈实现.pdf

    本书主要对Linux 1.2.13内核协议栈的全部源代码做了详细的分析,该版本所有代码都在一个文件夹中,每种协议的实现都只有一个文件与之对应,分析该版本源代码可以方便读者迅速掌握Linux网络协议结构。 本书共分为5个...

    linux tcpip协议栈.doc

    Linux TCP/IP协议栈是操作系统内核中的核心组件,负责网络数据的传输和处理。它遵循了OSI模型的七层架构,但在Linux中通常被简化为四层:应用层、传输层、网络层和数据链路层。在这个文档中,我们将深入探讨Linux ...

    linux-TcpIP协议栈源码阅读笔记.pdf

    Linux TCP/IP协议栈是操作系统中处理网络通信的核心组件,它负责实现Internet协议族(Internet Protocol Suite)中的TCP/IP协议。在阅读Linux内核的TCP/IP源代码时,理解其架构和主要组件至关重要。以下是对Linux...

    TCP、IP驱动结构介绍

    Linux内核网络栈代码主要由四个层次组成:BSD socket层、INET socket层、TCP/UDP层和IP层。 BSD socket层:这是一个抽象的网络接口层,提供了基本的socket操作,包括socket创建、连接、发送和接收等。BSD socket层...

    《LINUX内核网络栈源代码情景分析》笔记

    - **inet_proto_init**:这是INET域的初始化入口函数,由`proto_init`调用,用于初始化TCP/IP协议栈。 #### 第2章:BSD socket层实现分析 本章分析了Linux内核中BSD socket层的实现细节,重点关注net/protocol.c和...

    SOCKET-on-Linux.zip_linux socket_linux socket_linux_socket

    - Socket是网络通信中的接口,可以看作是应用程序与网络协议栈之间的桥梁。 - 在Linux中,Socket主要基于Berkeley套接字API,源自BSD(Berkeley Software Distribution)系统。 2. **创建Socket**: - 使用`...

    Linux网络源码学习

    INET SOCKET主要处理TCP/IP协议栈中的工作,包括IP层和TCP/UDP等传输层协议。 3. **IP 层** - **Socket缓存**:为了提高性能,Linux内核会缓存socket结构,减少内存分配的开销。 - **接收IP包**:内核通过`...

    Linux网络结构及实现分析.pdf

    INET Sockets层是Linux网络结构的关键部分,它支持TCP/IP协议栈。TCP/IP协议栈中的每一层都有其特定的职责,如链路层处理物理网络连接,网络层(IP层)负责数据包的路由,传输层(TCP/UDP层)处理端到端的数据传输,...

    Linux环境下的网络编程.pdf

    Linux 作为一个单一内核的操作系统,协议栈的实现嵌在系统内核中,本文分析了 TCP/IP 协议的基本原理以及 Linux 中的 TCP/IP 网络层次结构,重点介绍了 Linux 环境下的 socket 编程。 Linux 环境下的网络编程是指在...

    tcp/ip在linux下得实现

    Linux下的TCP/IP协议栈借鉴了4.4 BSD的模型,并支持BSD Socket编程模型。在Linux中,TCP/IP协议栈可以被细分为以下几个层次: 1. **Socket接口**:为用户提供Socket API,使得开发人员能够创建和管理Socket。 2. **...

Global site tag (gtag.js) - Google Analytics