TCP 协议和 UDP 协议都属于传输层的协议。传输层是网络分层的概念。按照TCP/IP五层模型的协
议,可分为以下 5 层:应用层、传输层、网络层、数据链路层、物理层。从一台主机的应用程序
A 发送数据到另一台的主机上的应用程序 B 需要经历各层协议。每层协议完成不同的功能:
物理层简单的理解是跟物理设备打交道的。它规定了网络连接时所需接插件的规格尺寸、引脚数量
和排列情况;
数据链路层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
网络层的作用是找到目标主机的地址。
传输层的作用是把数据发送到目标主机的目标应用程序。
应用层的作用是为操作系统或网络应用程序提供访问网络服务的接口。
UDP 和 TCP 区别:
- TCP协议可靠;UDP协议不可靠
- TCP协议是面向连接;UDP协议采用无连接
- TCP协议负载较高,采用虚电路;UDP采用无连接
- TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
TCP协议采用窗口技术和流控制
UDP 和 TCP 需要根据实际需要来判断需要哪种协议,并不一定 TCP 就是好的。UDP协议的优点是比较简单,缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。一旦数据包发出,无法知道对方是否收到,对于音频、在线游戏、视频 ,UDP是最好的选择。TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。TCP 建立连接需要三次握手(每次握手实际是发送报文):
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
但是为什么一定要进行三次握手呢,一次不行么?两次不行么?知乎上有人通俗地解释了:
三次握手:“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,今天balabala……”
两次握手:“喂,你听得到吗?”
“我听得到呀”
“喂喂,你听得到吗?”
“草,我听得到呀!!!!”
“你TM能不能听到我讲话啊!!喂!”
“……”
四次握手:
“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,你能听到我吗?”
“……不想跟傻逼说话”
以上部分内容参考网络并结合我本人的理解。如有错误,欢迎指正,谢谢