
Linux网络
文章平均质量分 92
熙曦Sakura
985大连理工大学计算机专业本科生,分享我的学习心得,欢迎大家批评指正
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Linux网络】多路转接epoll
按照 man 手册的说法:是。它是在 2.5.44 内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44)它几乎具备了之前所说的一切优点,被公认为 Linux2.6 下性能最好的多路 I/O 就绪通知方法。原创 2025-05-19 18:36:16 · 611 阅读 · 0 评论 -
【Linux网络】多路转接poll
poll 是 Linux 网络编程中的一种 I/O 多路复用机制,用于在单线程内同时监视多个文件描述符的状态变化,适用于处理多个并发连接。与 select 相比,poll 优化了文件描述符数量限制和参数设置问题,使用 pollfd 结构体数组来指定监视的文件描述符及其事件。poll 函数通过阻塞等待事件发生,支持超时控制和信号中断,返回后通过检查 revents 字段确定事件类型。尽管 poll 在灵活性和超时控制上具有优势,但其在处理大规模连接时存在性能瓶颈,建议在高并发场景下使用更高效的 epoll原创 2025-05-18 17:17:23 · 641 阅读 · 0 评论 -
【Linux网络】多路转接select
多路转接(多路复用)是一种用于监视多个文件描述符(fd)状态变化的机制,常见的实现方式包括select、poll和epoll。select是其中一种系统调用,允许程序等待多个fd的状态变化,直到其中一个或多个fd就绪。select函数原型包括参数nfds(最大fd值+1)、readfds、writefds、exceptfds(分别表示可读、可写和异常fd集合)以及timeout(超时时间)。fd_set结构用于表示fd集合,通过位图操作来管理fd。select的返回值表示就绪的fd数量,0表示超时,-1表示原创 2025-05-18 16:12:26 · 848 阅读 · 0 评论 -
【Linux网络】五种IO模型与阻塞IO
在Linux网络环境中,IO(输入/输出)是网络数据传输的核心,涉及数据从网络到系统再到应用程序的传输过程。IO模型主要分为阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO。阻塞IO在数据未就绪时会阻塞进程,而非阻塞IO则通过轮询检查数据状态,避免长时间阻塞。IO多路复用通过select、poll、epoll等系统调用,允许单线程处理多个连接,提升性能。信号驱动IO通过信号通知应用程序数据就绪,而异步IO则完全由内核处理数据传输,通知应用程序结果。同步与异步通信的区别在于调用者是否主动等待结果,而原创 2025-05-18 15:02:30 · 824 阅读 · 0 评论 -
【Linux网络】DNS与ICMP
如上图所示,域名结构是树状结构,树的最顶端代表根服务器,根的下一层就是由我们所熟知的.com、.net、.cn等通用域和.cn、.uk等国家域组成,称为顶级域。网上注册的域名基本上是二级域名,比如http://baidu.com、http://taobao.com等等二级域名,它们基本上是归企业和运维人员管理。ping命令基于ICMP,是在网络层,而端口号,是传输层的内容。至今,我们的计算机上仍然保留了hosts文件,在域名解析的过程中仍然会优先查找hosts文件的内容。ICMP协议是一个网络层协议。原创 2025-05-17 20:18:04 · 683 阅读 · 0 评论 -
【Linux网络】内网穿透
内网穿透是连接内网与公网的桥梁,通过合理选择工具和配置,可以在远程办公、个人服务搭建、开发测试等场景中发挥重要作用。但需注意安全风险,优先选择加密传输和权限控制功能完善的方案。随着云计算和边缘计算的发展,未来内网穿透技术可能进一步集成到云服务中,变得更加便捷和安全。内网打洞是P2P通信的核心技术,通过巧妙利用NAT设备的特性,实现了内网设备间的直接通信,在实时交互场景中具有不可替代的优势。尽管受限于NAT类型和防火墙策略,但其与STUN/TURN/ICE的结合已成为现代网络通信的基础设施。原创 2025-05-17 17:58:20 · 1201 阅读 · 0 评论 -
【Linux网络】NAT和代理服务
正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标服务器之间,原创 2025-05-17 16:11:09 · 972 阅读 · 0 评论 -
【Linux网络】ARP协议
ARP协议(地址解析协议)是介于数据链路层和网络层之间的协议,用于建立IP地址与MAC地址的映射关系。其工作流程包括发送ARP请求(广播)、接收并响应ARP请求(单播)以及更新ARP缓存表。ARP缓存表存储IP-MAC映射,具有时效性,可通过命令手动管理。ARP协议的扩展包括免费ARP、ARP代理和ARP欺骗,其中ARP欺骗是一种常见的网络攻击手段。此外,ARP与RARP(反向地址解析协议)的区别在于前者已知IP求MAC,后者已知MAC求IP。理解ARP协议有助于排查网络问题并防范安全威胁。原创 2025-05-17 14:52:51 · 1002 阅读 · 0 评论 -
【Linux网络】数据链路层
数据链路层是网络通信中用于设备间数据传输的关键层,以太网作为其核心技术标准,涵盖了数据链路层和物理层的内容,规定了网络拓扑、访问控制方式和传输速率等。以太网帧格式包括源地址、目的地址(MAC地址)、帧协议类型和CRC校验码。MAC地址是识别数据链路层节点的唯一标识,长度为48位。MTU(最大传输单元)是数据链路层对数据包大小的限制,以太网的MTU为1500字节。MTU对IP、UDP和TCP协议有重要影响,可能导致数据包分片和重组失败。MSS(最大段大小)是TCP协议中单个数据报的最大长度,受MTU限制。通过原创 2025-05-16 21:33:09 · 1022 阅读 · 0 评论 -
【Linux网络】IP 分片和组装
16标识 001 0。原创 2025-05-16 21:04:30 · 676 阅读 · 0 评论 -
【Linux网络】网络层
网络层负责在复杂的网络环境中确定合适的路径,核心协议是IP协议。IP协议通过IP地址(IPv4和IPv6)标识网络中的主机和路由器,并将数据包跨网络转发到目标主机。IP地址分为网络号和主机号,网络号标识不同的子网,主机号标识子网内的具体设备。子网划分通过子网掩码实现,提高了IP地址的利用率。IP协议头部包含版本号、服务类型、总长度、生存时间等字段,用于控制数据包的传输。路由过程通过逐跳转发实现,路由器根据目标地址选择最佳路径。IP地址数量有限,通过动态分配、NAT技术和IPv6缓解地址不足问题。私有IP地址原创 2025-05-14 17:34:20 · 1218 阅读 · 0 评论 -
【Linux网络】TCP全连接队列
本文通过实验和源码分析探讨了TCP协议中的一些关键概念。首先,通过测试代码验证了listen函数的第二个参数对全连接队列长度的影响,发现当全连接队列满时,新的连接请求会进入SYN_RECV状态而非ESTABLISHED状态。接着,介绍了使用tcpdump工具进行网络数据包捕获和分析的常见方法,包括捕获特定接口、IP地址和端口的数据包,以及保存和读取数据包文件。最后,通过分析socket结构体源码,探讨了socket与文件描述符的关联机制,进一步理解了Linux系统中“一切皆文件”的设计理念。这些内容有助于深原创 2025-05-14 15:38:05 · 974 阅读 · 0 评论 -
【Linux网络】传输层协议TCP
TCP协议是一种传输控制协议,旨在确保数据传输的可靠性。其核心机制包括确认应答(ACK)和超时重传,通过序列号和确认序号来保证数据的有序性和完整性。TCP还通过三次握手和四次挥手来管理连接的建立和关闭,确保通信双方的全双工通信。在连接关闭时,主动关闭的一方会进入TIME_WAIT状态,等待2MSL(最大报文生存时间)以确保网络中残留的报文消散,避免端口冲突。TCP的这些机制共同保障了数据传输的可靠性和高效性。原创 2025-05-14 14:29:07 · 1015 阅读 · 0 评论 -
【Linux网络】传输层协议UDP
传输层协议UDP(用户数据报协议)是一种无连接、不可靠的传输协议,适用于不需要建立连接或确认机制的应用场景。UDP通过端口号标识不同的应用程序,端口号分为知名端口号(0-1023)和动态分配端口号(1024-65535)。UDP协议的特点包括无连接、不可靠和面向数据报,即数据报在传输过程中不会被拆分或合并。UDP的缓冲区机制简单,接收缓冲区不保证数据报的顺序,且缓冲区满时新数据会被丢弃。UDP协议首部中的16位长度限制了单个UDP数据报的最大长度为64K,超过此限制的数据需要在应用层进行分包处理。基于UDP原创 2025-05-13 17:45:27 · 756 阅读 · 0 评论 -
【Linux网络】HTTPS
HTTPS协议是在HTTP基础上引入加密层,通过加密技术保障数据传输的安全性。HTTP协议明文传输易被篡改,而HTTPS通过对称加密和非对称加密结合的方式,确保数据在传输过程中不被窃取或篡改。对称加密使用同一密钥进行加密和解密,效率高但密钥传输存在风险;非对称加密使用公钥和私钥配对,安全性高但效率较低。HTTPS采用非对称加密传输对称密钥,后续通信使用对称加密,兼顾安全与效率。为防止中间人攻击,HTTPS引入数字证书,由CA机构验证服务器身份,确保证书中的公钥真实可靠。数字签名基于非对称加密,用于验证数据完原创 2025-05-13 17:10:37 · 1086 阅读 · 0 评论 -
【Linux网络】 HTTP cookie与session
HTTP Cookie是服务器发送到用户浏览器并保存的一小块数据,用于在后续请求中识别用户。Cookie分为会话Cookie(浏览器关闭时失效)和持久Cookie(有明确过期时间)。服务器通过Set-Cookie字段设置Cookie,浏览器在后续请求中自动携带。Cookie的格式包括名称、值、过期时间、路径、域名等属性,可通过secure和HttpOnly标志增强安全性。Cookie常用于用户认证、会话管理、跟踪用户行为等场景。测试中,Cookie的写入、自动提交、过期时间和路径设置均通过代码实现,确保其功原创 2025-05-12 16:57:02 · 797 阅读 · 0 评论 -
【Linux网络】HTTP
在这两个状态码的HTTP响应头部,用于告诉浏览器应该将请求重定向到哪个新的URL地址。(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用。将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。HTTP中的Connection字段是HTTP报文头的一部分,它主要用于控制和管理客户端与服务器之间的连接状态。原创 2025-05-11 19:14:51 · 1047 阅读 · 0 评论 -
【Linux网络】应用层自定义协议与序列化
你可以用toStyledString、StreamWriter和FastWriter提供了不同的序列化选项,它们提供强大的错误处理机制。Json::Reader和parseFromString函数是Jsoncpp中主要的反序列化工具,在进行序列化和反序列化时,请确保处理所有可能的错误情况,并验证输入和输出的有效性。原创 2025-05-09 17:06:03 · 1099 阅读 · 0 评论 -
【Linux网络】Socket-TCP相关函数
这些函数是C++ 中实现Socket - TCP编程的基础,通过组合使用它们,可以创建可靠的网络应用程序,实现客户端与服务器之间的通信。原创 2025-05-09 16:35:42 · 513 阅读 · 0 评论 -
【Linux网络】网络命令
netstat可以提供关于网络连接、路由表、网络接口状态以及网络协议统计等多方面的信息,帮助用户了解系统的网络活动情况,诊断网络问题,监控网络性能等。原创 2025-05-08 21:32:47 · 1121 阅读 · 0 评论 -
【Linux网络】Socket-UDP相关函数
是一个用于接收数据报(datagram)的系统调用函数,在网络编程里应用广泛,特别是在使用 UDP 协议通信时。是网络编程里用于发送数据报(datagram)的系统调用函数,主要用于 UDP 协议通信。与 TCP 不同,UDP 是无连接的协议,这个函数的作用是创建一个 Socket 文件描述符,在客户端和服务器都可以使用。此函数用于把一个本地地址和端口号绑定到 Socket 上,一般在服务器端使用。是在网络编程中用于表示 IPv4 地址信息的结构体,它在。这个结构体是网络编程的基础组件,在使用。原创 2025-05-08 18:01:48 · 1085 阅读 · 0 评论 -
【Linux网络】Socket 编程预备
本文介绍了Socket编程的基础知识,包括IP地址和端口号的作用、传输层协议(TCP和UDP)的特点、网络字节序的概念以及Socket编程接口。IP地址用于标识网络中的主机,而端口号用于标识主机中的进程,两者结合可以唯一标识网络中的一个进程。传输层协议中,TCP提供可靠的有连接通信,而UDP则提供无连接的不可靠通信。网络字节序规定了大端字节序作为标准,确保不同主机间的数据一致性。最后,文章详细介绍了Socket API,包括创建、绑定、监听、接收请求和建立连接等操作,并解释了sockaddr和sockadd原创 2025-05-08 16:43:47 · 796 阅读 · 0 评论 -
【Linux网络】网络传输基本流程
IP网络层存在的意义:提供网络虚拟层,让世界的所有网络都是IP网络,屏蔽最底层网络的差异。• 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac地址判定。初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程。. 我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指。而其中每层都有协议,所以当我进行进行上述传输流程的时候,要进行。在网络传输的过程中,数据不是直接发送给对方主机的,而是先要。,最后由底层发送,然后由对方主机的底层来进行接受,再。原创 2025-05-08 00:45:18 · 921 阅读 · 0 评论 -
【Linux网络】网络协议基础
本文介绍了计算机网络的基础知识,包括计算机网络的背景、协议的概念、协议分层的重要性以及OSI七层模型和TCP/IP五层(或四层)模型。文章首先描述了计算机网络从独立模式到网络互联、局域网和广域网的发展过程,强调了协议在计算机通信中的关键作用。接着,文章详细解释了协议分层的优势,如解耦合和降低维护成本,并介绍了OSI七层模型的理论框架及其在实际应用中的局限性。最后,文章重点讲解了TCP/IP五层模型,包括物理层、数据链路层、网络层、传输层和应用层的功能,并指出协议的本质是通信双方共同认识的结构化数据类型。通过原创 2025-05-08 00:13:03 · 753 阅读 · 0 评论