摘要:
有DNS的地方,就有缓存。 浏览器、操作系统、Local DNS、根域名服务器,它们都会对DNS结果做一定程度的缓存。本文总结一些常见的浏览器和操作系统的DNS缓存时间。 Table of Contents 1 操作系统的DNS缓存 1.1 windows 1.2 macOS 2 浏览器的DNS缓存 阅读全文
随笔档案-2016年01月
C正则库做DNS域名验证时的性能对比
2016-01-31 00:45 by Loull, 465 阅读, 收藏, 编辑
摘要:
C正则库做DNS域名验证时的性能对比 本文对C的正则库regex和pcre在做域名验证的场景下做评测。 验证DNS域名的正则表达式为: "^[0-9a-zA-Z_-]+(\\.[0-9a-zA-Z_-]+)*(\\.[a-zA-Z]{2,}\\.)$" 对于正常DNS请求日志中的6177578条日志 阅读全文
DNS压力测试工具dnsperf简介
2016-01-31 00:44 by Loull, 1578 阅读, 收藏, 编辑
摘要:
dnsperf是我最近写的一个开源的DNS压力测试工具,用户可以用它来对DNS服务器或者Local DNS做压力测试。dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件。 dnsperf的地址:https://github.com/cobblau/dnsperf 参数详解 Dn 阅读全文
DNS 中的协议字段详细定义
2016-01-31 00:42 by Loull, 11726 阅读, 收藏, 编辑
摘要:
DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资源记录 7 EDNS Version 8 DNS EDNS0 Option Codes (OPT) 阅读全文
DNS CNAME的一些细节
2016-01-31 00:40 by Loull, 3515 阅读, 收藏, 编辑
摘要:
cname的解析过程:是local dns server把cname直接解析成ip。而不是 dns resolver先请求cname拿到被指向的域名,再做一次dns请求解析到ip。对于nslookup、dig工具,会解析成cname所指向的域名,而不是直接到ip。 1, 概述 DNS中的CNAME可 阅读全文
DNS分别在什么情况下使用UDP和TCP
2016-01-31 00:32 by Loull, 28261 阅读, 收藏, 编辑
摘要:
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。 如果用wireshark、sniffer或古老些的tcpdump抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况 阅读全文
DNS协议
2016-01-30 23:56 by Loull, 682 阅读, 收藏, 编辑
摘要:
DNS Message: Header 消息头部 Question DNS请求 Answer 回答请求的资源记录(Resource Record(s)) Authority 指向域的资源记录 Additional 其他资源记录 ------------------------------------ 阅读全文
DNS消息格式
2016-01-30 23:51 by Loull, 692 阅读, 收藏, 编辑
摘要:
一,简介 空谈误国,要让一大堆抽象的DNS概念落地,还是需要了解DNS消息格式的,本文会尽量详细地介绍DNS消息格式的每一个字段。 也可以移步rfc1035了解。 二,概览 DNS消息主要由五部分组成,如下图所示: Header 消息头部 Question DNS请求 Answer 回答请求的资源记 阅读全文
Netty之Java堆外内存扫盲贴
2016-01-29 17:46 by Loull, 3395 阅读, 收藏, 编辑
摘要:
Java的堆外内存本来是高贵而神秘的东西,只在一些缓存方案的收费企业版里出现。但自从用了Netty,就变成了天天打交道的事情,毕竟堆外内存能减少IO时的内存复制,不需要堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中;而且也没了烦人的GC。 好在,Netty所用的堆外内存只是Java 阅读全文
Netty writeAndFlush() 流程与异步
2016-01-29 15:10 by Loull, 2138 阅读, 收藏, 编辑
摘要:
Netty writeAndFlush()方法分为两步, 先 write 再 flush @Override public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) { DefaultChannelHandlerC 阅读全文
Netty之有效规避内存泄漏
2016-01-29 11:31 by Loull, 15188 阅读, 收藏, 编辑
摘要:
有过痛苦的经历,特别能写出深刻的文章 —— 凯尔文. 肖 直接内存是IO框架的绝配,但直接内存的分配销毁不易,所以使用内存池能大幅提高性能,也告别了频繁的GC。但,要重新培养被Java的自动垃圾回收惯坏了的惰性。 Netty有一篇必读的文档 官方文档翻译:引用计数对象 ,在此基础上补充一些自己的理解 阅读全文
TCP状态变迁图
2016-01-04 20:01 by Loull, 675 阅读, 收藏, 编辑
摘要:
服务端,端口的状态变化 先在本机(IP地址为:192.168.1.10)配置FTP服务,然后在其它计算机(IP地址为:192.168.1.1)访问FTP服务,从TCPView看看端口的状态变化。 下面黑体字显示的是从TCPView中截取的部分。 1、LISTENING状态 FTP服务启动后首... 阅读全文
TCP/IP详解--发送ACK和RST的场景
2016-01-04 19:57 by Loull, 10388 阅读, 收藏, 编辑
摘要:
在有以下几种情景,TCP会把ack包发出去:1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送。这叫做“延迟发送”;2.收到1个包,启动200ms定时器,200ms定时器还没到,第二个数据包又来了(两个数据包一个ack);3.收到1个包... 阅读全文
TCP/IP详解--连接状态变迁图CLOSE_WAIT
2016-01-04 19:55 by Loull, 1203 阅读, 收藏, 编辑
摘要:
终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FI... 阅读全文
linux网络命令
2016-01-04 17:20 by Loull, 311 阅读, 收藏, 编辑
摘要:
每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linux命令(57):ss命令 每天一个linux命令(56):netstat命令 每天一个linux命令 阅读全文
Guava学习笔记目录
2016-01-04 14:34 by Loull, 236 阅读, 收藏, 编辑
摘要:
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 阅读全文