- 博客(26)
- 收藏
- 关注
原创 TCP拥塞控制
算法的核心思想是在网络中逐渐增加数据包的数量,以便不会一开始就过载网络。TCP连接开始时,拥塞窗口(cwnd)的大小设置为一个报文段的最大大小(MSS)。在这个阶段,ssthresh设置为当前cwnd的一半,cwnd设置为ssthresh加上3个MSS的大小,然后开始线性增长,而不是重新开始慢开始。在网络中,如果数据包的需求超过了网络能够提供的资源,就会出现拥塞。TCP拥塞控制是为了防止过多的数据注入到网络中,这样可以避免网络中的路由器或链路过载。算法减少了因为丢失的数据包而等待的时间。
2024-11-19 19:57:12
220
原创 TCP拥塞控制
TCP拥塞控制是为了防止过多的数据注入到网络中,这样可以避免网络中的路由器或链路过载。TCP使用一种多步拥塞控制过程,包括慢开始、拥塞避免、快重传和快恢复这四种算法
2024-11-17 15:24:03
483
原创 多路复用 epoll
epoll 的主要特点包括:1.没有文件描述符数量限制:与 select 和 poll 不同,epoll 采用了基于事件的就绪通知机制,没有预定义的文件描述符数量限制,可以支持更大规模的并发连接。2.高效的事件通知:epoll 使用了内核和用户空间共享的事件数据结构,将文件描述符的事件注册到内核空间,当事件就绪时,内核直接将就绪的事件通知给用户空间,避免了每次调用都需要遍历整个文件描述符数组的性能开销。
2024-07-25 08:42:44
715
1
原创 linux 段错误跟踪-gdb&core dump
core dump 又叫核心转储,是一个程序运行时的环境一个集合包,包含崩溃时的堆栈信息,是一个二进制文件,无法使用记事本打开,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象,主要用来调试。
2024-04-09 20:05:48
625
1
原创 linux-内存泄漏检测(mtrace)
mtrace(memory trace),是 GNU Glibc 自带的内存问题检测工具,它可以用来协助定位内存泄露问题。它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数 void mtrace (),函数对 libc 库中的 malloc/free 等函数的调用进行追踪,由此来检测内存是否存在泄漏的情况。
2024-04-09 19:08:44
281
原创 linux网络编程-tls客户端(持续更新)
主要用于SSL握手前的环境准备,设置CA文件和目录、设置SSL握手中的证书文件和私钥、设置协议版本以及其他一些SSL握手时的选项,多个连接可共用一个SSL_CTX对象。
2024-03-30 14:10:13
1050
1
原创 c语言-那些年踩过的坑(持续更新)
# 注意事项:如果使用%d读取,切记必须用int或unsigned int的变量来填充,否则会出现结果异常或操作非法地址,因为sscanf。%d 会赋值首地址开始的4字节!## 功能:从字符串读取格式化输入。
2024-03-26 20:06:16
134
原创 linux tcp网络编程之套接字属性
define SO_LINGER 13 //如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后>才会返回. 否则, 调用将立即返回。#define SO_REUSEPORT 15 //端口复用 同一个端口可bind多次,可用于多进程或多线程listen同一个套接字,减少竞争提高效率。#define SO_REUSEADDR 2 //打开或关闭地址复用功能。#define SO_NO_CHECK 11 //打开或关闭校验和。
2024-03-25 09:46:34
434
1
原创 【linux 多路复用 select】
注意点:select在退出时,每个文件描述符集和超时时间都会被修改,以指示哪些文件描述符实际更改了状态,所以循环调用前必须重新初始化,超时时间也必须重新设置!功能:select允许程序监视多个文件描述符,直到一个或多个文件描述符可读或可写则认为文件描述符已准备就绪。非阻塞模式 描述符就绪,设置的超时时间到,被信号处理程序中断 返回。阻塞模式 直到监听的文件描述符可读或者可写返回。FD_ZERO() 重置描述符.FD_SET() 添加描述符。FD_CLR() 删除描述符。#服务器端代码(仅用于验证)
2024-03-15 17:45:20
275
1
原创 【linux system V 消息队列】
简介消息队列就是一些消息的列表,或者说是一些消息组成的队列。消息队列与管道有些类似,消息队列可以认为是管道的改进版。相较于管道的先进先出准则,消息队列在读取时可以按照消息的类型进行读取,这也是消息队列的特点,它可以实现消息随机查询。消息发送时,需要将消息封装,然后添加到队列的末尾即可,而消息接收时则可以根据需求进行选择的读取(读取即将封装的消息从队列中移除)#函数说明cmd 包括:IPC_STAT 查看属性IPC_SET 设置属性IPC_RMID 删除消息队列。
2024-03-15 08:52:18
565
1
原创 tcpdump移植-libcap编译问题
老夫不容易哦,还是得理解编译原理,因为我是移植tcpdump到开发的设备上,我的编译环境已经有了,于是尝试查看现有编译链的配置 ,用输出的配置用于libcap的configure,最终编译成功!查找指令: find 编译链路径 -name 文件名。下边红色部分为前边查找的结果。
2024-02-23 10:38:38
770
原创 github访问不了问题
DNS问题,我们在浏览器输入 GitHub 的网址时,会向 DNS 服务器发送一个请求,获取到 GitHub 网站所在的服务器 IP 地址,从而进行访问。
2024-02-05 08:15:51
416
1
原创 STM32 工程 map文件
代表定义了但未初始化的可读写数据,ZI英语是zero initial,就是程序中用到的并且被系统初始化为0的变量 的字节数,程序编译后的HEX文件大小 = Total ROM Size的值 =(Code + RO Data + RW Data)程序实际在单片机RAM中运行的数据大小 = Total RW Size的值 =(RW Data + ZI Data):代表已初始化的读写数据(Read And Write Data),程序中定义并且初始化的全局变量和。:代表执行的代码,程序中所有的函数。
2023-07-10 15:36:28
188
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人