Linux网络
文章平均质量分 87
学习网络知识
风君子吖
目前大二,学习C++方面知识
展开
-
高级IO_多路转接之ET模式Reactor
Reactor模式是一种事件驱动的并发模型,它通过将事件处理逻辑与事件分发机制解耦,实现高性能、可扩展的并发处理。Reactor模式适用于大量短时连接或需要高效I/O处理的场景,如Web服务器、聊天服务器等。所以对于ET模式而言,就需要逼服务器一次性将所有缓冲区数据全部读完,也算是逼着你效率提高。今天我们所实现的Reactor是基于ET模式下的多路转接模式。以我们的epoll为例,我们的epoll默认是LT模式。ET模式:只有事件从无到有,从少到多的情况,才会提醒。LT模式:只要有事件就绪,就会不断提醒。原创 2024-07-07 04:38:52 · 355 阅读 · 0 评论 -
高级IO_多路转接之epoll
今天我们所要学习的epoll作为多路转接的后起之秀,会弥补之前所讲的select和poll的所有缺点,可以说从思想上,epoll与select、poll完全不同。原创 2024-07-05 00:20:45 · 551 阅读 · 0 评论 -
高级IO_多路转接之Poll
上一章我们学习了select,但是select作为早期的多路转接接口,缺点十分明显,于是又出现poll和epoll等接口,今天我们就来学习一下poll的使用提示:以下是本篇文章正文内容,下面案例可供参考poll相比较于select,弥补了两个缺点。不再需要繁琐地更新需要关心的fd和其对应事件。可关心的fd数量不再受其接口内置的数据结构大小限制,可以根据用户需求自由调整。但是仍然还有缺点,那就是每次进行一次poll都是一次从用户态拷贝数据到内核态的过程。原创 2024-07-04 15:04:11 · 375 阅读 · 0 评论 -
高级IO_多路转接之select
关于IO,我们已经用过了不少IO接口,从最简单的printf、scanf->C语言文件接口fprintf、fscanf->系统文件接口read、write->再到我们的系统网络套接字接口send、recv。这些接口见证了我们的学习历程,但是这些接口真的就只有读写吗?不光有读写,还有等。就像是我们使用scanf的时候,需要我们去输入一些字符,程序才能继续运行,否则就会一直阻塞住,这就是等的过程。实际等的过程,其实也可以理解为,等待资源准备就绪的过程。而当等的时候,该线程。原创 2024-07-04 00:17:58 · 1135 阅读 · 0 评论 -
内网穿透_frp的使用
由于NAT技术的存在,我们的内网设备是无法从内网直接与公网设备或者其他内网的设备进行连接的,所以,今天我们来学习一种内网穿透技术,来实现内网之间互相访问。其原理很简单,先让架设服务的内网服务器先与一台处于公网的主机建立连接,然后所有其他需要访问这台处于内网的服务器的客户端主机只需要连接那台公网主机,向公网主机发送服务请求数据,再由这台公网主机将你对应的数据转发至内网服务器暴露的端口中,而之后所有的数据通讯都要经过公网主机的转发,这就是内网穿透的原理。本次实验需要使用到frp工具。原创 2024-06-26 16:08:15 · 749 阅读 · 0 评论 -
Linux网络-网络层IP协议、数据链路层以太网协议、ARP协议、ICMP协议和NAT技术
上一章我们已经学习了传输层的TCP协议和UDP协议,本章我们来讲传输层的下一层,网络层IP协议。原创 2024-06-26 15:00:34 · 860 阅读 · 0 评论 -
Linux网络 - 再谈、详谈UDP和TCP协议
上一章我们已经学习了HTTPS协议,知道了HTTPS协议的基本原理。本章我们将回过头来重新深度讲解UDP协议和TCP协议,不能保证,不过大家可以想一想,就算服务端也再发一次ACK请求给客户端,那客户端要不要响应呢?如果又发送响应是不是就一直这么循环下去了?所以干脆我们就只需要三次握手就行了。MSL就是一段TCP报文数据在网络中最大生存时间。所以,等待2MSL的时间就可以在出现问题的时尽可能的让服务端有时间进行补发重传。原创 2024-06-21 00:53:41 · 886 阅读 · 0 评论 -
大学课设项目,Windows端基于UDP的网络聊天程序的服务端和客户端
本次项目可以作为之前内容的一个扩展,学会在Windows端进行网络通信。该项目需要用到的知识手段较多,在编写该项目的同时也可以对之前C++方面的知识进行一个不错的回顾。本次项目用到 Windows网络套接字编程,多线程,线程池,线程安全,互斥锁,IO流,文件管理,数据结构设计,序列化,反序列化,自定义协议,STL等相关知识和技术。提示:以下是本篇文章正文内容,下面案例可供参考。原创 2024-06-17 22:05:01 · 1552 阅读 · 0 评论 -
Linux-Https协议
之前我们学习了Http协议,也试着做了一个HttpServer。所以对于Http我们也有了一个比较清晰的认识。• 数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。• 摘要常见算法:有MD5、SHA1、SHA256、SHA512等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)。原创 2024-06-15 00:30:13 · 772 阅读 · 0 评论 -
Linux网络-HttpServer的实现
之前我们简单理解了一下Http协议,本章我们将在LInux下使用Socket编程自主完成一个HttpServer。可以做到接收Http报文数据,加以解析再向远端发送Http报文数据。之前写过很多遍的网络套接字编程代码就不再重复写了,这里直接写关于HttpServer的代码本章学习了如何搭建一个建议的httpServer,并通过浏览器进行访问。下一章我们将学习https协议。原创 2024-06-14 12:06:29 · 981 阅读 · 1 评论 -
Linux网络 - HTTP协议
上一章内容我们讲了在应用层制定了我们自己自定义的协议、序列化和反序列化。协议的制定相对来讲还是比较麻烦的,不过既然应用层的协议制定是必要的,那么肯定已经有许多计算机大佬们已经制定好了非常完善的协议了,我们今天就来学习我们日常生活经常会用到的HTTP协议。需要用到的软件为 postman,fiddler。这些都是知名的抓包工具。本章主要讲解了一下http协议中的url与请求报文和响应报文。下一章我们来讲解如何自己实现一个httpserver。原创 2024-06-11 17:39:21 · 465 阅读 · 0 评论 -
Linux网络 - json,网络计算服务器与客户端改进
本章内容主要对上一章的网络计算器客户端和服务器进行一些Bug修正与功能改进。并学习如何使用json库和daemon函数。原创 2024-06-06 01:36:53 · 507 阅读 · 0 评论 -
Linux网络-自定义协议、序列化和反序列化、网络计算服务器的实现和Windows端客户端
我们已经学会了Tcp、Udp网络传输协议,并且之前我们也实现了简易的聊天室和翻译器。我们知道,传输层是OS系统里就给我们写好的, 应用层才是我们自己需要去编写的,现在我们对应用层来进行一些初步的了解。在之前我们使用Tcp和Udp服务进行网络通信,我们一直都是以字符串的形式互相发送消息。那么我们就只能发送字符串吗?当然不是,Udp是基于数据流进行网络通信,Udp是基于字节流进行网络通信,虽然我们对字节流和数据流并没有一个特别清晰的认识,但是我们可以知道的是,我们其实是可以传各种各样的类型进行通行的。原创 2024-06-04 19:35:45 · 1147 阅读 · 1 评论 -
Linux网络-守护进程版字典翻译服务器
根据上章所讲的后台进程组和session会话,我们知道如果可以将一个进程放入一个独立的session,可以一定程度上守护该进程。原创 2024-06-02 16:57:33 · 420 阅读 · 0 评论 -
Linux系统-前台任务组,后台任务组
通过上述的知识内容,我们是否可以创建一个不会受任何终端影响的进程,只要我们的云服务器不关机,这个进程就不会被终止!这就是下一节课进程守护的内容,我们基于上节课的翻译字典服务再添加上上进程守护的功能。原创 2024-06-02 14:12:43 · 719 阅读 · 0 评论 -
Linux网络-使用Tcp协议进行网络通信并通过网络接口实现远端翻译
作用:处于listen状态的网络套接字将持续监听是否有其他网络套接字对本套接字进行链接,该接口函数会阻塞,直到有套接字进行链接,链接成功后将返回一个。简单了解一下Tcp协议,他与Udp协议都是传输层协议,而他与Udp协议的区别就是Tcp是有连接、可靠传输并且是面向字节流的一种协议。参数socklen_t *restrict address_len: 输出型参数,用于保存远端主机的套接字的长度。参数socklen_t address_len: 目标网络套接字的struct sockaddr的长度。原创 2024-06-01 02:29:50 · 1148 阅读 · 0 评论 -
Linux网络-Socket套接字_Windows与Linux端双平台基于Udp传输协议进行多线程跨平台的服务器与客户端网络通信的简易聊天室实现
由于我们习惯将IP地址 写成这样的格式xxx.xxx.xxx.xxx(例如192.168.0.1),而在网络层面,我们肯定是采用四字节的int来存储IP,所以有这么一个函数将一个xxx.xxx.xxx.xxx的格式的IP转换为四字节int。我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?绑定这样的默认IP,就可以收到任意IP发来的消息。原创 2024-05-28 18:57:35 · 1031 阅读 · 25 评论 -
Linux网络_网络基础预备
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。原创 2024-05-28 14:55:22 · 497 阅读 · 0 评论