TCP与UDP的区别
TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
什么是面向连接,什么是面向无连接。
在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会
UDP的特点
沟通简单,不需要大量的数据结构,处理逻辑和包头字段。
谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。
不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发。
UDP 的主要应用场景
需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候
5、TCP的包头结构:
源端口 16位
目标端口 16位
序列号 32位
回应序号 32位
TCP头长度 4位
reserved 6位
控制代码 6位
窗口大小 16位
偏移量 16位
校验和 16位
选项 32位(可选)
这样我们得出了TCP包头的最小长度,为20字节。
UDP的包头结构:
源端口 16位
目的端口 16位
长度 16位
校验和 16位
TCP三次握手和四次挥手
1、TCP三次握手——建立连接
1)主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
2)主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我。
3)主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了。
这样3次握手就完成了,主机A和主机B 就可以传输数据了。
TCP四次挥手——断开连接
1)当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2) 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
3)由B 端再提出反方向的关闭请求,将FIN置1
4)主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础
标签:UDP,16,主机,区别,TCP,数据,连接 From: https://www.cnblogs.com/zkzk111/p/16769024.html