网络编程懒人入门(四):快速理解TCP和UDP的差异
前言对于即时通讯开者新手来说,在开始着手编写IM或消息推送系统的代码前,最头疼的问题莫过于到底该选TCP还是UDP作为传输层协议。本文延续《网络编程懒人入门》系列文章的风格,通过快速对比分析 TCP 和 UDP 的区别,来帮助即时通讯初学者快速了解这些基础的知识点,从而在IM、消息推送等网络通信应用场景中能准确地选择合适的传输层协议。 即时通讯网的另一篇文章《简述传输层协议TCP和UDP的区别》也阐述了类似的内容,希望能为您提供更多的参考。 建立连接方式的差异TCP说到 TCP 建立连接,相信大多数人脑海里肯定可以浮现出一个词,没错就是–“三次握手”。TCP 通过“三次握手”来建立连接,再通过“四次挥手”断开一个连接。在每次挥手中 TCP 做了哪些操作呢? 流程如下图所示(TCP的三次握手和四次挥手): 上图就从客户端和服务端的角度,清楚的展示了 TCP 的三次握手和四次挥手。可以看到,当 TCP 试图建立连接时,三次握手指的是客户端主动触发了两次,服务端触发了一次。 我们可以先明确一下 TCP...
网络编程懒人入门(三):快速理解TCP协议一篇就够
前言本系列文章的前两篇《网络编程懒人入门(一):快速理解网络通信协议(上篇)》、《网络编程懒人入门(二):快速理解网络通信协议(下篇)》快速介绍了网络基本通信协议及理论基础,建议开始阅读本文前先读完此2篇文章。 TCP 是互联网的核心协议之一,鉴于它的重要性,本文将单独介绍它的基础知识,希望能加深您对TCP协议的理解。 老规矩,为了让文字尽量通俗易懂、不浪费你的脑细胞,本文尽量点到为止,不对理论进行深入挖掘,如需深入理论细节,请参见下方参考资料中有关TCP协议的详细介绍和学习文章。 群神镇楼: TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。 ▲ TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议 最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。 ▲ 以太网协议解决了局域网的点对点通信 但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。 ▲ IP 协议可以连接多个局域网 IP 协议定义了一套自己的地址规则,称为 IP...
网络编程懒人入门(二):快速理解网络通信协议(下篇)
前言本文上篇《网络编程懒人入门(一):快速理解网络通信协议(上篇)》分析了互联网的总体构思,从下至上,每一层协议的设计思想。基于知识连贯性的考虑,建议您先看完上篇后再来阅读本文。 本文从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。 一个小结先对前面的内容,做一个小结(详见本文上篇《网络编程懒人入门(一):快速理解网络通信协议(上篇)》)。 我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。 数据包的结构,基本上是下面这样: 发送这个包,需要知道两个地址: * 对方的MAC地址; *...
网络编程懒人入门(一):快速理解网络通信协议(上篇)
正文引言【特别声明】:转自即使通讯网 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol...