TCP和UDP网络通信协议
传输层协议中有两个非常重要的协议
- 传输控制协议TCP(Transmission Control Protocol)
- 用户数据包协议UDP(User Datagram Protocol)
TCP/IP协议簇 — > 以其中两个主要协议命名
- 以其中两个主要的协议: 传输控制协议(TCP)和网络互连协议(IP)而得名
- TCP/IP协议实际上是一组协议,不止有TCP和IP,TCP/IP协议簇中包括了多个具有不同功能且互为关联的协议
IP(Internet Protocol)协议是网络层中的主要协议,支持网间互联的数据通信
TCP/IP参考协议模型(TCP/IP参考模型)从更实用的角度出发,形成了高效的四层体系结构, 即: 物理 + 数据链路层,IP层(网络层), 传输层 , 应用层
TCP协议:(传输数据是可靠的)
使用TCP协议前,须先建立TCP连接,形成数据传输通道
传输前采用"三次握手"的方式,点对点通信,是可靠的
三次握手的实现:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lYXzvZ74-1641574046933)(E:\非凡英才\java笔记\图解\三次握手.png)]
TCP协议进行通信的两个应用进程(客户端和服务端)
在连接中可进行大量数据的传输
传输完毕,须释放已建立的连接,效率低 – 这里的效率低是相对于UDP协议来讲效率低
我们之前就讲过,IO流传输过程中的连接,和Socket连接,数据库连接等等物理连接JVM是不会进行垃圾回收的,像这些物理连接我们就要去手动的去关闭
这里释放已建立的连接的时候要通过TCP协议的四次挥手:
关于四次挥手的实现:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wwbYkGy9-1641574046934)(E:\非凡英才\java笔记\图解\TCP的四次挥手.png)]
为什么要是三次握手?
因为三次握手是一种相对最有方案,当为一次或者两次握手时,传输的安全系数太低,当为四次握手或者更多次的握手时比三次握手的安全系数高不了多少,并且还会浪费一定的时间,降低了效率,综合下来之后最优的就是三次握手
我们一般申请连接和申请断开连接的都是客户端,客户端就是用户,用户想用就用,想断就断,而服务端则需要一直开着,要负责满足客户端的一些需求
- 但是客户端和服务端都是可以主动发起挥手动作的(也就是客户端和服务端都可以率先发起断开连接的请求),但是一般都是客户端主动发起断开连接
UDP协议:(传输数据是不可靠的)
- 将数据 , 数据源 , 目的地封装成数据报,不需要建立连接
- 每个数据报的大小限制在64k之内
- 发送数据时不管对方是否准备好,接收方也不需要确认,所以使用UDP协议传输数据是不可靠的
- 可以广播发送
- 发送数据结束时无需释放资源,开销小,速度快
TCP协议和UDP协议的生活案例
TCP协议: 打电话
- 会先进行确认,如果对方不存在,这个时候就不会传输数据
UDP协议 : 发送短信,发送电报
- 不会进行确认,即使对方不存在,这个时候也会把数据传过去,不管数据是否传输的到或者传输不到
版权声明:本文为m0_57001006原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。