首页 > 系统相关 >【Linux】内核学习笔记(八)——网络栈简介 转载

【Linux】内核学习笔记(八)——网络栈简介 转载

时间:2024-03-21 19:11:07浏览次数:13  
标签:协议 socket 简介 网络层 网络 内核 Linux Socket

转载:https://void-star.icu/archives/601

网络栈从定义上还比较抽象。不过从功能上看,它是为了让主机之间交换数据而生的。

要实现网络栈,最原始的一个方式就是:将想发送的报文封装成帧,然后发出去就完事了。接收主机会按约定好的方式解析。不过这种存在一个问题,如果要加密怎么办?要支持QoS怎么办?要支持路由怎么办?这可坏了,所有的主机都得修改解析方式。所以,网络栈有个最基本的要求,就是可扩展。随之而来,数据包的格式也得可扩展。这就有了协议栈这种东西,各种协议报头是一层层叠加在数据之上的。对某个协议做修改,可以尽量不影响到其他的协议。

 

1.2. 各层次到底是什么?

接下来说说各层次到底对应于系统中的哪些函数或代码。

应用层对应于socket的一系列接口函数,比如socket、bind、listen等等,它们通常是库函数提供的,封装了系统调用,仍在内核之外。

表示层和会话层未单独实现,但是Linux中的BSD Socket层(net/socket.c)和INET Socket层(net/ipv4/af_inet.c)有实现这些功能。

传输层可就太经典了。TCP、UDP自不必多说,而ICMP、IGMP等网络层协议出于实现的方便考虑,也做在了这一层。

网络层包含路由功能,也是网络栈的重要组成部分。它还包括RAW套接字、SOCK_PACKET套接字等。没有包含ARP协议,不过都是怎么方便怎么来,理论上的定义不必深究。

链路层是网络栈和底层驱动的接口层,通常更关心数据帧是如何封装的。

再往下就是驱动层次,它已经离开了网络栈,来到drivers子目录下的设备驱动程序。

所以,Linux网络栈就包含BSD和INET Socket层、传输层、网络层和链路层。

标签:协议,socket,简介,网络层,网络,内核,Linux,Socket
From: https://www.cnblogs.com/ycjstudy/p/18088072

相关文章

  • Linux系统服务必学之NTP时间服务搭建
            NTP(NetworkTimeProtocol,网络时间协议)是一种用于同步计算机系统时间的网络协议。它允许计算机通过网络与时间服务器进行通信,以获取准确的时间信息并将其应用于本地系统。NTP的主要目标是确保计算机系统之间的时间同步,以便在分布式系统和网络中实现一致性和准......
  • linux 键盘按键键码捕捉测试
    捕捉linux中键盘输入对象的键码情况#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<errno.h>#include<linux/input......
  • Linux服务器上部署更新/重启nuxt项目
    启动/更新/重启nuxt项目步骤1、本地电脑打包生成nuxt文件夹2、压缩nuxt文件夹后上传到服务器3、替换掉服务器上旧的nuxt文件夹..3.1、建议备份服务器上的nuxt文件夹,不做删除操作,只重命名下mvnuxtnuxt20240310//重命名nuxt文件夹为nuxt20240310..3.2、......
  • Linux脏牛提权漏洞复现(DirtyCow)
    #简述脏牛(DirtyCow)是Linux中的一个提权漏洞。主要产生的原因是Linux系统的内核中Copy-on-Write(COW)机制产生的竞争条件问题导致,攻击者可以破坏私有只读内存映射,并提升为本地管理员权限。#前期准备靶机:vulnhub——Lampiao192.168.230.217攻击机:Kali192.168.230.128#复现......
  • linux 录屏软件
    对于Linux操作系统,我们经常使用SSH远程登录服务器命令行界面进行管理,有时需要记录所做的操作。此时,我们就需要用到script命令,它可以制作一份记录输出到终端的记录,该记录可以保存并在以后再打印出来。script命令默认情况下就被安装,无需额外安装,使用时会用到script和scriptrepla......
  • linux部署Minio
    linux部署Minio 1、官网https://min.io/docs/minio/linux/index.html?ref=docs-redirect下载minio程序运行文件,wgetwgethttps://dl.min.io/server/minio/release/linux-amd64/minio 2、创建数据目录mkdir-p/data/minio/data 3、移动minio服务运行......
  • Linux应用编程和网络编程
    一、Linux中的文件IO..11.1应用编程框架介绍..11.1.1.什么是应用编程..11.1.2.课程思路..11.1.3.什么是文件IO..11.2文件操作的主要接口API11.2.1.什么是操作系统API11.2.2.文件操作的一般步骤..11.2.3.重要概念:文件描述符..21.3一个简单的文件读写实例........
  • 二、linux基础命令
    2.1linux的提示符1.[root@localhost~]#提示符的格式1.[当前用户名@当前的主机名当前所在的位置]身份标识符root的提示符1.[root@localhost~]#tom的提示符1.[tom@localhost~]$身份标识有俩种1.#表示这个用户是管理员2.$表示这个用户是普通用户当前所在的位置......
  • Uboot启动Linux内核
    参考资料来源:https://www.bilibili.com/video/BV12E411h71h?p=22&vd_source=432ba293ecfc949a4174ab91ccc526d6正点原子Linux驱动开发指南 image全局变量:在bootm.c中,存在一个全局变量bootm_headers_timages;/*pointerstoos/initrd/fdtimages*/结构体定......
  • QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)
    点击查看专栏目录文章目录1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍  PDAL(PointDataAbstractionLibrary)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL提供了丰富的工具和库,用于处理......