IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:UDP

共 13 篇相关文章

IT 累计浏览 4,159

可靠 UDP 传输

这篇关于可靠 UDP 传输的文章,作者从对 TCP over UDP 的审慎态度出发,深入探讨了其可能的应用场景与实现路径。 作者首先指出,强行在 UDP 上复制一个完整可靠的传输协议往往得不偿失。其优势通常只在特定条件下显现,例如游戏状态同步等对包序不敏感、或采用一问一答请求模式的场景——这类小数据量交互正是 TCP 建立/拆除连接开销的短板所在。 核心方案上,作者认为一个可行的“可靠 UDP”模块,应专注于解决“如何利用不可靠传输实现可靠协议”这一逻辑问题,而非直接绑定 UDP 收发。他提出的 API 设计,将可靠化逻辑封装为独立层,业务层仅需调用发送与接收接口,而由底层的 `rudp_update` 函数处理数据包组序、重传请求与心跳维持。 作者分享了一个轻量级的 C 语言实现(约 500 行),采用了请求重发机制、16bit 包序号、以及可配置的发送延迟与超时策略。他强调,其实用性在于简化逻辑,并通过超时而非复杂确认来清理过期数据,为特定低延迟需求提供了一个灵活且易于修改的参考起点。

IT 累计浏览 2,299

实用命令行工具详解(四)—netcat

这篇讲的是Linux下的网络调试利器netcat(简称nc),它被称作“网络工具中的瑞士军刀”,能通过TCP和UDP在网络中读写数据。文章具体拆解了它的三个实用场景:建立监听端口进行基础通信、利用管道实现文件快速传输,以及通过-w参数设置连接超时以控制会话时长。每个场景都提供了清晰的客户端与服务器端命令示例,比如用`cat local | nc localhost 9999`来推送文件内容,或用`nc -w 10`来自动中断空闲连接。这些例子展示了如何将netcat与重定向、管道结合,在脚本或临时调试中灵活使用。

IT 累计浏览 4,022

手机应用/服务器开发的一些总结(二)

这篇讲的是自定义TCP socket开发中的实践经验与方案对比。作者从Android客户端和服务器端两个维度展开,重点讨论了阻塞与非阻塞socket的选型及具体实现中的“坑”。 Android端部分,作者对比了传统阻塞socket与NIO的使用差异,特别分享了NIO在实际业务中遇到的问题。例如网络断线时`finishConnect()`可能长时间阻塞,解决方案是通过`setSoTimeout`设置合理超时。同时也指出了NIO下`channel.read`不同返回值(如-1表示关闭、0表示无数据)的准确含义,这些细节对稳定开发至关重要。 Server端部分,作者分析了从Python标准库`ThreadingTCPServer`到异步框架tornado与gevent的演进。他指出,tornado的异步IO虽然性能高,但业务代码不能阻塞,使用起来有一定痛苦;而gevent则兼顾了性能与编码便利性。基于此,作者还封装了`tkola`和`gkola`两个库,采用类似Flask的装饰器风格来简化TCP server开发,并提供了清晰的代码示例。 总的来说,文章不仅梳理了不同场景下的技术选型逻辑,更分享了生产环境中的具体解决方案与开源工具,对从事移动端与服务器网络编程的开发者有较强的实用参考价值。

IT 累计浏览 6,421

计算机网络协议赏析-HTTP

大家每天都在敲击的http://,可能是计算机网络里最“熟悉的陌生人”。这篇文章从这个视角切入,带我们重新认识这位应用层的明星协议。 它将HTTP与幕后的TCP/IP协议对比,点明HTTP作为用户直接面对的“台前大腕”的地位。作者没有停留在概念层面,而是清晰地拆解了HTTP工作的四个步骤:从TCP连接建立,到客户端发出请求报文,服务器返回响应报文,最后连接断开。 文章的核心价值在于将协议细节“可视化”。它详细展示了一次典型的HTTP请求和响应报文长什么样,并解释了每一行代码的作用——从请求方法、头部字段,到那个容易被忽略但至关重要的空行。同时,文章也系统梳理了那些常见的状态码:从200 OK到404 Not Found,再到500服务器错误,让读者真正读懂这些数字背后的含义。 除了基础,文章还延伸到了HTTP 1.0与1.1版本的演进,特别是“持久连接”这一关键改进,并提及了缓存控制等高级用法。整篇文章像一位耐心的向导,将抽象的协议规范转化为具体可感的报文结构,帮助读者建立起对HTTP工作原理的扎实理解。

IT 累计浏览 13,125

自建DNS以防止GFW干扰

