danielh

Maintain curiosity and the desire to explore.

网络中的读写内部

ssize_t bytes_received = read(client_fd, buffer, sizeof(buffer));发生了什么 这个 read() 系统调用底层发生了很多关键操作! 让我详细分解: 完整的执行流程 1. 用户空间准备 // 参数准备 int client_fd // 文件描述符(通常是accept()返回的socket) char *buffer ...

初识并发

好的,C++ 实现并发主要依赖于标准库中的 <thread> 库(C++11 引入)。我将从简单到复杂,用生动的例子带你理解如何实现。 核心概念:std::thread std::thread 是 C++ 中表示单个执行线程的类。创建一个 thread 对象就相当于告诉操作系统:“去开辟一个新线程,执行我指定的任务!” 示例 1:最简单的并发 - 创建线程 想象一下,...

epoll——eventfd


ubuntu三种网络模式

Ubuntu三种网络模式 在Ubuntu虚拟机中,常见的三种网络模式分别是桥接模式、NAT模式和主机模式。这些模式适用于不同的网络需求和场景。 桥接模式 桥接模式将虚拟机与宿主机置于同一网段,虚拟机相当于局域网中的一台真实设备。虚拟机通过宿主机的物理网卡直接访问网络,具有独立的IP地址。 优点是虚拟机可以与局域网中的其他设备直接通信,适合需要与外部设备交互的场景。缺点是可能会出现IP冲突...

网络代理辨析

缓存服务器的正向代理和反向代理

代理分为正向代理(Forward Proxy) 和反向代理(Reverse Proxy) ,都是缓存服务器的功能,缓存服务器可以设置在客户端和服务端,设置在客户端有代理和防火墙的功能,设置在服务端有均衡负载的功能。 核心区别详解 1. 正向代理 (Forward Proxy) - 【替客户端打工】 角色: 站在客户端一侧,代表客户端向任意服务器发送请求。客户端知道代理的存在,...

端口号和接口号辨析

说得非常好!这是一个非常常见的混淆点,中文里都用“端口”这个词,但在计算机领域,它们指的是完全不同的两个概念。 一个是软件层面的逻辑概念,另一个是硬件层面的物理概念。 让我用一个非常形象的比喻帮你彻底分清它们: 1. 网络端口(TCP/UDP 端口)—— “公司的部门分机号” 性质:逻辑的、虚拟的。它不是一个你能摸得着的实体,只是计算机操作系统网络协议栈里的一个数字编号。 ...

路由器

路由器中路由表的来源 直连路由器后,会发生什么? 当你将计算机直连路由器并成功获取到IP地址(通常通过DHCP协议自动获取)后,操作系统内核的网络栈会自动在路由表中添加三条核心路由条目。 这三条路由规则的具体作用 1. 默认路由 (Default Route) 条目: 0.0.0.0 + 0.0.0.0 -> 192.168.31.1 ...

网络中的地址表

计算机网络传输过程中,有哪些地址表汇总

在计算机网络传输过程中,为了正确地在复杂的网络环境中寻址和转发数据,各种网络设备(如交换机、路由器)会维护多种关键的地址表。这些表是设备的“大脑”和“导航图”。 以下是主要的地址表及其作用的总结: 地址表 核心作用 工作层次 关键信息 所在设备 MAC地址表 ...

Tcp纠错机制

tcp在中途发错了一个包,会发生什么,tcp会做出什么样的反应

当TCP在中途发错了一个包(比如数据内容出错、顺序错乱、丢失等),TCP会通过其内置的错误检测和重传机制来发现这个错误,并要求发送方重新传输这个包,从而确保接收方最终能得到一个完整、正确、有序的数据流。 整个过程可以分解为以下几个关键步骤: 1. 错误检测:如何发现包错了? TCP本身无法检测“数据内容”的错误(比如某个比特从0变成了1),这是由校验和(Checksum) 机制负责...

为博客添加 Gitalk 评论插件

BY Blog 添加 Gitalk 的评论插件了

前言 由于 Disqus 对于国内网路的支持十分糟糕,很多人反映 Disqus 评论插件一直加载不出来。而我一直是处于翻墙状态的~(话说你们做程序员的都不翻墙用Google的吗😅,哈哈,吐嘈下) 针对这个问题,我添加了Gitalk 评论插件。在此,非常感谢 @FeDemo 的推荐 。 正文 Gitalk 评论插件 首先来看看 Gitalk 的界面和功能: gitalk 使用 ...