一、协议
首先我们来明确何为协议,电脑里的协议就像我们身份证一样
比如一串身份证号码18位数字,我们一看就可以知道这串数字为身份证号码并且知道里面的规则,所以协议就是大家都认可并使用的规则,两台电脑要建立联系沟通就必须有一个事先约定好的协议,再比如一个中国人和一个美国人进行对话,他们首先要有相同的语言和相同的语法规则;再回到网络协议上来,在网络通信中有:TCP/IP协议、UDP协议通信协议、蓝牙协议、WIFI协议等。
- 在明确TCP/IP之前,我们先来了解一下OSI(Open System Interconnection)开放式系统互联,OSI模型分为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。而TCP/IP协议简化为四层,这四层大致参考OSI模型的七层,分别为应用层、传输层、Internet层、网络访问层,更侧重于互连设备间数据的传输,而不是严格的功能层次划分。
二、TCP
- 现在着重来介绍TCP/IP中最重要的TCP协议(Transmission Control Protrcol)传输控制协议, TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据连接,保证可靠性。在TCP连接中必须要明确客户端与服务器端,由客户端向服务器端发出连接请求TCP的连接分为:建立联系(三次握手)、数据传输、关闭连接(四次挥手)。
建立联系:三次握手-
- 第一次握手:客户端发送SYN包至服务器,并进入SYN-SENY状态,等待服务器确认
第二次握手:服务器收到客户端的SYN包,发送一个ACK,同时发送自己的SYN,此时服务器进入SYN-SENY状态;
第三次握手:客户端接收到服务器发送的SYN+ACK后,进入ESTABLISHED状态,并发送服务器SYN包的确认ACK,服务器接收到客户端的ACK后,进入ESTABLISHED状态
此时客户段和服务端都进入ESTABLISHED状态之后,两者就可以开始进行双向传递数据了。
—比如我现在要给好朋友狗子打电话,第一步:给对方拨号(有可能连接成功,有可能拨通失败,这一步通过TCP报文来判断结果) ;第二步:对方接通号码说:“喂,你好,请问你是谁”;第三步:我回话:你好,我是强子。这三步完成之后然后就开始进行嘘寒问暖
TCP是一种点对点的通信方式,任何一方都可以开始或终止通信。任何机器上的TCP都能被动地等待握手或者主动地发起握手,一旦建立起连接,数据可以对等地双向流动
关闭连接:四次挥手
- 第一次挥手:当主机A的应用程序通知TCP数据已经发生完毕时,TCP像主机B发送一个带有FIN附加标记的报文段(其中FIN理解为finish)
第二次挥手:主机B收到这个FIN报文段后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送FIN报文段,防止对方重复发送FIN)
第三次挥手:接主机B 的应用程序告诉TCP:我要彻底的关闭连接。TCP向主机A发送第二个FIN报文段;
第四次挥手:主机A收到第二个FIN报文段后,向主机B发送一个ACK表示连接彻底关闭。
TCP的连接分为:建立联系(三次握手)、数据传输、关闭连接(四次挥手)。在这过程中有“七次交锋握手挥手”,在这过程中就要交换不少数据,如果中间的“数据传输”只传输几个字节的信息的话,这种开销就显得十分昂贵。例如在进行DNS域名查询时,中间只需传输几个字节的信息。此时这种传输数据很少的轻权通信,催生了UDP协议,轻权通信一般由UDP来完成。
三、UDP
- UDP(User Diagram Protocol)用户数据报协议,是一种面向无连接的协议,在通信时客户端和服务端不需要建立连接,不需要像TCP那样你在这头挥手我在这头挥手。当一台计算机向另一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。比如像浪漫的写信一样,我不管也不知道你是否会收到,我想发出就发出,你收到了也无需向我说明,(这是不是有点绝情的样子…)你收到了就说明我俩有缘分…
由于UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输。例如视频会议都使用UDP协议,因为这种情况下,即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传输数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。且UDP协议传输的数据大小不能超过64KB,否则文件无法传输,因此UDP特点为:可靠性差、性能好
四、TCP和UDP的区别
综上,明确了何为TCP和UDP,我们可以知道两者有何区别,归纳总结如下
连接方面
1、TCP面向连接,如打电话要先拨号建立连接
2、UDP是无连接的,即发送数据之前不需要建立连接安全方面
1、TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复、且按序到达
2、UDP尽最大努力交付,即不保证可靠交付传输效率方面
1、TCP连接只能是点到点、一对一的
2、UDP支持一对一、一对多、多对一、多对多的交互通信资源要求方面
1、TCP对系统资源要求较多
2、UDP对系统资源要求较少