TCP和UDP的区别

tcp(传输控制协议):

1.特性比较:

1.有链接
通过三次握手,四次挥手建立断开连接

2.可靠传输:
1.通过连接管理建立连接
2.通过序列号和确认序列号实现对包序进行管理
3.通过确认应答实现,确定对方收到数据
4.通过超时重传确保丢失的数据能够传达
5.通过校验和确保数据的正确性
3.面向字节流:
特性:确保数据能够安全传输–保证数据的安全传输,传输灵活、传输速率低、容易发生粘包问题
粘包问题的解决:数据定长,特殊字符,还有tlv数据格式

使用场景: 对数据安全性的要求高用tcp -->点型场景:文件传输
因为tcp实现可靠传输,所以性能下降,他通过下这些机制实现性能的提升:

1.滑动窗口
(停止等待协议一应一答,回退n步协议,选择重传)
2.快速重传
3.延时应答(对处理速度比较自信等待一定时间,等窗口稍微大的时候同一进行回复)
4.拥塞窗口(探测网络状况,防止一开始丢包)
5…流量控制(通过查看缓冲区的剩余大小每次设定窗口大小,控制发送数据的快慢,防止缓冲区满了大量丢包)
6.捎带应答 (网络带宽是固定的,特定的去回复收到数据,会影响传输速率,当回复的数据包的时候,将数据包的tcp头ack标志位置为1来回复上一条数据)

udp(用户数据报协议):

1.无连接:
知道对端的ip和端口就直接进行传输,不需要建立连接
2.不可靠:
没有确认机制,没有重传机制,如果因为网络故障数据段无法发送到对方,udp协议层也不会给应用层发送任何错误信息

3.面向数据报:
不能够灵活的控制读写数据的次数和数量

特性:无法保证数据的安全传输,传输不太灵活,传输速度快,无粘包问题

使用场景:对数据的实时性要求高的程序用udp-典型场景:传视频

2.协议头部比较:

UDP:头中有16位源端口,16位目的端口,16位的数据长度(64k),16位的校验和,因为有这个长度,所以需要在应用层对包进行分割,因为udp是不可靠的所以需要进行包序管理

tcp:头中有16位源端口,16为目的端口,32为序列号,32位确认序列
号,4为首部长度,6位保留,6位标志位(urg,ack,fin,psh,syn),16位的紧急指针,16位窗口大小,16位校验和,16位的紧急指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值