这篇讲的是如何通过自建本地DNS服务器,来规避GFW对DNS查询的干扰,从而恢复部分网站的访问。文章首先解释了问题根源:GFW会拦截并污染常见的UDP协议DNS请求,导致解析结果错误。而一个有效的对策是利用TCP协议的DNS查询,因为它目前不易被干扰。 作者推荐的具体方案是,使用开源软件Unbound在本地搭建一个DNS服务器。该服务器监听本地,接收程序发出的UDP请求,并将其转换为TCP查询转发给上游公共DNS(如8.8.8.8),从而绕过污染。文章给出了在Windows系统上的详细配置步骤,包括安装、修改配置文件、重启服务,并最终将系统DNS指向本地127.0.0.1,操作性很强。 对于更进一步的安全需求,文章末尾还提到了一个升级思路:可以结合SSL加密,在境外服务器上部署Unbound作为上游,实现查询流量的端到端加密,提供了更彻底的解决方案。

IT 累计浏览 10,842

推荐一些socket工具,TCP、UDP调试、抓包工具

作者从Fiddler和Charles这些HTTP调试神器聊起,引出了对socket及TCP/UDP调试工具的需求。文章没有停留在理论,而是直接推荐了几款作者亲测的实战工具,并点明了它们各自的长处。 Wireshark依然是底层抓包分析的王者,但文章特意提醒了它可能按端口号自动解码协议带来的小烦恼。而国产工具sokit则更像一把“瑞士军刀”,作者重点介绍了它基于QT的跨平台特性、方便的二进制包组装能力,以及模拟分包/粘包和轻量级抓包的实用功能,甚至分享了自己曾因一个空格导致发送数据异常的真实小故事,这恰恰凸显了详细日志的重要性。 除此之外,文章还对比了体积小巧的TCP/IP Builder,以及能直观监控系统所有连接、帮助排查异常进程的Windows工具TCPView。整体来看,这篇推荐就像一份从实战出发的工具清单,帮助开发者根据具体场景——是深度抓包分析、快速调试协议,还是监控连接状态——选择最顺手的兵器。

IT 累计浏览 8,839

推荐一些socket工具,TCP、UDP调试、抓包工具

这篇讲的是作者从自己推荐HTTP调试工具的过往经验出发,引出了对Socket、TCP/UDP调试及抓包工具的系统推荐。作者作为一名“工具控”,不仅介绍了像Wireshark这样公认的网络抓包神器——它功能强大但偶尔会“自作聪明”地按端口号解码协议,也重点安利了一款国人开发的跨平台工具sokit,它能方便地模拟分包粘包,支持客户端、服务器、代理三种模式,不过作者也分享了一个在发送二进制数据包时因空格导致发送异常的小坑。 文章还列举了TCP/IP Builder、TCPView等其他几款各有侧重的工具。其中,TCPView尤其适合用于监控系统当前的TCP/UDP连接状态,甚至能帮助排查一些异常连接。作者最后也坦言,对于简单的调试需求,自己动手写脚本同样便捷。 这些工具基本覆盖了从数据包捕获、协议分析到连接状态监控的常见场景,适合在不同环节辅助开发者进行Socket通信的调试与排查。

IT 累计浏览 5,951

计算机网络协议包头赏析-UDP

这篇讲的是网络协议中那位“低调的幕后英雄”——UDP。作者从它和TCP的兄弟关系切入,点明两者虽同处传输层,但性格迥异:UDP更像随性的文科生,不追求严格顺序,换取了简单与高效,因此在语音、视频、DNS查询等对延迟敏感但能容忍少量丢包的场景下大显身手。 文章的核心是“赏析”其精巧的8字节包头。与TCP冗长的20字节头部相比,UDP头只包含源/目的端口、长度和校验和,这直观体现了它的设计哲学:轻量化、低开销。作者还特别解释了“用户数据报长度”字段的含义,并引用了一个极其实用的结论:在以太网环境下,UDP数据载荷最好控制在1472字节以内,以避免IP分片带来的风险;而在复杂的互联网环境中,这个安全值则建议在548字节左右。 这些从底层协议特性推导出的具体数字建议,让这篇赏析不止停留在概念层面,为实际的网络编程提供了清晰的参考尺度。

IT 累计浏览 5,698

NAT连通性测试工具以及Flash P2P中的NAT穿透原理

