![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 84
曾格0
csdn YYDS
展开
-
连接vpn导致win主机无法访问Nat子网
网络连接:到其他公司出差,连了这家公司的网络,同时也连了公司的vbn。本地环境:服务搭建在本机的Nat子网,通过192.168.150.101:8081端口可成功访问。端口映射:win主机设置端口映射(127.0.0.1:18081 => 192.168.150.101:8081)windos访问Nat子网服务:在不开vbn的情况下,win主机输入127.0.0.1:18081可成功访问,但连接到公司的vpn后就访问不了。原创 2023-03-29 19:51:58 · 499 阅读 · 0 评论 -
ssh_key的原理与应用
git从github上传拉取资源,一般有两种方式:https协议(每次上传代码都需要tocken验证)和ssh协议(配置ssh-key后直接上传)原创 2023-03-26 15:37:37 · 678 阅读 · 0 评论 -
epoll设计实现
没有epoll之前,只能做嵌入式。原创 2023-02-05 16:47:03 · 420 阅读 · 0 评论 -
网络协议栈简单设计(tcp)
接着这篇文章写的TCP相对于Udp,分为两个部分:连接(三次握手、四次挥手)、交互(数据传输)依照tcp包头字段定义就行:注意,tcp协议头不像udp有包长字段,因此TCP在建立连接时,客户端和服务端会协商设置每个报文的最大长度mss,比如send(buff)中buff的数据长度为2k,mss设置为0.5k,那么这个数据将会被切割成4个包进行传输mtu和mss的区别:mtu处于数据链路层,最小传输单元,通过设置为1500,而mss处于传输层tcb服务端收到第一次握手后,需要初始化tcb,将连接加入半连接原创 2023-02-04 16:49:44 · 837 阅读 · 0 评论 -
网络协议栈简单设计(udp)
操作系统内核中实现了网络协议栈,但今天利用netmap(也可利用dpdk)绕过内核协议栈进行网络数据的收发。原创 2023-02-03 23:35:44 · 637 阅读 · 0 评论 -
用户区网络缓冲区
而对于UDP,其内核没有发送缓冲区,,也需要设计用户态发送缓冲区、序列号、确认号、超时重传机制等其次,UDP虽然基于报文传输,没有粘包问题,但还是需要面临内核协议栈接收缓冲区满的问题,因此,也需要设计用户态的接收缓冲区。原创 2023-01-31 23:18:44 · 286 阅读 · 0 评论 -
基于C讲解协程设计原理
通过C讲解协程原理原创 2023-01-31 21:30:44 · 278 阅读 · 0 评论 -
posix API与网络协议栈
socket包含两部分:fd、tcb(tcp control block)其中,fd属于文件系统,可在用户态进行操控;而tcb属于内核协议栈。原创 2023-01-18 20:35:23 · 672 阅读 · 0 评论 -
网络IO与Rector模型
一个master进程fork出多个worker进程,每个进程都有一个reactor,每个worker进程都监听在一个端口上(因为是fork出来的),连接都放在共享内存里,哪个进程拿到了这把锁,谁就accept这个连接,并交由这个进程的reactor处理。IO函数操作IO,分为两种:阻塞和非阻塞IO,阻塞在网络线程,连接的fd阻塞属性决定了IO函数是否阻塞,其具体差异在:io 函数在数据未到达时是否立刻返回,也就是数据准备阶段是否会阻塞。但写操作是一次性,要么全部写入,要么写入失败,不会产生顺序错乱。原创 2023-01-10 22:54:31 · 255 阅读 · 0 评论 -
websocket的实现
本文的websocket实现基于的代码实现。原创 2023-01-08 21:51:41 · 841 阅读 · 0 评论 -
基于reactor的http服务器
本文的http服务器基于的代码实现,只实现很简单的接收get请求,并向客户端发送响应的功能。原创 2023-01-07 22:28:42 · 757 阅读 · 0 评论 -
单线程Reactor模型
Reactor模型只是对select\poll\epoll等网络模型的封装,本文讲解基于epoll实现Reactor模型。原创 2023-01-07 18:29:46 · 645 阅读 · 0 评论 -
从socket开始讲解网络模式(epoll)
windows采用IOCP网络模型,而linux采用epoll网络模型(Linux得以实现高并发,并被作为服务器首选的重要原因),接下来讲下epoll模型对网络编程高并发的作用。原创 2022-12-31 20:45:22 · 597 阅读 · 0 评论 -
Linux C++通讯架构【七】:服务器完善
心跳包: 就是个普通的数据包,就是消息码不同而已;一般每隔几十秒(30s),客户端主动把心跳包返回给客户端,服务端收到了,返回一个心跳包。 如果客户端不发,服务器会怎样?=》在约定的时间*3(90s)后,关闭socket连接 所以如果客户端发了心跳包,90s后没有接收到,就应该主动关闭连接,并尝试再次连接 也叫ping包,心跳包一般不需要包体 遗漏问题: 收到太多数据处理不过来: epoll技术限速,在epoll红黑树节点中,把epoll【可读】通知干掉 增加处理线程原创 2022-02-28 20:34:02 · 1514 阅读 · 0 评论 -
Linux C++通讯架构【六】:多线程服务业务处理逻辑
业务逻辑线程: 和系统线程概念不一样,用户线程和系统线程有1:n、m:n、1:1,Linux和windows一般都用的1:1模型,执行效率块,但有最大线程限制。 iocp(windows)启动时就会开启cpu*2+2个线程,这是操作系统的线程,和业务处理(充值、抽卡)无关。 主线程往消息队列扔包,其他线程从里面取走这个包(互斥) posix线程:标准化的线程标准,说白了就是一堆我们可以调用的函数,一般是以pthread_开头=》posix库并不是Linux默..原创 2022-02-28 20:29:36 · 2810 阅读 · 0 评论 -
浅谈连接池、线程池、内存池
Mysql数据连接池: 就是数据库和服务端的连接,与客户端无关,因此服务端可初始化所有Mysql连接 结构体: 连接池名 服务端ip和,用户名密码,db名 最大连接数,最小连接数 设置数连接: 设置太多:资源浪费,启动慢 设置太少:后续处理慢 连接超时: 初始化后的连接放到vector或stack里,非空连接放队列(链表)里,这样获取非空连接时很快 链表中的连接如果很久没有返回,就认为超时,...原创 2022-02-28 19:45:23 · 342 阅读 · 0 评论 -
Linux C++通讯架构【五】:网络通讯实战
网络通讯实战socket:可理解为四元组关联的一个数字,具有唯一性,socket在unix上是一个文件描述符 发包: 包头结构: 报文总长度Len:包头+包体 消息类型:这个包需要用服务器的哪个函数处理。(服务器端有个(函数名:消息码)向量) crc32校验码:确保数据包的数据没有被修改过 ccrc32类 Get_crc():给你一段buff,也就是一段内存,以及内存长度,计算出一个crc32值 客户端的包头就有原创 2022-02-28 19:08:31 · 2120 阅读 · 0 评论 -
Linux C++通讯架构【四】:框架搭建
框架搭建Makefile 设计原则:有多个目录都需要编译,这些目录下都有Makefile文件,但最终只会有一个可执行文件nginx makefile:预处理(.i),汇编(.s),编译(.o)阶段会产生多个中间文件,多个.o文件链接成一个可执行文件,makefile定义编译和链接的规则。 make的原理:去读当前目录的一个makefile文件(文本文件) 总的流程: config.mk设置编译目录和模式(debug和release等) 根目录makefil原创 2022-02-28 17:04:03 · 2190 阅读 · 0 评论 -
Linux C++通讯架构【三】:Linux学习
Linux学习终端(pts)与进程的关系 pts就是一个bash(命令解释器),一个shell,一个可执行程序,在/bin/bash目录下 终端如果关闭,终端上的进程也就关闭了 这些进程(属于多个进程组,同一个进程组的进程组id相同)都是bash进程的子进程 ps命令查看父进程可知 所以xshell其实并不是远程控制,而是一个实际的远程终端 会话(session):一个或多个进程组的集合,一般bash的所有进程都属于一个session strace信号跟踪工原创 2022-02-27 23:27:41 · 379 阅读 · 0 评论 -
Linux C++通讯架构【二】:Nginx介绍
Nginx介绍介绍 web服务器:反向代理,负载均衡,邮件代理 需要的资源比较少,轻量级服务器,高并发服务器,号称并发处理百万级别的tcp连接,热部署(边运行边升级),各模块耦合度很低。 在不同操作系统,代码不同,在linux上使用epoll技术,windows上使用IOCP 安装 tar -xzvf nginx-1.14.2.tar.gz pcer库,函数库,支持解析正确表达式 zlib库:压缩解压缩功能:利用cpu较少网络带宽 openssl库:ssl功能相关库,用..原创 2022-02-27 22:33:28 · 240 阅读 · 0 评论