
Linux 微技能
文章平均质量分 79
这是一个以“打游击战“为宗旨的 Linux 专栏!!
本专栏旨在通过一系列精炼、易懂的文章,帮助您掌握Linux系统中的各种小技巧、小知识以及实用操作。不同于传统的长篇教程,《Linux微技能》聚焦于每一个单独的功能点或操作细节,让您可以在短时间内获得立竿见影的效果。
行十万里人生
“211”院校本科在读,专注于C/C++编程语言、Linux操作系统编程、网络协议编程等计算机科学与技术领域。
但行好事,莫问前程。
展开
-
讨论 Linux 内核中的连接处理机制
在 Linux 内核中,不同类型的套接字(TCP / UDP)通过一系列嵌套的结构体来实现其特定的功能。当应用程序创建一个 TCP / UDP 套接字时,内核会分配相应的。这种双向关联使得内核能够在需要时,在两者间进行导航。同时,内核会为该套接字分配一个唯一的文件描述符。对象,这些对象包含了协议特定的状态和操作。系统调用时,内核会为该套接字分配一个。结构体,该结构体中包含一个指向具体。结构体,并初始化其中的。原创 2025-01-04 07:30:00 · 418 阅读 · 17 评论 -
网段划分和 IP 地址
这种方式可以有效分配 IP 地址,避免地址浪费,特别是在 IPv4 地址资源有限的情况下。每一个连接到互联网的设备,都需要一个公网 IP 地址,以便其它设备可以与之通信。 如果在子网内新增一台主机,这台主机的网络号与子网的网络号保持一致,但主机号不能与子网中其他主机的主机号重复。地址分配:为每个连接到公网的设备分配一个唯一的 IP 地址,确保数据能被准确地发送到目标设备。IP 协议是网络层协议,主要负责在不同网络设备之间,进行数据包的地址分配和路由选择。不同字网间,可以有相同的 IP。原创 2025-01-01 18:01:37 · 2661 阅读 · 11 评论 -
滑动窗口、流量控制和拥塞控制
既然发送一条数据,接收一个 ACK 后,再发新数据的方式效率太低。那么,一次性发送多条数据,就可以大大提升性能。 当发送方接收到对滑动窗口中的数据确认后,窗口右移,被确认的数据被移除窗口,新的、未被发送的数据进入窗口。TCP 拥塞控制的主要目的是,防止过多的数据被注入网络,导致网络拥塞,从而保证数据段高效、可靠的传输。一次性发送 3 个数据段,收到第 1 个 ACK 后窗口向右移动,发送第 4 个数据段。这种情况下,部分的 ACK 包丢失无影响,可以通过后面的 ACK 包确认数据已顺利到达。原创 2024-12-30 02:07:37 · 936 阅读 · 12 评论 -
TCP 连接:三次握手与四次挥手
TCP 协议,全称为“传输控制协议”。原创 2024-12-29 07:30:00 · 2331 阅读 · 13 评论 -
HTTP 协议
HTTP 是超文本传输协议,它是互联网上应用最为广泛的一种协议,主要用于浏览器和 web 服务器之间的的数据传输。原创 2024-11-02 09:45:00 · 4442 阅读 · 45 评论 -
进程组、会话 与 守护进程
不仅创建一个新的会话,还会使调用进程成为新会话的领导进程,且该进程不能已经是任何进程组的组长。在**当前会话(SID:32813)**中启动 tcpserver,在另一个终端中再次运行。进程组定义:一组相关进程的集合;我们可以通过发送信号到整个进程组来控制这些进程,如使用。,通常是为了执行特定的任务或等待处理某些事件。命令,查看当前的进程及其会话信息。函数用于将当前进程转化为守护进程,:不关闭标准输入、输出、错误流。终止整个管道中的所有进程。会话通常由一个登入会话创建,那么,如何创建守护进程?原创 2024-10-25 09:45:00 · 948 阅读 · 30 评论 -
TCP 开发常见接口解析
本文从 TCP 通信与 UDP 通信之间的差异入手,从服务端和客户端两个角度详细介绍 TCP 通信的主要手段,并探讨两者在发送消息上的理解差异。原创 2024-10-24 09:45:00 · 1115 阅读 · 28 评论 -
基于 UDP 协议的 socket 编程:实现 UDP 服务器
假设应用A的客户端程序显式绑定了8080端口,启动应用A之后,同样显式绑定了8080端口的应用B将无法被启动,因为该端口已被占用。作为 IP 地址绑定在套接字上 —— 这种做法可以使服务端程序接收来自任何网络接口的连接请求,而不仅仅是特定 IP 地址。如果客户端程序显式绑定了一个特定端口号,那么启动该程序之后,同一机器上其他需要使用相同端口号的程序将其无法启动。OS 会在第一次使用套接字时,自动分配一个临时端口,并将其与套接字绑定。结构,以便传递给网络相关的系统调用函数。结构是一个通用的网络地址结构。原创 2024-10-16 09:45:00 · 2408 阅读 · 31 评论 -
构建基于 阻塞队列 / 环形队列 的高效生产消费者模型系统
生产-消费者模型:一个或多个生产者线程产生数据并将其放入共享缓冲区,同时一个或多个消费者线程从该缓冲区中读取数据进行操作的情景。缓冲区是一个用于存储生产者产生数据的中间容器;缓冲区的容量通常是有限的,只能容纳一定数量的数据项。1. 线程与线程之间的同步与互斥关系;生产者与消费者之间的等待和唤醒机制。生产者-消费者模型是一类多线程编程问题,涉及一次性创建多个生产者线程和消费者线程,并将其高效组织起来;生产者线程负责生产任务并将其放入共享队列中,消费者线程负责将任务取出并执行;原创 2024-10-12 09:45:00 · 1014 阅读 · 28 评论 -
信号处理: Block Pending Handler 与 SIGKILL/SIGSTOP 实验
用于初始化一个信号集为空,即将信号集中的所有信号位都清零。创建一个sigset_t类型的变量,在对该变量进行各种信号处理操作之前,先要使用对该变量初始化。// 对 sig 初始化, success -> 0, fail -> -1sigaddset:用于在一个已存在的信号集中添加信号。:用于更改当前进程的信号掩码,简单来说即设置哪些信号被阻塞。how的处理方式,SIG_BLOCKSIG_BLOCK: 设置新的信号掩码,同时保留旧的信号掩码。原创 2024-09-28 10:00:00 · 1426 阅读 · 26 评论 -
构建与优化自定义进程池
简单来说,进程池就是预先创建固定数量的工作进程,通过设计任务队列或调度算法来分配任务给空闲的进程 —— 实现“负载均衡”。原创 2024-09-22 09:45:00 · 1216 阅读 · 27 评论 -
软硬链接与动静态库概览
创建一个新文件,“file” 和 “.” 同时建立了与 inode — 528280 的映射关系,故引用计数为 2。要了解 “为什么一个新目录的引用计数为 2”,首先需要明晰一个概念:Linux 中,一切皆文件。硬链接 是通过 inode 引用另外一个文件,软链接 是通过 名字 引用另外一个文件;// gcc -fPIC -c [所有必须的 .c 文件]// 将 [所有.c] 文件编译成 [.o] 文件。,才被加载到内存中的库,不会在编译阶段合并到可执行程序中。原创 2024-09-12 09:00:00 · 539 阅读 · 10 评论