这篇讲的是P2P通信中那个经典难题——NAT穿透,并以Flash P2P为例,清晰拆解了它的原理与实现。作者从最基础的TCP/UDP包头四要素出发,解释了NAT(网络地址转换)为何会成为设备间直接通信的“拦路虎”。文章深入剖析了不同类型的NAT(如锥形、对称型)在穿越难度上的关键差异,并指出NAT连通性测试工具是如何利用这些原理工作的。 核心聚焦于Flash P2P采用的穿透方案:它如何通过引入一个集中式的信令服务器来中转探测消息,从而巧妙地“诱导”NAT为后续的P2P数据流打开通道。文章不仅阐明了STUN等协议在这个过程中扮演的角色,更具体分析了Flash Player的NetConnection如何协调这些步骤,最终在复杂的网络环境下建立起点对点的直接连接。 整篇文章的叙述从协议基础平滑过渡到工程实践,将抽象的NAT行为与具体的代码实现逻辑结合起来,帮助读者建立起从问题到解决方案的完整认知链条。

IT 累计浏览 3,135

linux 下解决php-udp网站攻击。彻底解决办法!

这篇文章直击一个真实痛点:网站服务器遭遇UDP Flood攻击的紧急处理。作者从实战角度出发,没有停留在防火墙规则或应用层防护的常规方案上,而是剖析了一个更深层的问题——服务器可能已被植入udp-dos攻击木马。 文章最彻底的解决之道,是在Linux系统层面直接禁止UDP对外发送数据。这意味着,即使攻击代码已经潜伏在服务器内部,也无法将恶意数据包投递出去,从根源上切断了攻击路径。这种“釜底抽薪”的思路,绕过了复杂的应用排查,提供了立即见效的防御手段。 对于需要加固服务器安全的朋友来说,这个思路非常直接有效。它提醒我们,面对复杂的攻击,有时最简单的系统级策略反而最为可靠。

IT 累计浏览 4,615

在 Linux 的应用中测试中的延时和丢包模拟

这篇讲的是如何在 Linux 环境下,为应用程序模拟不稳定的网络条件。作者从实践中总结,特别提到了这是红帽认证架构师(RHCA)课程中关于缓冲区膨胀问题(BDP)的一个经典测试场景,也是许多公司进行性能评估时的常用手段。 具体来说,文章聚焦于使用工具(如 tc 和 netem)在 Linux 主机上主动制造网络延迟与丢包。这样做的目的,是为了在可控的环境中复现生产网络可能出现的抖动或不稳定状况,从而提前检验应用程序在这种恶劣网络下的表现、健壮性以及资源消耗情况。这种方法能帮助开发者和运维人员定位潜在的性能瓶颈,确保应用上线后能应对真实的复杂网络环境。 摘要中不仅点明了测试的技术原理(如利用 netem 模拟延迟和丢包),还强调了其在实际业务中的价值——它不是一个纯理论的概念,而是直接服务于应用质量保障的实用技能。对于需要保证服务 SLA 或进行容量规划的技术团队来说,掌握这类模拟测试方法非常关键。

IT 累计浏览 5,590

有道实习生笔试总结

这篇文章记录了作者作为实习生参加有道公司笔试后的深度总结。从背景入手,笔试是技术岗位招聘的关键环节,旨在评估候选人的编程基础和工程思维。作者详细描述了笔试的几个模块:选择题涵盖计算机网络和操作系统知识,编程题则聚焦于数据结构和算法。他特别提到一道动态规划题目,涉及状态转移方程的优化,通过实例展示了如何减少时间复杂度。此外,系统设计题要求设计一个高并发的短链服务,作者分享了关于负载均衡和缓存策略的思考过程。通过这次笔试,作者发现实战经验比理论更重要,建议读者在刷题之余参与开源项目。文章最后强调,笔试总结不仅是回顾,更是对技术栈

IT 累计浏览 7,983

关于 SOCKS 代理的远端 DNS 解析

这篇讲的是使用SOCKS代理时一个常见但棘手的故障:明明代理服务器地址和端口都配对了,某些网站(比如作者提到的某微博平台)却死活打不开。文章直击问题核心,指出这并非代理本身失效,而是本地DNS查询在到达远端前已被污染,导致拿到了错误的IP地址。 作者给出的解决方案是启用SOCKS 5协议下的远端DNS解析(Remote DNS Resolution)功能。其原理是让代理服务器代替你的本地设备去解析域名,从而绕过本地网络环境中的DNS污染。文章可能深入解释了这一过程的技术细节,比如SOCKS 5协议如何封装DNS查询并将其隧道化传输。 对于需要稳定访问特定服务、又不想手动折腾修改Hosts文件的用户来说,正确配置远端DNS解析是一个更底层、也更可靠的解决思路。理解DNS污染与代理协议的交互,是有效利用代理工具的关键一步。