Linux内核-IO_网络设备
文章平均质量分 73
linux内核协议栈
生活需要深度
这个作者很懒,什么都没留下…
展开
-
图解 | 深入理解高性能网络开发路上的绊脚石 - 同步阻塞网络 IO
(假如我们没有使用 O_NONBLOCK 标记)。原创 2024-05-15 10:24:57 · 401 阅读 · 0 评论 -
网络部分深入揭秘 epoll 是如何实现 IO 多路复用的
假设确实没有就绪的连接,那接着会进入 init_waitqueue_entry 中定义等待任务,并把 current (当前进程)添加到 waitqueue 上。是的,当没有 IO 事件的时候, epoll 也是会阻塞掉当前进程。这个是合理的,因为没有事情可做了占着 CPU 也没啥意义。网上的很多文章有个很不好的习惯,讨论阻塞、非阻塞等概念的时候都不说主语。这会导致你看的云里雾里。拿 epoll 来说,epoll 本身是阻塞的,但一般会把 socket 设置成非阻塞。只有说了主语,这些概念才有意义。原创 2024-05-14 16:24:54 · 630 阅读 · 0 评论 -
Linux网络子系统
send发包过程1、网卡驱动创建tx descriptor ring(一致性DMA内存),将tx descriptor ring的总线地址写入网卡寄存器TDBA2、协议栈通过dev_queue_xmit()将sk_buff下送网卡驱动3、网卡驱动将sk_buff放入tx descriptor ring,更新TDT4、DMA感知到TDT的改变后,找到tx descriptor ring中下一个将要使用的descriptor5、DMA通过PCI总线将descriptor的数据缓存区复制到Tx FIFO。原创 2024-04-15 21:26:47 · 796 阅读 · 0 评论 -
Linux协议栈
一:课程总述这是一门以讲解 网络通讯和架构为主的实战课 网络通讯:写自己能够驾驭的网络通讯代码来实现具体的网络通讯功能 架构:架构师 1)架构师的责任:负责产品/软件 的总体规划设计 ,把掌握的技术整合/融合,从而构成一个产品。 2)架构师写代码的问题:从高级或者资深软件开发工程师升上去 比较靠谱 程序员:靠代码说话和吃饭的,扎实,从点到面来学;把每一段代码写好,自然就能连成一个面; 实战:“商业质量的代码”; 没有15...原创 2022-04-28 15:24:44 · 284 阅读 · 0 评论 -
PPPoE协议讲解以及拨号过程Wireshark抓包解析
双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。最后要终止,进入Terminate终止阶段后且资源释放完,即进入Dead阶段,终端连接通信包PADT,PADT报文接收端的服务器或客户端能够根据验证标识准确识别接收到的PADT报文是否是由当前PPPoE会话中合法的用户发送的,从而进行终止当前PPPoE会话或丢弃PADT报文的处理。我们的学习最重要的一点就是典型的应用场景下的PPPOE工作到底是如何的,清楚他的协议进行的流程并且对抓包中的重要信息能看懂。原创 2023-02-22 09:55:49 · 2536 阅读 · 0 评论 -
动态IP(DHCP)、静态IP、拨号(PPPOE)三种上网设置区别
对的,上面所讲解的只是连接网络的方式,那么,更换ip,是在本机有网络的情况下,更换到其它的不同地区ip地址上,所以,通过以上的上网设置,并不能改变本地的ip地址。动态IP这种上网方式,在未使用路由器的情况下,只需要把这根宽带网线连接到电脑上,电脑上的IP地址 设置为自动获得,电脑就可以实现上网了。总结:上网设置只是网络连接的基础操作,那么,代理ip,是通过本地网络环境的情况下,更换到不同地区的ip上,二者是前后关系。动态IP(DHCP)、静态IP、拨号(PPPOE)三种上网设置区别。三、拨号(PPPOE)原创 2023-02-22 09:49:53 · 27236 阅读 · 3 评论 -
TCP三次握手(详解)
客户端设置了一个超时时间,超过了就重新发送一个TCP连接请求,那么如果没有第三次握手的话,服务端是不知道客户端是否收到服务返回的信息的,这样没有给服务器端一个创建还是关闭连接端口的请求,服务器端的端口就一直开着,等到客户端因超时重新发出请求时,服务器就会重新开启一个端口连接。由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上发送的;原创 2023-02-22 09:45:46 · 230 阅读 · 0 评论 -
【网络拥塞管理和避免(队列调度算法FIFO/SP/RR/WRR/DRR/MDRR/WDRR/WFQ)】
区间[0,y]比[0,x]的范围大,随机数落入区间[0,y]比落入区间[0,x]的可能性大,因此,相同队列长度时,最大丢弃概率配置得越大,丢弃可能性越高。区间[0,y]比[0,x]的范围大,随机数落入区间[0,y]比落入区间[0,x]的可能性大,因此,队列越长,新到的报文被丢弃的可能性越高。在报文出队的时候,首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,直到发送完,接着是低优先队列。这样,较高优先级队列的报文将会得到优先发送,而较低优先级的报文后发送。原创 2023-01-06 17:51:27 · 1301 阅读 · 0 评论 -
ping处理流程
简述:1.pc1-ping -pc2-------2.pc1准备封包发送--------3.发现没pc2的Mac-------4.ARP请求PC2的Mac(发请求时交换机1学到接口1连接pc1,回请求时交换机1学到接口2连接pc2)------5.重新封包--------6.pc1发包给交换机1接口1-----7.交换机1根据转发表从接口2发出------8.pc2收到包,并按要求回包-------9.pc2发包给pc1-----10.pc1收到回包,一次完整内网ping包过程完成。...原创 2022-08-26 19:44:51 · 3552 阅读 · 0 评论 -
三层IP基本概念
一:TCP连接的三次握手tcp:可靠的,面向连接的协议udp:不可靠的,无连接的协议大家必须要懂的TCP的三次握手,只有TCP有三次握手【UDP没有】(1.1)最大传输单元MTUMTU(Maximum Transfer Unit):最大传输单元;MTU:每个数据包包含的数据最多可以有多少个字节;1.5K左右;你要发送100K,操作系统内部会把你这100K数据拆分成若干个数据包【分片】,每个数据包大概1.5K之内【大概拆解成68个包】;对端重组;我们只需要知道有 拆包,组包;.原创 2022-04-30 21:17:28 · 282 阅读 · 0 评论 -
二层基本协议
一:信号集一个进程,必须能够记住 这个进程 当前阻塞了哪些信号000000000000000000000我们需要 “信号集 ”的这么一种数据类型(结构),能够把这60多个信号都表示下(都装下)。0000000000,0000000000,0000000000,00,0000000000,0000000000,0000000000,00 (64个二进制位)linux 是用sigset_t结构类型来表示信号集的;typedef struct{ unsigned long sig..原创 2022-04-29 12:44:55 · 682 阅读 · 0 评论 -
DM9000网卡驱动 - linux操作系统
第一个是网卡整个系统架构是什么样子的。第二个是DMA是怎么进行数据处理的。原创 2022-08-12 14:34:36 · 525 阅读 · 0 评论 -
几种开放源码的TCPIP协议栈
几种开放源码的TCPIP协议栈概述1、BSD TCP/IP协议栈BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP 栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。2、uC/IPuC/IP是由Guy Lancaster编写的一套基于uC/OS且开放源码的原创 2022-04-24 17:31:43 · 947 阅读 · 0 评论 -
数据通信常用概念讲解
前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、单工、半双工与全双工再数据传输方向上,单工数据传输方向是单向的;banshuang示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as np impor原创 2021-11-01 17:30:32 · 144 阅读 · 0 评论 -
总结 - Linux C++网络编程(三十二)
一:课程概要总结二:课程技术总结完整项目:通讯框架+业务逻辑框架【理解成框架课,也没问题】项目包括(1)项目是非常完整的多线程高并发服务器程序(2)按照包头+包体格式 收,完美的解决了数据粘包的问题(3)根据收到的数据包 来执行不同的业务逻辑(4)把业务处理产生的结果数据包正确的返回给客户端用到的主要开发技术(1)epoll高并发通讯技术,用的是水平触发模式【LT】,简单提及边缘触发模式【ET】(2)通过线程池技术处理业务逻辑(3)多线程,线程之间的同步技术包原创 2022-05-03 12:01:01 · 102 阅读 · 0 评论 -
惊群与性能优化 - Linux C++网络编程(三十一)
一:cpu占比与惊群top -p pid,推荐文章:https://www.cnblogs.com/dragonsuc/p/5512797.html惊群:1个master进程 4个worker进程一个连接进入,惊动了4个worker进程,但是只有一个worker进程accept();其他三个worker进程被惊动,这就叫惊群;但是,这三个被惊动的worker进程都做了无用功【操作系统本身的缺陷】;官方nginx解决惊群的办法:锁,进程之间的锁;谁获得这个锁,谁就往监听端口增加EPOLL.原创 2022-05-03 11:04:40 · 1427 阅读 · 0 评论 -
超负荷安全 - Linux C++网络编程(三十)
一:输出一些观察信息每隔10秒钟把一些关键信息显示在屏幕上;(1)当前在线人数;(2)和连接池有关:连接列表大小,空闲连接列表大小,将来释放的连接多少个;(3)当前时间队列大小(4)收消息队列和发消息队列大小;打印统计信息的函数:printTDInfo(),每10秒打印一次重要信息;二:遗漏的安全问题思考(2.1)收到太多数据包处理不过来限速:epoll技术,一个限速的思路;在epoll红黑树节点中,把这个EPOLLIN【可读】通知干掉;在printTDInfo(原创 2022-05-03 08:48:21 · 183 阅读 · 0 评论 -
接入数与黑客攻击 - Linux C++网络编程(二十九)
一:控制并发连入数量epoll支持高并发:数万,数十万,百万【一台计算机】;单纯探讨epoll支持多少并发连接,意义不是很大;并发数量取决于很多因素:(1)你采用的开发技术:epoll,支持数十万并发(2)你这个程序收发数据的频繁程度,以及具体 要处理的业务复杂程度(3)你实际的物理内存;可用的物理内存数量,会直接决定你能支持的并发连接(4)一些其他的tcp/ip配置项,以后 有机会再谈;一般,我们日常所写的服务器程序,支持几千甚至1-2万的并发,基本上就差不多了;一原创 2022-05-02 21:38:29 · 345 阅读 · 0 评论 -
心跳报文 - Linux C++网络编程(二十八)
一:前面学习的总结核心架构浓缩总结实现的功能:(1)服务器按照包头包体格式正确的接收客户端发送过来的数据包;(2)根据手动的包的不同来执行不同的业务处理逻辑;(3)把业务处理产生的结果数据包返回客户端;咱们用到的主要技术(1)epoll高并发通讯技术(2)线程池技术来处理业务逻辑(3)线程之间的同步技术包括互斥量、信号量其他技术:信号,日志打印,fork()子进程,守护进程借鉴了哪些官方nginx的精华代码(1)master进程,多个worker子进程——原创 2022-05-02 20:38:33 · 2324 阅读 · 0 评论 -
LP发包机制 - Linux C++网络编程(二十七)
针对 当socket可写的时候【发送缓冲区没满】,会不停的触发socket可写事件 ,我们提出两种解决方案【面试可能考试】;b)两种解决方案,来自网络,意义在于我们可以通过这种解决方案来指导我们写代码;b.1)第一种最普遍的解决方案: 需要向socket写数据的时候把socket写事件通知加入到epoll中,等待可写事件,当可写事件来时操作系统会通知咱们; 此时咱们可以调用wirte/send函数发送数据,当发送数据完毕后,把socket的写事件通知从红黑树中移除; 缺...原创 2022-05-02 18:21:02 · 323 阅读 · 0 评论 -
处理脉搏实战 - Linux C++网络编程(二十六)
一:业务逻辑细节写法说明_HandleRegister(),_HandleLogIn()里边到底执行什么,是属于业务逻辑代码;写法,大家自己决定100元, 加血90,加魔80发送数据代码下节实现二:连接池中连接回收的深度思考服务器 7*24不间断,服务器稳定性是第一位的;一个服务器,如果不稳定,那么谈别的都是虚的;稳定性:连接池连接回收问题;如果客户端【张三】断线,服务器端立即回收连接,这个连接很可能被紧随其后连入的新客户端【李四】所使用,那么这里就很可能产生麻烦;a).原创 2022-05-02 10:24:46 · 126 阅读 · 0 评论 -
多线程与多线程池 - Linux C++网络编程(二十五)
一:学习方法不但要学习老师编写程序的方法,风格,更要学习老师解决一个问题的思路。编程语言、语法这种东西如果你不会,可以通过学习来解决,但是这种 解决问题的思路, 是一种只可意会难以言传的东西, 却恰恰能够决定你在开发道路上走多远的东西,搞程序开发一定要培养自己非常清晰的逻辑思维,不然,这条程序开发之路 你会走的特别艰辛;二:多线程的提出用 “线程” 来解决客户端发送过来的 数据包一个进程 跑起来之后缺省 就自动启动了一个 “主线程”,也就是我们一个work...原创 2022-05-01 20:56:51 · 834 阅读 · 0 评论 -
epoll精粹三 - Linux C++网络编程(二十三)
一:ET,LT模式深入分析及测试LT:水平触发/低速模式,这个事件没处理完,就会被 一直触发;ET:边缘触发/告诉模式,这个事件通知只会出现一次;普遍认为ET比LT效率高一些,但是 ET编程难度比LT大一些;ET模式下,如果没有数据可接收,则recv会返回-1思考:为什么ET模式事件只触发一次[事件被扔到双向链表中一次,被epoll_wait取出后就干掉] LT模式事件会触发多次呢?[事件如果没有处理完,那么事件会被多次往双向链表中扔]如何选择ET,还是LT如果..原创 2022-05-01 16:20:45 · 96 阅读 · 0 评论 -
epoll精粹二 - Linux C++网络编程(二十三)
一:ngx_epoll_process_events函数调用位置上节课:epoll_create();epoll_ctl();--我们目前已经做好准备 等待迎接客户端主动发起三次握手连入;介绍ngx_epoll_process_events();(i)ngx_master_process_cycle() //创建子进程等一系列动作(i) ngx_setproctitle() //设置进程标题 (i) ngx_start_worke...原创 2022-05-01 15:52:23 · 545 阅读 · 0 评论 -
epoll精粹一 - Linux C++网络编程(二十三)
一:一个更正,一个注意更正:kqueue注意:即将进入最重要,最核心的内容讲解;戒骄戒躁,代码精华。简单,容易理解;大家要认真学习老师给出来的代码;二:配置文件的修改增加worker_connections项三:epoll函数实战epoll_create(),epoll_ctl(),epoll_wait();系统提供的函数调用(3.1)ngx_epoll_init函数内容epoll_create():创建一个epoll对象,创建了一个红黑树,还创建了一个双向链表;原创 2022-05-01 12:42:46 · 314 阅读 · 0 评论 -
端口监听与epoll理论 - Linux C++网络编程(二十二)
一:监听端口(1.1)开启监听端口二:epoll技术简介(2.1)epoll概述(1)I/O多路复用:epoll就是一种典型的I/O多路复用技术:epoll技术的最大特点是支持高并发;传统多路复用技术select,poll,在并发量达到1000-2000,性能就会明显下降;epoll,kquene(freebsd)epoll,从linux内核2.6引入的,2.6之前是没有的;(2)epoll和kquene技术类似:单独一台计算机支撑少则数万,多则数十上百万并发连接的核心技原创 2022-05-01 11:13:22 · 682 阅读 · 0 评论 -
Listen - Linux C++网络编程(二十一)
一:listen()队列剖析listen():监听端口,用在 TCP连接 中的 服务器端 角色;listen()函数调用格式:int listen(int sockfd, int backlog);要理解好backlog这个参数,我们需要先谈一谈 “监听套接字 队列”的话题;(1.1)监听套接字的队列对于一个调用listen()进行监听的套接字,操作系统会给这个套接字 维护两个队列;a)未完成连接队列 【保存连接用的】 当客户端 发送tcp连接三次握手的第一次【sy..原创 2022-05-01 10:17:56 · 838 阅读 · 0 评论 -
TCP状态转换 - Linux C++网络编程(二十)
一:TCP状态转换同一个IP(INADDR_ANY),同一个端口SERV_PORT,只能被成功的bind()一次,若再次bind()就会失败,并且显示:Address already in use 就好像一个班级里不能有两个人叫张三;结论:相同IP地址的相同端口,只能被bind一次;第二次bind会失败;介绍命令netstat:显示网络相关信息-a:显示所有选项-n:能显示成数字的内容全部显示成数字-p:显示段落这对应程序名netstat -anp | grep -..原创 2022-04-30 21:35:49 · 222 阅读 · 0 评论 -
TCP三次握手 - Linux C++网络编程(十九)
一:TCP连接的三次握手tcp:可靠的,面向连接的协议udp:不可靠的,无连接的协议大家必须要懂的TCP的三次握手,只有TCP有三次握手【UDP没有】(1.1)最大传输单元MTUMTU(Maximum Transfer Unit):最大传输单元;MTU:每个数据包包含的数据最多可以有多少个字节;1.5K左右;你要发送100K,操作系统内部会把你这100K数据拆分成若干个数据包【分片】,每个数据包大概1.5K之内【大概拆解成68个包】;对端重组;我们只需要知道有 拆包,组包;原创 2022-04-30 20:52:35 · 451 阅读 · 0 评论 -
C/S TCP/IP协议 - Linux C++网络编程(十八)
本节课是一些必须要讲解的基础知识;请大家认真倾听;一:客户端与服务器客户端:client,一般字母c表示服务器:server,一般字母s表示 ,所以c/s一般就是 :客户端/服务器客户端:就是一个程序,服务器:也是 一个程序;(1.1)解析一个浏览器访问网页的过程(1.2)客户端服务器角色规律总结a)数据通讯总在两端进行,其中一端叫客户端,另一端叫服务器端;b)总有一方先泛起第一个数据包,这发起第一个数据包的这一端,就叫客户端【浏览器】;被动收到第一个数据包这端,叫服原创 2022-04-30 17:37:13 · 1015 阅读 · 0 评论 -
守护进程与信号完善 - Linux C++网络编程(十七)
一:守护进程功能的实现三章二节 (1)拦截掉SIGHUP,那么终端窗口关闭,进程就不会跟着关闭 (2)守护进程,三章七节,一运行就在后台,不会占着终端。创建守护进程ngx_daemon();调用ngx_daemon()的时机: worker()子进程创建之前;ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'(1)一个master,4个worker进程,状态S,表示休眠状态,但.....原创 2022-04-30 15:33:24 · 120 阅读 · 0 评论 -
信号与进程实战 - Linux C++网络编程(十六)
一:信号功能实战signal():注册信号处理程序的函数;商业软件中,不用signal(),而要用sigaction();二:nginx中创建worker子进程官方nginx ,一个master进程,创建了多个worker子进程;master process ./nginxworker process(i)ngx_master_process_cycle() //创建子进程等一系列动作(i) ngx_setproctitle() ......原创 2022-04-30 11:09:57 · 185 阅读 · 0 评论 -
Log日志 - Linux C++网络编程(十五)
一:基础设施之日志打印实战代码一1-3万行代码,想收获多少就要付出多少,平衡注意代码的保护,私密性日志的重要性:供日后运行维护人员去查看、定位和解决问题;新文件:ngx_printf.cxx以及ngx_log.cxx。ngx_printf.cxx:放和打印格式相关的函数;ngx_log.cxx:放和日志相关的函数;ngx_log_stderr() :三个特殊文件描述符【三章七节】,谈到了标准错误 STDERR_FILENO,代表屏幕ngx_log_stderr():往屏.原创 2022-04-30 07:53:17 · 501 阅读 · 0 评论 -
配置文件实战开始 - Linux C++网络编程(十四)
一:基础设施之配置文件读取(1.1)前提内容和修改使用配置文件,使我们的服务器程序有了极大的灵活性,是我们作为服务器程序开发者,必须要首先搞定的问题;配置文件:文本文件,里边除了注释行之外不要用中文,只在配置文件中使用字母,数字下划线 以#号开头的行作为注释行(注释行可以有中文)我们这个框架(项目),第一个要解决的问题是读取配置文件中的配置项(读到内存中来);(1.2)配置文件读取功能实战代码写代码要多顾及别人感受,让别人更容易读懂和理解,不要刻意去炫技;这种炫技的..原创 2022-04-29 20:47:33 · 198 阅读 · 0 评论 -
服务器程序框架 - Linux C++网络编程(十三)
一:信号高级认识范例ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'用kill 发送 USR1信号给进程(1)执行信号处理函数被卡住了10秒,这个时候因为流程回不到main(),所以main中的语句无法得到执行;(2)在触发SIGUSR1信号并因此sleep了10秒种期间,就算你多次触发SIGUSR1信号,也不会重新执行SIGUSR1信号对应的信号处理函数, 而是会等待上一个SIGUSR1信号..原创 2022-04-29 19:08:25 · 136 阅读 · 0 评论 -
守护进程 - Linux C++网络编程(十二)
一:普通进程运行观察 ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'a)进程有对应的终端,如果终端退出,那么对应的进程也就消失了;它的父进程是一个bashb)终端被占住了,你输入各种命令这个终端都没有反应;二:守护进程基本概念守护进程 一种长期运行的进程:这种进程在后台运行,并且不跟任何的控制终端关联;基本特点: a)生存期长[不是必须,但一般应该这样做],一般是操作系统启....原创 2022-04-29 17:19:22 · 428 阅读 · 0 评论 -
fork()函数详解 - Linux C++网络编程(十一)
一:fork()函数简单认识创建进程;进程的概念:一个可执行程序,执行起来就是一个进程,再执行起来一次,它就又是一个进程(多个进程可以共享同一个可执行文件) 文雅说法:进程 定义为程序执行的一个实例;在一个进程(程序)中,可以用fork()创建一个子进程,当该子进程创建时, 它从fork()指令的下一条(或者说从fork()的返回处)开始执行与父进程相同的代码;a)说白了:fork()函数产生了一个和当前进程完全一样的新进程,并和当前进程一样从fork()...原创 2022-04-29 16:24:07 · 518 阅读 · 0 评论 -
nginx介绍 - Linux C++网络编程(三 - 七)
一:nginx简介nginx(2002年开发,2004年10才出现第一个版本0.1.0):web服务器,市场份额,排在第二位,Apache(1995)第一位;web服务器,反向代理,负载均衡,邮件代理;运行时需要的系统资源比较少,所以经常被称呼为轻量级服务器;是一个俄罗斯人(Igor Sysoev),C语言(不是c++)开发的,并且开源了;nginx号称并发处理百万级别的TCP连接,非常稳定,热部署(运行的时候能升级),高度模块化设计,自由许可证。很多人开发自己的模块来增强nginx,第原创 2022-04-28 16:08:56 · 455 阅读 · 0 评论 -
课程介绍 - Linux C++网络编程(一)
一:课程总述这是一门以讲解 网络通讯和架构为主的实战课 网络通讯:写自己能够驾驭的网络通讯代码来实现具体的网络通讯功能 架构:架构师 1)架构师的责任:负责产品/软件 的总体规划设计 ,把掌握的技术整合/融合,从而构成一个产品。 2)架构师写代码的问题:从高级或者资深软件开发工程师升上去 比较靠谱 程序员:靠代码说话和吃饭的,扎实,从点到面来学;把每一段代码写好,自然就能连成一个面; 实战:“商业质量的代码”; 没有15...原创 2022-04-28 15:25:55 · 244 阅读 · 0 评论 -
Linux内核协议栈
Linux内核协议栈是Linux内核核心五大模块之一,也是相对独立的一个模块。这一块设计的知识点:网络七层层次结构,基于网络层次结构报文收发过程调用关系,核心数据结构层次调用关系,网络结构初始化,MAC和路由算法、UDP/TCP协议处理流程、ping整个网络处理里程和实例化的网络整体解决方案。博客开始是一个项目《Linux C++网络编程》涉及相关知识点;原创 2024-04-15 21:55:55 · 173 阅读 · 0 评论