随笔分类 -  网络编程

HTTP的长连接和短连接——Node上的测试
摘要:本文主要从实践角度介绍长、短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP、Ajax做客户端请求测试,最后简单涉及WebSocket。 关键字:长连接、短连接、Node.JS、WebSocket. 一两年前,在理论上对长短连接做了学习,那时的技能以客户端为主,所以也止步于 阅读全文
posted @ 2016-01-05 22:10 烛秋 阅读(19367) 评论(0) 推荐(3) 编辑
HTTP状态码302、303和307的故事
摘要:今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。 《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有... 阅读全文
posted @ 2014-07-27 21:35 烛秋 阅读(268824) 评论(13) 推荐(16) 编辑
如果重新设计网络,有没有可能合并IP地址跟MAC地址?
摘要:前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一?现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一跳的mac地址”做对照,确定了要往哪边扔;网卡在接收数据的时候,也会看看这个数据包中记录的目标MAC地址是... 阅读全文
posted @ 2014-06-29 23:12 烛秋 阅读(1140) 评论(0) 推荐(0) 编辑
HTTP的长连接和短连接
摘要:本文总结&分享网络编程中涉及的长连接、短连接概念。 关键字:Keep-Alive,并发连接数限制,TCP,HTTP一、什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST... 阅读全文
posted @ 2014-04-09 00:02 烛秋 阅读(331712) 评论(5) 推荐(33) 编辑
HTTP的RST包与WinHttp延迟关闭TCP连接
摘要:一、RST包也常见于断开TCP连接 几个月前用wireshark抓HTTP包发现有的网络通信在结束的时候没有使用四次握手,而是直接使用RST包。如: 在TCP协议中RST表示复位,用来异常的关闭连接。在发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。“异常的关闭连接”是很常见的事情,特别是在使用WinHttp时。 关闭TCP连接除了常见的四次握手之外,还有发送RST包的方式。下边是使用libcurl做的post测试,post成功时正常关闭,否则异常关闭。结束TCP:四次握手图结束TCP:发RST包图二、... 阅读全文
posted @ 2014-01-12 18:15 烛秋 阅读(8507) 评论(0) 推荐(1) 编辑
抓包工具tshark使用备忘
摘要:抓包命令行工具tshark可以用于自定制,相比GUI工具可以实现一些自动化,譬如把某些关注的数据抓起下来存放到文本中,然后再分析输出。 demo:std::string decodeHex(const std::string& strHex){ int nLen = strHex.length() / 2; std::string strRet(nLen, 0); for (int i = 0; i != nLen; ++i) { strRet[i] = ((strHex[2*i]>='a') ? (strHex[2*i]-'a'+10) : (s 阅读全文
posted @ 2013-07-16 20:19 烛秋 阅读(4834) 评论(0) 推荐(1) 编辑
通过HTTP协议上传文件
摘要:HTTP是很常见的协议,虽然用得很多,但对细节的了解却是很浅,这回通过向服务端上传文件信息来理解细节。网络库的选择:1、WinHTTP是windows下常用的库;2、CURL是广受喜爱的开源库。对于我来说,libcurl最大的优点是使用方便,可以把注意力更多的集中到业务层上,提高工作效率,避免重... 阅读全文
posted @ 2013-07-11 22:43 烛秋 阅读(108676) 评论(2) 推荐(0) 编辑
获取IE代理服务器信息
摘要:“局域网设置”里有自动配置、代理服务器的设置项目,在进行网络通讯相关的开发时,需要使用到它们,下边介绍如何将这些设置信息读取出来。 当“使用自动配置脚本”不使用时,使用WinHttpGetIEProxyConfigForCurrentUser函数来获取用户的代理配置。如果发现用户使用了自动配... 阅读全文
posted @ 2013-07-01 01:22 烛秋 阅读(7155) 评论(4) 推荐(0) 编辑