转自: http://www.52im.net/thread-1095-1-1.html
仅记录到参考文章 ,具体可以点击链接查看
1、写在前面
论坛和群里常会有技术同行打算自已开发IM或者消息推送系统,很多时候连基本的网络编程理论(如网络协议等)都不了解,就贸然定方案、写代码,显得非常盲目且充满技术风险。
即时通讯网论坛里精心整理了《[通俗易懂]深入理解TCP协议》、《不为人知的网络编程》、《P2P技术详解》、《高性能网络编程》这几个网络编程的系列文章,甚至还有图文并貌+实战代码的《NIO框架入门》等等。资料虽好,无奈很多同行或许是时间紧迫,也或许是心态浮躁,反正就是没办法静下心来仔细研读,导致错过了很多必须掌握的网络编程知识基础(如果您正打算从零开发移动端IM,则建议您从此文开始《新手入门一篇就够:从零开发移动端IM》)。
本次《网络编程懒人入门》系列文章(共3篇),将为大家(尤其是上面说的浮躁的开发者同行)提供懒人快速入门,希望在你没办法耐心读完上面的几个系列文章(但还是强烈建议优先去读一读)的情况还能对基本的网络编程知识有所了解和掌握,从而对您的IM系统或消息推系统的技术选型、方案制定、代码编写起到理论支撑作用。
本文将从网络通信协议讲起,懒人们,动起来^_^ !
2、正文引言
我们每天使用互联网,你是否想过,它是如何实现的?
全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?
互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
下面就是我的学习笔记。因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,我做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚互联网的原理。
另外,如果您很好奇承载这些网络协议的物理设备是怎么工作的,可以先看看《网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门》。
3、系列文章
本文是系列文章中的第1篇,本系列文章的大纲如下:
- 《网络编程懒人入门(一):快速理解网络通信协议(上篇)》(本文)
- 《网络编程懒人入门(二):快速理解网络通信协议(下篇)》
- 《网络编程懒人入门(三):快速理解TCP协议一篇就够》
- 《网络编程懒人入门(四):快速理解TCP和UDP的差异》
- 《网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势》
- 《网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门》
- 《网络编程懒人入门(七):深入浅出,全面理解HTTP协议》
- 《网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接》
- 《网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?》
本站的《脑残式网络编程入门》也适合入门学习,本系列大纲如下:
- 《脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手》
- 《脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?》
- 《脑残式网络编程入门(三):HTTP协议必知必会的一些知识》
- 《脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)》
如果您觉得本系列文章过于基础,您可直接阅读《不为人知的网络编程》系列文章,该系列目录如下:
- 《不为人知的网络编程(一):浅析TCP协议中的疑难杂症(上篇)》
- 《不为人知的网络编程(二):浅析TCP协议中的疑难杂症(下篇)》
- 《不为人知的网络编程(三):关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT》
- 《不为人知的网络编程(四):深入研究分析TCP的异常关闭》
- 《不为人知的网络编程(五):UDP的连接性和负载均衡》
- 《不为人知的网络编程(六):深入地理解UDP协议并用好它》
关于移动端网络特性及优化手段的总结性文章请见:
- 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》
- 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》
- 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》
4、参考资料
《TCP/IP详解 - 第11章·UDP:用户数据报协议》
《TCP/IP详解 - 第17章·TCP:传输控制协议》
《TCP/IP详解 - 第18章·TCP连接的建立与终止》
《TCP/IP详解 - 第21章·TCP的超时与重传》
《通俗易懂-深入理解TCP协议(上):理论基础》
《通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞处理》
《理论经典:TCP协议的3次握手与4次挥手过程详解》
《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》
《计算机网络通讯协议关系图(中文珍藏版)》
《高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少》
《高性能网络编程(二):上一个10年,著名的C10K并发连接问题》
《高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了》
《高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索》
《简述传输层协议TCP和UDP的区别》
《为什么QQ用的是UDP协议而不是TCP协议?》
《移动端即时通讯协议选择:UDP还是TCP?》