linux小黑板
文章平均质量分 92
仍然是对旧linux专栏的细节补充 或 完善
WGzZsyu
感谢你的关注
展开
-
我们来谈谈数据链路层
一、 数据链路层"啊,其实触手可及!谈到网络层IP,有很多说法都是说,"IP是决定到达对端主机的能力"。而在实际的网络世界中,在各个节点路由器上,游走的报文也是IP报文!但是,真实的网络数据传输不是上图那样,显得简单。因此,所谓的跨网络通信(传输),其本质是:" 无数个子网内转发的结果 "。由此,现在的问题到了,如何理解局域网转发?局域网是如何进行转发的呢?--- 前言如何认识局域网1?我们可以将一个局域网当做是一个教室,教室里的学生和老师可以看做是一个一个独立的主机。原创 2023-08-07 11:42:39 · 261 阅读 · 0 评论 -
我们来谈谈tcp
一、认识Tcp报头"让新离开地表,才能找到盘旋爬升的动力。一、认识Tcp报头我们先来认识认识tcp协议报头字段。跟tcp协议字段报头比起来,udp可真是太轻松了。(2) 相关字段的理解如何理解4位首部字段?根据以上关于TCP协议字段,我们可以得出以下结论:TCP报头是有长度的:20字节。要进行正常的网络通信的一个条件是,要让协议报头与有效载荷完成分离,也就是 " 解包与分用 "。然而,TCP的协议报头不是说是20字节嘛?那么要解包分用直接拿掉头上的20字节不就得了?但其实,这是不对的。原创 2023-07-06 12:40:50 · 686 阅读 · 0 评论 -
我们来谈谈websocket
一、初始WebSocket"你一无所有地闯荡。一、初始WebSocket(1) 什么是websocket是一种在单个TCP连接上进行全双工通信的协议。使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。websocket是从HTML5开始⽀持的⼀种⽹⻚端和服务端保持"⻓连接"的消息推送机制。原创 2023-06-27 12:41:50 · 1638 阅读 · 4 评论 -
我们来谈谈udp
一、 常用的Linux命令"却还有那些洗礼,那几句问候,那份温柔~"一、 常用的Linux命令。原创 2023-06-13 08:29:49 · 605 阅读 · 0 评论 -
我们来谈谈https
一、 http明文传输"这一封信只是得到它要回答问题,那个答案早已点燃在心里"一、 http明文传输紧接上文这仍然是一款拙劣的http服务器,我们此时在用户数输入栏输入数据信息并提交表单。我们先来认识认识使用到的两个工具软件。1.PostManpostman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好。2. Fiddler。原创 2023-06-12 12:25:35 · 1140 阅读 · 0 评论 -
http长连接与会话保持
答案是肯定不是,此时你用户泄漏的就不再是自己的数据,而仅仅是一个session_id,大大降低了用户真实数据泄漏的可能,其次,在这个网络攻防的世界里,没有完全的、绝对的防御,需要配合一定的策略来保障网络访问的安全性。因此,Http所提出的长连接的实质是为了解决,一个完整网页需要多次请求,才能构建出来的问题,需要让Client和Server端都需要支持,仅只需要建立好一个连接,在这个连接的基础上,获取大份资源。从老方法找解决方法,无非就在于,不让用户数据由用户自己管理就好了,也许你会说你的"防范意识"很强。原创 2023-06-12 00:09:51 · 2852 阅读 · 0 评论 -
Linux守护进程
一、 Xshell远端登录和断开做了些什么?我们先来看看这个场景。这是一个常见的基于TCP套接字的网络服务器,服务端接收客户端发送的消息,收到后并向echo回响给客户端。对于Linux而言,终端只能有一个前台进程,这也是为什么当我们在服务端一侧启动服务时,继续输入诸如ls\pwd\which等命令时,bash(shell)没有作任何响应。现在我们将服务端的窗口关闭后,可以发现的是,客户端就自动退出了。这是为什么呢?上述图片描述了什么呢?SID又是什么呢??原创 2023-05-15 21:22:41 · 636 阅读 · 0 评论 -
Linux小黑板(14):基于环形队列的生成消费者模型
一、信号量"多少人都,生来纯洁完美,心底从不染漆黑。我们先来瞅瞅我们之前基于阻塞队列的生产消费者模型代码。这有什么问题嘛?唔,也许没什么问题。难道是存在并发安全?当然不是!每一个线程进入在操作临界资源的时候,这个临界资源必须是满足一定条件的。可是,公共资源是否 满足生产、消费条件。即我们观察该阻塞队列是否为满或者是否为空?我们事先(线程加锁前是无法得知的。反而,当我们要进行条件检测时,需要先加锁,再检测(本质也是在访问临界资源),再操作,再解锁。原创 2023-04-04 23:17:54 · 476 阅读 · 0 评论 -
Linux小黑板(13):我们来谈谈生产者模型
而我们日常生活中的行为大抵是,想吃"火腿肠"了,找一个近邻的超市,并在它的货架上找到"双汇"牌火腿,有我就拿,没有,我还可以选择其他品牌的火腿。并且,超市也不是为你一个人开的,一定也有其他和你有同样需求的消费者进入超市,选购心仪的"火腿肠"。即"做成"或"做不成"。2. 我告知加工厂老板 要一根火腿唔,他也同意,并且启动机器给我制造,然而我却在这个期间什么也做不了,能做的就是 站在加工厂里 等待生产,等待拿到火腿肠。"任何技术都有自己的边界,技术是解决问题的,但是解决问题的同时,又会引起新的问题"原创 2023-03-31 23:11:32 · 151 阅读 · 0 评论 -
Linux小黑板(12):Linux系统下的线程
"从书本上给的定义来看,唔,我们的猜测是线程相比于进程而言更小,甚至是线程是进程的一个部分。如果我们需要创建一个线程,我们应该为该线程创建一个结构体,用于维护线程创建的属性信息,并且OS中不止有一个线程,它一定存在众多线程,emmm....看来我们也得为线程之间维护一定关系,方便对多个线程进行管理。在Linux下CPU调度"线程"与CPU调度进程的开销,并不仅仅在于"线程"不需要建立新的虚拟地址空间、建立新的页表与新的映射,不需要切换PCB && 切换上下文数据……"泥土里的蚂蚁哪儿能搞懂,天边的海鸥?原创 2023-03-16 21:19:00 · 438 阅读 · 0 评论 -
Linux小黑板(10):信号
可是,我现在的问题是,当前进程收到信号后,就必须要放下"手头"的事,立马去处理到来的信号嘛?毕竟,当我妈叫现在我吃饭,这是一个信号,但是我现在正在写博客、正在上网课,我可以选择继续写我的博客,继续上我的课,当然我也可以选择立即直接扔掉手中敲打的键盘,也可以立即将那喋喋不休的腾讯会议结束掉,立刻前去吃饭。前文讲述了信号是如何发送的,信号是如何产生的条件。,不仅仅是在于能够看到,能够知道这种情况下,是给我是遇到信号了,并且我还需要知道学校铃声响起,我就该上课或者下课了,红灯亮起,此时就不应该在将脚迈上公路。原创 2023-03-04 22:30:07 · 638 阅读 · 0 评论 -
Linux小黑板(9):共享内存
目的是为了完成进程间的"协同",提高处理数据的能力、优化业务逻辑的实现等等,在linux中我们已经谈过了一个通信的大类——管道。共享内存块的生命周期随OS,我们每申请共享内存空间,都得"ipcrm -m + shmid"释放内存空间,当我们不再使用时,这未免太过麻烦了。当然,shmctl不仅仅可以归还共享内存,当cmd传入的参数是IPC_STAT时,我们可以获取由shmid填充的结构体内容。为此,我们不得不手动去关闭掉,我们编写的进程所打开的共享内存块。管道的生命周期随进程,共享内存的生命周期随OS。原创 2023-02-25 17:32:28 · 646 阅读 · 0 评论 -
Linux小黑板(8)管道
"让我们,笑吧"一、什么是通信?管道是属于进程间通信的一个实现方式。再讲管道之前呢,我们先来说说什么叫做进程间通信。我们日常生活中,给自己的家人、朋友给一个call,或者弹一条微信、QQ等等,从而让人家能够知道我们想给对方传达的信息是什么,这其实简单来说是一种信息的交互。(1)为什么需要通信?比如,我们想在file.txt里查找到hello的字段。命令行中,cat是一个进程,grep也是一个进程。他们通过"|"管道,进行了数据通信。原创 2023-01-16 16:27:49 · 401 阅读 · 1 评论 -
Linux小黑板(7):再谈动静态
但是,在实际中不仅仅如我们上面的例子,那少得可怜的.o\.h文件。当我们通过yum源,在网上获取数据,下载下来的库、包,本质就是将文件的内容,拷贝赋值到系统库、路径下。上面的实验则证实了,一旦要连接第三方库,一定需要指定库名称。gcc\g++只会认识它们自己的C\C++标准库,并且gcc\g++的链接行为,默认是动态链接的。当找动态库的时候,默认也会在当前路径,同级目录寻找。但注意,需要软链接是,是库文件名。此时我们给编译器带上选项"-I" 指定寻找,但是它拿到了声明,但是没有方法的实现。原创 2023-01-13 16:35:17 · 609 阅读 · 0 评论 -
Linux小黑板(6):软硬链接
"飞吧,去寻觅红色的流星!"举个例子,软链接很像我们Windows平台下的快捷方式 任何一个快捷方式都是一串路径! 双击快捷方式,就等于去这个路径底下,找到.exe文件运行。你说了这么多,我还是知道软硬链接有什么区别。它们各自都是干什么用的!从上面的图,你最直观的感受是什么? 当然是inode! 硬链接的inode 和 链接文件的inode是同样一个。 但是软链接的inode却是独立的!因此,它们两个的本质区别在于: 是否是新创建了文件! 本质在于,一个inode一个独立的文件!原创 2023-01-06 15:37:57 · 694 阅读 · 0 评论 -
Linux小黑板(5):磁盘与文件系统
在数据存储的领域,有着不可磨灭的作用。相较于,保持通电情况下具有保持数据的不丢失的内存,磁盘能够"永久性"地存储 数据。硬盘的盘片上具有磁性,利用磁头进行影响这些带磁的物质排列顺序。毕竟,内存的成本造价 远超于硬盘的成本,硬盘仍然能以更大的容量,成为存储的主流。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,有了上面盘片寻址的基础,也就不难理解下面的图。(1)磁盘的存储结构。原创 2023-01-06 14:37:17 · 540 阅读 · 0 评论 -
Linux小黑板(4):文件与文件描述符fd
它常常区分二进制文件(binary file) 与 文本文件(txt file),而 文本文件只含有ASCII 或 Unicode字符的普通文件。包含了一组链接(link)的文化。其内部的每个链接,与目录内的文件名是一个唯一映射的键值。每个目录至少包含两个条目录 "." 是自身的链接。“..”是父目录的链接。其他的文件类型包括有: 命名管道(named pipe) 、符号链接(symbolic link) 、字符和块设备等等……在linux中每个文件都有一个类型(type)来表明自己在系统中承担的角色:。原创 2022-12-16 01:34:27 · 337 阅读 · 0 评论 -
Linux小黑板(3):环境变量
根本上不是说我们的程序 貌似更"低级",因为ls pwd top等命令也是可执行的文件,它们无非是在 用户登录时 已经就加载好了!C语言规定main函数是C程序的入口,程序中的其它函数直接或间接被main函数调用后才能被执行,如果没有被main调用,这个函数在程序中就是无用的。但是我们自己写的程序却需要这样呢。2.“/etc/bashrc”,修改该文件配置的环境变量将会影响所有用户使用的bash shell。1.“/etc/profile”文件,该文件配置的环境变量将应用于登录到系统的每一个用户。原创 2022-11-22 19:31:04 · 692 阅读 · 0 评论 -
Linux小黑板(2):进程优先级与进程状态
任意时刻,进程都有可能会因调度 从cpu上拿下来,换上另外一个 优先级更高 或者 因超时而被换下..... 那么,如果这个被“切换下”的进程如果再次被调度呢?在我们实际使用中的计算机,恐怕不会遇见 只能开一个或者几个进程,而其他进程起 不来的情况吧?但是,当我们使用电脑的时候,不仅仅只会 启动一个程序!总有进程能够有机会 或许在(到来的时间上,或是"nice"值上.....)既是存在再多CPU也有 无限的进程 里的代码需要被执行!优先级 ---->(能的基础上) 先后!这也就是 所谓的优先级的概念!原创 2022-12-15 14:19:41 · 482 阅读 · 0 评论 -
Linux小黑板(1):vim编辑器的使用 / 动、静态库的理解
我们在使用诸如printf、scanf 等等函数时,我们自己本身就没有实现,为什么我们在include头文件后 ,就可以进行使用了呢?要想在 linux系统环境下编程,使用 难以被替代且功能强大的vim编辑器是首当其冲的不二法门。2.在linux下 当我们调用库函数时,编译器会为我们 链接动态库 还是静态库?所谓的vim配置,就是去更改 在“家目录下的”, ".vimrc"文件内容。理解了上述的 例子,我们对动、静态库 即有了一个感性的认识。根本上是因为 在链接的时候,编译器会自己去找系统库的位置!原创 2022-10-26 14:50:14 · 681 阅读 · 0 评论