Linux 服务器处理网络请求有三种机制,select、poll、epoll,本文打算深入学习下其实现原理。0. 结论本文其他的内容主要是得出了下面几个结论:服务器要接收客户端的数据,要建立 socket 内核结构,主要包含两个重要的数据结构,(进程)等待队列,和(数据)接收队列,socket在进程中作为一个文件,可以用文件描述符 fd 来表示,为了方便理解 …
最新内容
一、零拷贝的由来和定义1. 基本概念内核态:Ring0级别,运行在内核空间中,可以执行任何操作并且在资源的使用上没有限制。 用户态:Ring3级别,运行在用户空间中,访问资源受限。内核缓冲区:Page Cache,在操作系统级别,提高磁盘IO效率,优化磁盘文件的读写操作。 读文件: time cat rocket.log >devnull 执行时间:r …
最近整理了一些奇安信大佬的课件资料+大厂面试课题,想要的可以私信自取,无偿赠送给粉丝朋友~常见边界拓扑第一种情况Inbound Stream ---> Firewall ---> TargetInbound Stream --->Load Balance ---> Target这其中无论负载均衡设备转发或者防火墙的,均有可能存在带来源 …
1、什么是慢系统调用?该术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就会永远阻塞。慢系统调用可以被永久阻塞,包括以下几个类别:(1)读写‘慢’设备(包括pipe,终端设备,网络连接等)。读时,数据不存在,需要等待;写时,缓冲区满或其他原因 …
其实最开始我们已经总结了两者的不同 socket在阻塞和非阻塞下sendreceive的区别 - socket在阻塞和非阻塞下sendreceive的区别,但还不够底层,下面让我们深入底层来聊聊两者的区别:首先需要强调的是send()本质上并不是把数据丢到网络上进行发送。而是把应用层的发送缓冲区的数据拷贝到内核缓冲区(网卡缓冲区),至于什么时候数据会从网卡缓 …
一、概念介绍(1)阻塞(blocking)、非阻塞(non-blocking):可以简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了(进程或线程就阻塞在那了,不能做其它事情),否则就可以理解为非阻塞(在等待的过程中可以做其它事情)。(2)同步(synchronous)、异步(asynchronous): 你总是做完一件 …
1.概述串口转以太网目前可以采用串口转以太网模块来实现,变得非常简单易用,但是在该技术中出现的一些新问题、使用误区需要引起注意。串口转以太网并不是简单传输媒介的变化,而是串口到TCPIP的协议转化。其中关系到的关键技术包括:TCPIP的工作模式问题、串口分帧技术、9位技术。这里详细分析这些串口转网口的技术。2.澄清一个概念:到底是串口转以太网还是串口转TCP …
前言随着eBPF推出,由于具有高性能、高扩展、安全性等优势,目前已经在网络、安全、可观察等领域广泛应用,同时也诞生了许多优秀的开源项目,如Cilium、Pixie等,而iLogtail 作为阿里内外千万实例可观测数据的采集器,eBPF 网络可观测特性也预计会在未来8月发布。下文主要基于eBPF观测HTTP 1、HTTP 1.1以及HTTP2的角度介绍eBPF …
recv函数用于socket通信中接收消息,接口定义如下:int recv(SOCKET s, char* buf, int buflen, int flags);参数1:指定接收端套接字描述符参数2:指向一个缓冲区,该缓冲区用来存放recv函数接收到的数据参数3:指明buf的长度参数4:一般设置为0返回值:失败时,返回值小于0,超时或对端主动关闭 返回值等 …
提到程序员,就会出现许多关键词,诸如“直男,宅,不懂浪漫,枯燥,憨厚老实,有逻辑,人傻钱多…………”说程序猿是直男,不可否认,大多数程序猿都挺直,因为我们没有那么多弯弯绕绕,有心思兜圈子,不如回去写几行代码………雷军曾经说“我喜欢写代码,代码的世界很简单”程序猿的大多数时间都是面对电脑,所以对待一份感情也会非常的认真。程序猿也许在生活中会比较宅,就比如本人, …