注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概
近日,Linux git中发布一个commit补丁,该补丁对应的漏洞是一个本地提权漏洞CVE-2019-8912,漏洞影响范围较广。根据git中的commit信息可知,该漏洞出现在内核’crypto/af_alg.c’中的af_alg_release函数中,可以通过sockfs_setattr函数触发,漏洞类型是use after free,可以导致本地代码执行进行权限提升。
我相信大家刚开始学网络编程中socket的时候,都跟我一样对书上所讲的socket概念云里雾里的、似懂非懂,很是困扰。
这篇文章我打算从一个初学者的角度开始聊起,让大家了解下我眼里的socket是什么以及socket的原理和内核实现。
下面来分别对这几个问题进行分析. 1. 操作系统能否支持百万连接? 对于绝大部分 Linux 操作系统, 默认情况下确实不支持 C1000K! 因为操作系统包含最大打开文件数(Max Open Fil
MySQL -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
linux的空间分为kernel space 和 user space, 比例是1:3
对于绝大部分 Linux 操作系统, 默认情况下确实不支持 C1000K! 因为操作系统包含最大打开文件数(Max Open Files)限制, 分为系统全局的, 和进程级的限制.
Linux下的tcp编程中,第一步就是要创建socket,本文将从源码角度看下socket是如何被创建的。
本文翻译自 2020 年的一篇英文博客 How to use eBPF for accelerating Cloud Native applications[1]。
unix domain socket 是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC: Inter-Process Communication),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain Socket也是可靠的,消息既不会丢失也不会顺序错乱。
今天分析的内容是从socket函数开始,看看linux网络层的设计。下面我们看一下我们平时写网络编程代码时的用法。
linux下用户程序同内核通信的方式一般有ioctl, proc文件系统,剩下一个就是Netlink套接字了。 这里先介绍下netlink。
这里主要是关于TCP的,TCP的特点什么的相关介绍在我另一篇博文里,所以这里直接动手吧。
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8976263,作者:gqb666
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88673990
协议是一种约定,在使用socket api接口的的时候,比如网络套接字的博文中写的示例代码,都是按字符串的方式来接收的,但是如果传输的是结构体的数据,就需要考虑以下问题:
本文描述如何在一台机器上但在不同的命名空间中运行两个vpp的实例。命名空间之间的通信通过linux-cp插件及memif接口来完成。
原文链接:https://www.cnblogs.com/DOMLX/p/9614056.html
这几天在看 ipvs 相关代码的时候又遇到了 netlink 的事情,所以这两天花了点时间重新把 netlink 的事情梳理了一下。
当 close 一个 TCP 连接时,如果还有没发送完的数据在缓冲区中,内核会怎么处理?
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
镜像站网址(极力推荐,下载速度贼快):http://mirrors.ustc.edu.cn/
Docker的基础是Linux容器(LXC)等技术,(LXC系统提供工具来管理容器,具有先进的网络和存储支持,还有最小容器操作系统模版的广泛选择)。
如果你的项目中支持高并发,或者是测试过比较多的并发连接。那么相信你一定遇到过“Too many open files”这个错误。
原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html
Socket的英文原本意思是 孔 或 插座。但在计算机科学中通常被称作为 套接字,主要用于相同机器的不同进程间或者不同机器间的通信。Socket的使用很多网络编程的书籍都有介绍,所以本文不打算介绍Socket的使用,只讨论Socket的具体实现,所以如果对Socket不太了解的同学可以先查阅Socket相关的资料或者书籍。
在日常的开发过程中,经常会遇到端口占用冲突的问题。那是不是不同的进程不能同时监听同一个端口呢?这个小节就来介绍 SO_REUSEPORT 选项相关的内容。
马哥linux运维 | 最专业的linux培训机构 ---- 1什么是域Socket “Unix domain socket 或者 IPCsocket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流数和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组
昨天在安装完新的perconesql数据后,发现phpmyadmin不能正常连接了。一时查来查去不知出了什么问题。
socket大家都知道是用于网络通信的,也知道他是ip和端口的组合。但是很多同学可能不是很清楚socket的原理和实现。下面我们深入理解一下socket到底是什么。 我们回忆一下socket编程的步骤,不管是客户端还是服务端,第一个调的函数都是socket。我们就从这个函数的实现开始,看看一个socket到底是什么。
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)
Linux下进程通讯方式有很多,比较典型的有套接字,平时比较常用的套接字是基于TCP/IP协议的,适用于两台不同主机上两个进程间通信, 通信之前需要指定IP地址. 但是如果同一台主机上两个进程间通信用套接字,还需要指定ip地址,有点过于繁琐. 这个时候就需要用到UNIX Domain Socket, 简称UDS, UDS的优势:
Jenkins作为CI、CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的。最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一下。网上比较多的教程都是在Linux上搭建Jenkins,小编经过一个星期的探索终于完成了在docker中进行搭建。
socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。
今天我们是用二进制安装包进行布署MySQL数据库服务,其它方式的安装布署方法请参考前面的文章
封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议栈中,然后逐一通过 TCP/IP 协议族的每层直到被当作一串比特流送入网络。对于每一层而言,对收到的数据都会封装相应的协议首部信息(有时还会增加尾部信息)。TCP 协议传给 IP 协议的数据单元称作 TCP 报文段,或简称 TCP 段(TCP segment)。IP 传给数据链路层的数据单元称作 IP 数据报(IP datagram),最后通过以太网传输的比特流称作帧(Frame)。
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现, socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。 说白了Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 注意: 其实socket也没有层的概念,它只是一个facade设计模式的应用,让编程变的更简单。是一个软件抽象层。在网络编程中,我们大量用的都是通过socket实现的。
socket=/var/lib/mysql/mysql.sock改为/home/data/mysql/mysql.sock
在linux中,一切都是文件,所有文件都有一个int类型的编号,称为文件描述符。服务端和客户端通信本质是在各自机器上创建一个文件,称为socket(套接字),然后对该socket文件进行读写。
accept() 系统调用应用于可连接套接口类型 ( SOCK_STREAM, SOCK_SEQPACKET)。它取出在监听套接口 sockfd请求队列里的第一个连接,新建一个已连接的套接口,并且返回一个引用该套接口新的文件描述符。新建的套接口不处于监听状态。原始的套接口 sockfd 没有受到影响。
进程在 Linux 上是一个开销不小的家伙,先不说创建,光是上下文切换一次就得几个微秒。所以为了高效地对海量用户提供服务,必须要让一个进程能同时处理很多个 tcp 连接才行。现在假设一个进程保持了 10000 条连接,那么如何发现哪条连接上有数据可读了、哪条连接可写了 ?
相同: 都在 缓存内核 中 读写 , 先进先出 ,不支持 lseek 之类文件定位操作
Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点。然而如果使用Docker时采取不当安全策略,则可能导致系统面临安全威胁。
docker容器技术至今已有五年的发展,作为一个工具,已经像Linux命令一样融入我们开发的生活。现在大多开发都使用Mac作为开发机,大都会装一个Docker for mac这个Mac下的docker工具。本文将从以下几个话题进行展开,说明Mac下docker的使用原理。
socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。
前面已经针对MySQL数据库进行了介绍,并说明了为什么选择MySQL数据库,以及MySQL数据库在Linux系统下的多种安装方式,同时以单实例讲解了如何以编译方式安装MySQL和基础安全优化等内容,本章将为大家讲解更为实用的MSQL多实例安装,百度、淘宝、阿里、新浪等大公司无一例外地都会使用多实例的方式部署数据库,那么是什么原因促使他们选择多实例数据库的部署方式呢?
在linux下,使用socketpair函数能够创建一对套节字进行进程间通信(IPC)。
领取专属 10元无门槛券
手把手带您无忧上云