在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。
一.UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议,UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达.
具有以下特点:
1. 面向无连接, UDP是不需要发送数据前进行三次握手建立连接的,想发数据就可以开始发送了,
2. 有单播,多播,广播的功能,UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能,
3. UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文,
4. 不可靠性,体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠,
二.TCP协议全称是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。
第一次握手,客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
第二次握手,服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
第三次握手,当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。
TCP三次握手的原因: 是因为为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
TCP的断开连接:
三.TCP与UDP的对比: