今天我准备要写的是一些关于TCP与UDP的区别,在进行对两者的讨论之前,我们首先要了解TCP和UDP分别是什么?
TCP与UDP是TCP/IP的传输层里面的两种主要协议,他们都基于相同的网络层协议IP。
传输层协议主要有六种作用:
一、提供能面向连接或无连接的服务:因为传输层的功能就是提供端到端的连接,所以传输层协议就定义了两端点之间是否需要去建立一个可靠的连接关系。
二、实现多路复用:一个ip地址只可以标识一个主机,做到一对一的通信关系,但是一个主机却可以用多个程序同时访问网络,所以传输层协议就用到了端口号来对这些应用程序进行了标识。
三、可靠传输数据:传输层协议可以有效的检测并修改,数据在网络传输过程中发生的一系列错误。
四、维护连接状态:如果必须在通信前建立连接关系,传输层协议必须在其数据库中记录这种连接关系,并且通过某种机制维护连接关系,及时发现连接故障等。
五、对应用层数据进行分段和封装:应用层数据往往是大块或持续的数据流,而网络只能发送长度有限的数据包,传输层协议必须在传输应用层数据之前将其划分成适当尺寸的段,再交给ip协议发送。
六、流量控制:当发送方的发送速率超过接收方的接收速率时,或者当资源不足以支持数据的处理时,传输层负责将流量控制在合理的水平;反之,当资源允许时,传输层可以放开流量,使其增加到适当的水平。
TCP协议
1.TCP头格式如上图所示,其协议头最少20个字节:
源端口:16位。
目标端口 :16位。
序列号: 32位。
确认序号:32位。
TCP头长度:4位。
保留:6位。
控制代码:6位,这六个标志从左至右是URG(Urgent Pointer field significant,紧急指针字段标志)、ACK(Acknowledgment field significant,确认字段标志)、PSH(Push Function,推功能)、RST(Reset the connection,重置连接)、SYN(Synchronize sequence numbers,同步序列号)、FIN(No more data from sender,数据传送完毕)。
窗口大小:16位。
偏移量:16位。
校验和:16位。
选项:32位(可选)。
2.TCP的连接建立与拆除
2.1 三次握手
TCP为了确保连接的建立和终止都是可靠的,所以使用三次握手的方式来建立可靠连接,TCP使用报头中的SYN(同步段),来描述三次握手的过程,同时三次握手过程只有在两端都同意的情况下,才会打开一个连接。
TCP三次握手的建立过程(简化版):
HostA:你好我是A,申请连接
HostB:你好A,我是B同意连接
HostA:你好B。
其实三次握手就是一个相互响应的过程,A与B相互响应两者的请求。
2.2 四次挥手
TCP四次挥手(简化版):
HostA:我不想连接了,我们结束吧
HostB:知道了,你不想连接了,等我剩下的搞完就断开连接
HostB:我们断开连接吧,再见
HostA:好的,下次见
这就是一个四次挥手结束的大致过程。
UDP协议
1.UDP报头如上图所示,比TCP报头少了很多东西,基本除了端口号其他啥也不剩了。
2.UDP的特点和应用场景
2.1 UDP并不会建立连接,所以谁都可以传输数据给他,他也可以给任何人传数据,甚至可以同时传给多人数据。
2.2 没有纠正网络错误的功能,会一直发送,就是不管网络丢包还是拥堵,UDP都会一直发送数据
2.3 一般应用在直播的时候
在我们大概了解了TCP和UDP之后,就可以开始讲一下两者的不同了
一、TCP是面向连接的,UDP是无连接的,就是TCP建立连接例如三次握手,UDP并没有
二、TCP会维护端到端的连接状态,而UDP并不会
三、TCP是可靠传输,而UDP可能丢包,不确保可靠传输
四、TCP有流量控制机制,UDP并不会控制流量
标签:协议,UDP,区别,16,TCP,传输层,连接 From: https://www.cnblogs.com/HuangCB/p/16750252.html