• 2024-08-29Python可控制线程与TCP服务单元编程
    大家好,我之前在我的CSDN博客上面发了一条《C++可控制线程》的文章,里面介绍了在线程中植入类似状态机的东西,进而将多线程编程进化为“服务单元”编程的技术。接下来我们来看一个基于此项目的Python的TCP服务单元代码。------------------------------------------------------
  • 2024-08-286、原始套接字
    一.原始套接字概述rawsocket,即原始套接字,可以接收本机网卡上的数据帧或者数据包,对于监听网络的流量和分析是很有作用的,一共可以有4种方式创建这种socket。在我们学习TCP和UDP通信的时候,所用的知识点其实已经可以满足我们的日常开发需求,那么我们学习原始套接字,加强对网络的理
  • 2024-08-27Linux网络:TCP & UDP socket
    Linux网络:TCP&UDPsocketsocket套接字sockaddr网络字节序IP地址转换bzeroUDPsocketsocketbindrecvfromsendtoTCPsocketsocketbindlistenconnectacceptsendrecv本博客讲解Linux下的TCP和UDP套接字编程。无论是创建套接字、绑定地址,还是发送和接收数据,
  • 2024-08-21TCP通信之经典问题解决
    先看下面的代码,研究下执行后会出现什么?服务端:fromsocketimport*ip_port=('127.0.0.1',8003)buffer_size=1024sock_server=socket(AF_INET,SOCK_STREAM)sock_server.bind(ip_port)sock_server.listen(5)whileTrue:print('服务端建立连接...')conn,addr=soc
  • 2024-08-192024.8.19
    #include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<string.h>#include<stdlib.h>intmain(){ //1.创建套接字 intsock_fd=socket(AF_I
  • 2024-08-15Python 通过UDP传输超过64k的信息
    在UDP中,单个数据包的最大尺寸通常受到网络层的限制,这通常被称为最大传输单元(MTU)。在以太网环境中,标准的MTU大小通常为1500字节。尽管有些网络环境可能支持更大的数据包,但是UDP数据包的理论最大限制是65535字节(64KB),这是由于UDP头部的16位长度字段决定的。然而,如果你需要发送超过这
  • 2024-08-15问题--Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
     上班后发现服务不在线,docker也无法启动,检查daemon.json配置文件出问题了 。 检查:#查看docker内全部进程dockerps提示错误:CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.TSthedockerdaemonrunning? #查看docker状态systemctls
  • 2024-08-0463 epoll服务器 (ET模式)
    基于LT模式修改,并加入前面的应用层计算器,实现稍完整的服务器功能1.修改tcp_socket.hpp,新增非阻塞读和非阻塞写接口2.对于accept返回的new_sock加上EPOLLET这样的选项注意:此代码暂时未考虑listen_sockET的情况,如果将listen_sock设为ET,则需要非阻塞轮询的方式accept,否则会
  • 2024-08-01安装多个mysql
    下载文件wgethttps://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz解压到目录在文件夹建立my.cnf配置文件[client]port=3309socket=/data/mysql83309/mysqld.sock[mysqld_safe]socket=/data/mysql83309/mysqld.sock[mysq
  • 2024-07-30[HTTP] HTTP 协议 Response Header 之 Content-Length、Transfer-Encoding与Content-Encoding
    0引言在近期项目一场景中,一WebAPI(响应内容:7MB-40MB、数据项:5W-20W条)的网络传输耗时较大,短则5s,长则高达25s,前端渲染又需要耗时9s-60s。在这个场景中,前端的问题暂且不表。那么针对后端的问题,个人认为还是有较大的优化空间:1)启用HTTP内容压缩策略【最重要】2)调整数据
  • 2024-07-30dockerUI部署
     拉取镜像[root@localhost~]#dockerpulluifd/ui-for-docker运行dockerrun-it-d--namedocker-web-p9000:9000--restart=always-v/var/run/docker.sock:/var/run/docker.sockdocker.io/uifd/ui-for-docker访问http://192.168.200.128:9000
  • 2024-07-22zabbix_appliance的数据库扩容方案
    问题:zabbix_appliance直接加载虚拟机来部署zabbix是很方便的办法,下载配置好后,监控一段时间会提示mysql存储空间不足,进去系统df一看才4G多,只好自已手动扩容.思路:虚拟机上添加一块硬盘,创建新分区并挂载到扩容目录,迁移mysql的数据库目录到扩容目录,修改mysql\php\zabbix的
  • 2024-07-17【Linux网络】Linux网络协议栈常用代码片段
    1.读取网卡mac地址可以通过ioctl(sock,SIOCGIFHHWADDR,&ifr)读取mac地址,对任意类型的socket都适用,只需指定第三参数structifreqifr的ifr.ifr_name,这个ifr_name就是网络设备的名字,如eth0,eth1,lo等,在/proc/net/dev可找到,ioctl通过ifr_name获取设备信息。structifreqifr;strn
  • 2024-07-10为什么我的 Nodejs 的http 服务接收到的IP地址前面会有::ffff:?
    HelloWorld今天介绍一个比较绕口的技术。故事的首先要从测试同学提的一个BUG开始为什么一个ipv4地址前面会有::ffff:呢?是不是你的程序写错了呢。那我们来深究一下这个是什么东西。这种地址叫ipv4mappedipv6。为什么会有这么奇怪的东西呢,与ipv6部署有关。我们知道,ip
  • 2024-07-04UDP套接字基础总结
    最近和同学做一个有趣的实验,大致场景是:将摄像头连接到树莓派上,在树莓派上编写代码来捕获摄像头传回的数据。在这个场景中,树莓派是服务器端,摄像头是客户端,传递数据采用的协议是UDP。实验过程中发现自己对UDP套接字的使用有些不熟练,于是做一个总结。编程语言采用C,参考资料为《TCP/I
  • 2024-07-04Go 使用原始套接字捕获网卡流量
    Go使用原始套接字捕获网卡流量Go捕获网卡流量使用最多的库为github.com/google/gopacket,需要依赖libpcap导致必须开启CGO才能够进行编译。为了减少对环境的依赖可以使用原始套接字捕获网卡流量,然后使用gopacket的协议解析功能,这样就省去了解析这部分的工作量,正确性也可
  • 2024-06-17史上最全最详细的适合新手的从零搭建一个Linux的HTTP服务器
    一.概念梳理    http(hyper-text-transmission-protocol)超文本传输协议,顾名思义就是传输超文本(html)的协议,具体地来说,我们不需要知道html怎么写,我们只需要梳理服务器的数据接收和响应.具体业务具体分析,你们可以自行丰富内容,这里只做最简单的功能演示.http协
  • 2024-06-17[转帖]端口复用
    https://cxd2014.github.io/2018/09/12/port-reuse/  SO_REUSEPORT套接字选项从Linux3.9内核版本之后Linux网络协议栈开始支持SO_REUSEPORT套接字选项,这个新的选项允许一个主机上的多个套接字绑定到同一个端口上,它的目的是提高运行在多核CPU上的多线程网络服务应用的处
  • 2024-06-176、docker-docker的图形化web界面管理工具-portainer--docker镜像原理
    图形化界面管理工具-portainer-可以提供后台面板供我们操作1、下载启动portainer·#-v挂载-v/var/run/docker.sock:/var/run/docker.sock 表示将主机上的Docker守护进程的Unix套接字文件映射到容器内部,这样Portainer就可以通过DockerAPI与Docker守护进程交互了。
  • 2024-06-12Unix socket lock file is empty /var/run/mysqld/mysqld.sock.lock
    介绍当使用MySQL数据库时,有时候会遇到一个错误信息,提示“Unixsocketlockfileisempty:/var/run/mysqld/mysqld.sock.lock.”这个错误一般是由于MySQL服务器无法启动造成的。在本文中,我们将探讨这个错误的原因和解决方案。错误原因/var/run/mysqld/mysqld.sock.lock
  • 2024-06-07【Socket】解决UDP丢包问题
    一、介绍UDP是一种不可靠的、无连接的、基于数据报的传输层协议。相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认。所以UDP的优势就是速度快,开销小。但是随之而来的就是不稳定,面向无连接的,无法确认数据包。会导致丢包问题。二、丢包原因1、服
  • 2024-06-04Python Socket编程:从原理到实践
    在当今的网络世界中,Socket编程是构建网络通信应用的关键技术之一。从简单的聊天应用到复杂的分布式系统,Socket编程都扮演着至关重要的角色。本文将首先介绍Socket编程的基本原理,然后详细讲解如何使用Python进行Socket编程。注意:文中谈到的TCP/IP协议可以去我另一篇文章看一下,
  • 2024-06-04【Socket】解决TCP粘包问题
    一、介绍TCP一种面向连接的、可靠的、基于字节流的传输层协议。三次握手:客户端发送服务端连接请求,等待服务端的回复。服务端收到请求,服务端回复客户端,可以建立连接,并等待。客户端收到回复并发送,确认连接。服务端收到回复。连接成功。四次挥手:与三次握手不同,客户端和服务
  • 2024-05-31Docker + maven build problem — unix://localhost:80: Permission denied
    使用docker-maven-plugin进行构建镜像报错如下:com.spotify.docker.client.shaded.org.apache.http.impl.execchain.RetryExecexecuteINFO:I/Oexception(java.io.IOException)caughtwhenprocessingrequestto{}->unix://localhost:80:Permissiondenied解决方案:Ad
  • 2024-05-31udp的收发包的思考
      在测试radius性能时,想到一个问题,以前tcp报文在ip层处理时,涉及到路由查找,对于tcp协议报文;skb中没有路由缓存,没有关联的sock;且非分片报文;ip_early_demux设置为true;则调用early_demux函数提前在IP层做established状态的sock查找,并负责将sock结构体成员sk_rx_dst的路由缓存赋值