一、协议是什么?
从字面意思理解, 协议可以认为是合作的时候产生的一种“约定”, 最常见的比如租房协议, 比如借贷协议等, 最简单的比如甲约乙下午两点在某地碰面。语表达为 :
网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。
我们在做登录功能的时候, 后端返回登录成功, 则前端跳转到登录后的页面, 后端返回登录失败,则前端提升账号或密码错误, 这一行为跟网络协议中使用的思想是一样的。
二、协议解决了哪些问题?
人类社会沟通是合作的基础,合作产生分工,分工越细带来的整体效率就越高。
比如现在a、b、c、d四个人分成两组比赛做衣服和打猎,ab这组每个人只能自己做衣服和打猎,假设每人每个月产生5件衣服和5个猎物。cd组合c专门学习做衣服,d专门学习打猎。 因为c跟ab相比, 可以将学习打猎的时间用来学习做衣服, 所以c做衣服的效率肯定高于ab(算1.2倍),c一个月能做12件衣服。 同样,d一个月能产生12头猎物。
这样算下来, 通过分工合作cd组合明显胜于ab组合。
我们平时接触的电脑也是一样, 一台电脑又多家公司制造不同的部件最终组合到一起, 每家公司只需要关注自己做的东西就行, 提升了整体效率。但是这样的前提是每家公司做出来的东西最终能组合起来,这样就需要又一个协议来作为约束, 我只需要保证我做出来的东西符合这个协议就行了,而使用我的东西的公司也只需要预留这部分功能让别人去做,自己只关注自己需要实现的部分就行。
所以协议解决计算机世界里面的分工问题,为各种设备之间的沟通提供了语言基础。
三、一些好的文章:
我们每天使用互联网,你是否想过,它是如何实现的?
全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?
互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。
因为这些协议实在太复杂、太庞大,我想整理一个简洁的框架,帮助自己从总体上把握它们。为了保证简单易懂,做了大量的简化,有些地方并不全面和精确,但是应该能够说清楚互联网的原理。
另外,如果您很好奇承载这些网络协议的物理设备是怎么工作的,可以先看看《网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门》。
- 《网络编程懒人入门(一):快速理解网络通信协议(上篇)》(本文)
- 《网络编程懒人入门(二):快速理解网络通信协议(下篇)》
- 《网络编程懒人入门(三):快速理解TCP协议一篇就够》
- 《网络编程懒人入门(四):快速理解TCP和UDP的差异》
- 《网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势》
- 《网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门》
- 《网络编程懒人入门(七):深入浅出,全面理解HTTP协议》
- 《网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接》
- 《网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?》
- 《网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议》
- 《网络编程懒人入门(十一):一文读懂什么是IPv6》
- 《网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!》
《脑残式网络编程入门》也适合入门学习,本系列大纲如下:
- 《脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手》
- 《脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?》
- 《脑残式网络编程入门(三):HTTP协议必知必会的一些知识》
- 《脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)》
如果您觉得本系列文章过于基础,您可直接阅读《不为人知的网络编程》系列文章,该系列目录如下:
- 《不为人知的网络编程(一):浅析TCP协议中的疑难杂症(上篇)》
- 《不为人知的网络编程(二):浅析TCP协议中的疑难杂症(下篇)》
- 《不为人知的网络编程(三):关闭TCP连接时为什么会TIME_WAIT、CLOSE_WAIT》
- 《不为人知的网络编程(四):深入研究分析TCP的异常关闭》
- 《不为人知的网络编程(五):UDP的连接性和负载均衡》
- 《不为人知的网络编程(六):深入地理解UDP协议并用好它》
- 《不为人知的网络编程(七):如何让不可靠的UDP变的可靠?》
- 《不为人知的网络编程(八):从数据传输层深度解密HTTP》
- 《不为人知的网络编程(九):理论联系实际,全方位深入理解DNS》
关于移动端网络特性及优化手段的总结性文章请见:
- 《现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障》
- 《移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》
- 《移动端IM开发者必读(二):史上最全移动弱网络优化方法总结》
参考资料
《通俗易懂-深入理解TCP协议(下):RTT、滑动窗口、拥塞处理》
《理论联系实际:Wireshark抓包分析TCP 3次握手、4次挥手过程》
《高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少》
《高性能网络编程(二):上一个10年,著名的C10K并发连接问题》
《高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了》
《高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索》