
Linux网络篇
文章平均质量分 91
c无序
原博主c无序 LaCross
展开
-
【Linux加餐-connect的短线重连】
客户端会面临服务器崩溃的情况,我们可以试着写一个客户端重连的代码,模拟并理解一些客户端行为,比如游戏客户端等。原创 2025-03-27 02:20:25 · 505 阅读 · 0 评论 -
【Linux加餐-验证UDP:TCP】-windows作为client访问Linux
成功调用该函数后,Winsock 库的状态会被初始化,应用程序就可以使用 Winsock 提供的一系列套接字服务,如地址家族识别、地址转换、名字查询和连接控制等。在调用 WSAStartup 函数后,如果应用程序完成了对请求的 Socket 库的使用,应调用 WSACleanup 函数来解除与 Socket 库的绑定并释放所占用的系统资源。accept ():接受客户端的连接请求,并返回一个新的套接字描述符,用于与客户端进行通信。listen ():将套接字设置为监听模式,等待客户端的连接请求。原创 2025-03-27 02:19:40 · 909 阅读 · 0 评论 -
【Linux加餐-网络命令】
是一个用于定期执行命令并全屏显示其输出的工具。它非常适合用来实时监控命令的输出变化,比如监控系统状态、网络连接、日志文件等。• a (all)显示所有选项,默认不显示 LISTEN 相关。是一种网络工具,用于测试主机之间的连通性。报文,从而判断网络是否通畅以及测量往返时间(RTT)。• n 拒绝显示别名,能显示数字的全部转化成数字。• t (tcp)仅显示 tcp 相关选项。• u (udp)仅显示 udp 相关选项。,表示延迟非常稳定,波动很小。:通过进程名, 查看进程 id。:往返时间的标准差,为。原创 2025-03-27 02:18:23 · 878 阅读 · 0 评论 -
【Linux网络-poll与epoll】epollserver设计(两个版本 Reactor)+epoll理论补充(LT ET)
总结一下,epoll的使用过程就是三部曲:调用epoll_create 创建一个epoll句柄调用epoll_ctl,将要监控的文件描述符进行注册调用epoll_wait,等待文件描述符就绪。原创 2025-03-27 02:16:53 · 1258 阅读 · 0 评论 -
【Linux网络-poll与epoll】poll作用和定位+poll接口+epoll介绍等
int fd;A. 参数说明fd: 要监视的文件描述符。若设置为负值则忽略 events 字段并且 revents 字段返回 0。events: 指定要监视的文件描述符上的事件。poll返回时告知用户该文件描述符上的哪些事件已经就绪B. events 和 revents 的取值事件描述是否可作为输入是否可作为输出POLLIN数据(包括普通数据和优先数据)可读是是POLLRDNORM普通数据可读是是POLLRDBAND优先级带数据可读(Linux不支持)是是POLLPRI。原创 2025-03-27 02:16:38 · 967 阅读 · 0 评论 -
【Linux网络-多路转接select】
select要正常工作,需要借助一个辅助数组,来保存所有合法fd每次使用都要重置就绪了,循环检测处理所有事件缺点每次调用 select,都需手动设置 fd 集合,从接口使用角度来说也非常不便。每次调用 select,都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd 很多时会很大。同时每次调用 select 都需要在内核遍历传递进来的所有 fd,这个开销在 fd 很多时也很大。select 可监控的文件描述符数量太少。原创 2025-03-26 00:00:00 · 789 阅读 · 0 评论 -
【Linux网络-五种IO模型与阻塞IO】
一旦数据准备好,内核会将数据拷贝到用户空间缓冲区中)当数据被成功拷贝到用户空间时,内核通知应用程序数据已经可用,应用程序可以继续执行其他任务,而不需要等待I/O操作的完成,当I/O操作完成后,内核通过信号或回调函数通知应用程序。【例子】在之前的echo例子中,键盘向OS输入,实际将键盘输入的数据放入到OS内部的输入缓冲区,当进程需要这个数据的时候,将输入缓冲区的内容拷贝到进程,进程执行结果后将数据拷贝到OS内部的输出缓冲区,显示器从输出缓冲区拷贝内容,最终就把结果回显给我们。原创 2025-03-24 00:00:00 · 709 阅读 · 0 评论 -
【Linux网络-NAT、代理服务、内网穿透】
后来找张三表姐买尿不湿的人太多了,他表姐觉得天天去超市太麻烦,干脆去超市买了一大批尿不湿屯在家里,如果有人来找她代购,就直接把屯在家里的货发出去,而不必再去超市,此时张三表姐就是 “反向代理”。,是一种让位于不同内网中的设备可以直接建立连接的技术,主要应用于需要点对点(P2P)通信的场景,如文件传输、视频通话、游戏联机等。内网打洞技术在 P2P 通信中起到了重要作用,通过与中继服务器配合,使内网中的设备能够直接建立连接,降低了对中继的依赖,提高了通信效率。,是一种NAT(网络地址转换)技术的扩展。原创 2025-03-22 00:00:00 · 1130 阅读 · 0 评论 -
【Linux网络-数据链路层】以太网(以太网帧格式|MAC地址+模拟一次性局域网通信+MTU)+ARP协议
标准以太网帧格式分为多个字段,用于确保数据的完整性和有效传输。原创 2025-03-20 00:00:00 · 762 阅读 · 0 评论 -
【Linux网络-网络层】TCP与IP的关系+IP协议基本概念+网段划分+路由+IP分片与组装
链路状态算法通过收集、传播链路状态信息,使每台路由器构建出网络拓扑图,并基于最短路径算法生成路由表。这种算法能提供全局最优的路由选择,适合需要快速收敛和高可靠性的中大型网络。原创 2025-03-18 00:00:00 · 678 阅读 · 0 评论 -
【Linux-传输层协议TCP】流量控制+滑动窗口+拥塞控制+延迟应答+捎带应答+面向字节流+粘包问题+TCP异常情况+TCP小结
粘包:多个小消息被合并为一个数据包发送,导致接收方在读取时发现接收的数据包含了多条消息。拆包:一个大消息被拆分成多个数据包发送,导致接收方收到的数据是一个不完整的消息,需要将多次接收到的数据拼接起来。原创 2025-03-16 00:00:00 · 1841 阅读 · 0 评论 -
【Linux-传输层协议TCP】TCP协议段格式+确认应答+超时重传+连接管理机制(三次握手、四次挥手、理解TIME_WAIT + CLOSE_WAIT)
TCP全称为“传输控制协议(Transmission Control Protocol)”人如其名,要对数据的传输进行一个详细的控制。下面是TCP报头各个字段的表格形式:下面是TCP报头中控制位字段的表格形式:这些控制位标志用于TCP连接的建立、维护和终止,以及数据的可靠传输。每个标志都有其特定的作用,通过组合使用这些标志,TCP能够实现复杂的网络通信功能。这里有4个比特位,按照正常取值范围就说【0,15】,但是我们的报头至少需要20字节。所以规定TCP报头中4位首部长度的基本单位是4字节,这样取值范围就是原创 2025-03-14 00:00:00 · 1810 阅读 · 0 评论 -
【Linux-传输层协议UDP】再谈端口号+UDP协议+深度理解UDP
在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组来标识一个通信(可以通过 netstat-n 查看);UDP封装的过程,首先我们知道协议栈有四层:应用层,传输层,网络层,数据链路层;操作系统内可能同时存在大量的报文,有的报文正在被向上交付,有的报文正在被向下交付;比如 HTTP,FTP,SSH 等这些广为使用的应用层协议,它们的端口号 都是固定的。如果我们需要传输的数据超过64K,就需要在应用层手动的分包,多次发送,并在接收端手动拼装;原创 2025-03-12 00:00:00 · 817 阅读 · 0 评论 -
【Linux-HTTP协议】HTTP知识延续+HTTP设计改进
但是以前访问的人并不知道域名更改了,于是还是访问以前网站,为了不丢失老客户,技术部门将原网站进行重定向,这样访问的是abc网站,实际已经跳转到xyz网站了;我们自己的是login,百度这里是s,问号后面是一堆参数1,GET方法把参数提交给百度,把后面参数全部交给/s服务,所以/s相当于在服务器注册一个服务列表,并且有对应执行算法(搜索算法),所以它的参数回掉执行对应函数以后,对应算法服务就可以通过回掉把请求的执行后的参数就全部交给我了,交给我之后不就可以看到我们搜索后的内容了吗?原创 2025-03-06 00:00:00 · 1242 阅读 · 0 评论 -
【Linux网络-HTTP协议】HTTP基础概念+构建HTTP
虽然我们说,应用层协议是我们程序猿自己定的.但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用。HTTP(超文本传输协议)就是其中之一。在互联网世界中,HTTP(HyperTextTransferProtocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。原创 2025-03-02 09:00:00 · 1221 阅读 · 0 评论 -
【Linux网络-应用层自定义协议与序列化】基础概念+序列化与反序列化+JsonCpp+网络版本计算器代码
socket api的接口,在读写数据时,都是按“字符串”的方式来发送接收的,如果我们要传输一些“结构化的数据”怎么办呢?无论我们采用方案一,还是方案二,还是其他的方案,只要保证,一端发送时构造的数据,在另一端能够正确的进行解析,就是ok的,这种约定,就是。例如,我们需要实现一个服务器版的加法器,我们需要客户端把要计算的两个加数发过去,然后由服务器进行计算,最后再把结果返回给客户端。◉ 在任何一台主机上,TCP连接即有发送缓冲区,又有接受缓冲区,所以,在内核中,可以在发消息的同时,也可以收消息,即全双工。原创 2025-02-28 09:00:00 · 1749 阅读 · 0 评论 -
【Linux网络-Socket编程TCP实战】多线程远程命令执行
其次我们想让执行业务解耦更加彻底,那么原先这个文件的Service就不再需要了,我们直接使用包装器,未来执行回掉函数,底下的关闭文件描述符也不要了,我们就要解耦彻底。首先内部会创建一个管道,然后再创建子进程,创建子进程后调用exec*接口执行command,子进程执行完命令后将结果写入管道,然后父进程去读管道就可以了。:指向一个字符串,它可以是 “r” 或 “w”,分别表示读取从子进程的标准输出或向子进程的标准输入写入。启动的进程是异步的,但它的标准I/O流与调用进程是同步的。命令,并读取了它的输出。原创 2025-02-26 09:00:00 · 316 阅读 · 0 评论 -
【Linux网络-Socket编程TCP实战】Tcp_echo_server设计
【故事】现在有一家餐馆,餐馆内有若干服务员,餐馆外还有一个专门拉客的工作人员,工作人员负责将外面的顾客拉入餐馆,让服务员进行服务,工作人员将顾客带进餐馆后不在餐馆停留,而是返回门口继续拉拢客户,这里的工作人员就是sockfd,而里面的服务员就是返回的文件描述符,也就是说,sockfd 的作用就是把链接从底层获取上来,而返回值的作用就是跟客户端通信。对于父进程来说,父进程一般是需要等待子进程退出,回收子进程,如果子进程一直不退出,父进程一直等待,这样不就又卡在原来的地方了吗?原创 2025-02-24 09:00:00 · 774 阅读 · 0 评论 -
【Linux网络-Socket编程UDP实战】dict_server + chat_server
之前的echo_server只是用来发消息,现在我们想在服务器加点业务,实现一个翻译的功能,客户端输入英文,会自动回显他的中文含义。之前我们的服务都是单进程的,以后我们的业务肯定不止一个,这里我们引入线程池,将线程池作为我们的网络转发模块,实现聊天室功能。我们需要一个容器能够存储我们的单词以及翻译,我们是通过文件加载的,因此我们需要文件路径。我们需要调整一下客户端,客户端也是需要线程维护的,一个线程发消息,一个线程收消息。对于回掉函数,我们要传人文件描述符,信息,以及客户端信息(谁发的)原创 2025-02-22 09:00:00 · 315 阅读 · 0 评论 -
【Linux网络-Socket编程UDP实战】udp_echo_sercer
在实现这个实战前,先复习几个函数。原创 2025-02-20 09:00:00 · 1017 阅读 · 0 评论 -
【Linux网络-Socket编程预备】认识IP和端口号 + UDP/TCP编程接口
PID是操作系统分配给每个进程的唯一标识符,用于在系统内部标识和追踪进程。原创 2025-02-18 09:00:00 · 1055 阅读 · 0 评论 -
【Linux网络-网络基础】TCP/IP五层(或四层)模型+网络传输的基本流程
TCP/IP协议的本质是一种解决方案TCP/IP协议能分层,前提是因为问题们本身能分层截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了OS源代买一般都是用C/C++语言写的下面,仔细看看下面的图问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol,也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有“共识”,能够识别对方发来的数据,这不就是约定吗?原创 2025-02-16 09:00:00 · 2119 阅读 · 1 评论 -
【Linux网络-网络基础】计算机网络背景+协议+OSI七层模型
网络是一种由多个节点(如计算机、手机或其他电子设备)通过通信线路或无线信号连接而成的系统。在网络中,信息可以通过这些节点进行传输和交换。原创 2025-02-14 14:54:28 · 1256 阅读 · 0 评论