网络协议是每一个前端工程师都必需要掌握的知识,TCP/IP 中有两个具备表明性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这二者以及它们之间的区别。前端
TCP/IP网络模型缓存
计算机与网络设备要相互通讯,双方就必须基于相同的方法。好比,如何探测到通讯目标、由哪一边先发起通讯、使用哪一种语言进行通讯、怎样结束通讯等规则都须要事先肯定。不一样的硬件、操做系统之间的通讯,全部的这一切都须要一种规则。而咱们就把这种规则称为协议(protocol)。安全
TCP/IP 是互联网相关的各种协议族的总称,好比:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。网络
TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议能够划分为四层,分别为链路层、网络层、传输层和应用层。前端工程师
在网络体系结构中网络通讯的创建必须是在通讯双方的对等层进行,不能交错。 在整个数据传输过程当中,数据在发送端时通过各层时都要附加上相应层的协议头和协议尾(仅数据链路层须要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通讯协议。接下去介绍TCP/IP 中有两个具备表明性的传输层协议——TCP 和 UDP。数据结构
UDP操作系统
UDP协议全称是用户数据报协议,在网络中它与TCP协议同样用于处理数据包,是一种无链接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送以后,是没法得知其是否安全完整到达的。blog
它有如下几个特色:排序
一、面向无链接路由
首先 UDP 是不须要和 TCP同样在发送数据前进行三次握手创建链接的,想发数据就能够开始发送了。而且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操做。
具体来讲就是:
二、有单播,多播,广播的功能
UDP 不止支持一对一的传输方式,一样支持一对多、多对多、多对一的方式,也就是说 UDP 提供了单播、多播、广播的功能。
三、UDP是面向报文的
发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。所以,应用程序必须选择合适大小的报文。
四、不可靠性
首先不可靠性体如今无链接上,通讯都不须要创建链接,想发就发,这样的状况确定不可靠。而且收到什么数据就传递什么数据,而且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。
再者网络环境时好时坏,可是 UDP 由于没有拥塞控制,一直会以恒定的速度发送数据。即便网络条件很差,也不会对发送速率进行调整。这样实现的弊端就是在网络条件很差的状况下可能会致使丢包,可是优势也很明显,在某些实时性要求高的场景(好比电话会议)就须要使用 UDP 而不是 TCP。
从上面的动态图能够得知,UDP只会把想发的数据报文一股脑的丢给对方,并不在乎数据有无安全完整到达。
五、头部开销小,传输数据报文时是很高效的
UDP 头部包含了如下几个数据:
所以 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。
TCP
当一台计算机想要与另外一台计算机通信时,两台计算机之间的通讯须要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,但愿完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,但愿得到的是完整的文件,而不只仅是文件的一部分,由于若是数据丢失或乱序,都不是你但愿获得的结果,因而就用到了TCP。
TCP协议全称是传输控制协议是一种面向链接的、可靠的、基于字节流的传输层通讯协议,由 IETF 的RFC 793定义。TCP 是面向链接的、可靠的流协议。流就是指不间断的数据结构,你能够把它想象成排水管中的水流。
一、TCP链接过程
以下图所示,能够看到创建一个TCP链接的过程为(三次握手的过程):
这里可能你们会有个疑惑:为何 TCP 创建链接须要三次握手,而不是两次?这是由于这是为了防止出现失效的链接请求报文段被服务端接收的状况,从而产生错误。
二、TCP断开连接
TCP 是全双工的,在断开链接时两端都须要发送 FIN 和 ACK。
三、TCP协议的特色
TCP和UDP的比较
一、对比
二、总结