前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抓包分析UDP,TCP和UDP的区别说不上五条就进来看看吧

抓包分析UDP,TCP和UDP的区别说不上五条就进来看看吧

作者头像
阿甘的码路
发布2020-08-17 17:33:58
2.7K0
发布2020-08-17 17:33:58
举报
文章被收录于专栏:阿甘的码路2阿甘的码路2

目录

  • 抓包过程
  • UDP 特点
    • UDP 抓包看首部
    • UDP主要特点
  • UDP 应用代表
  • `TCP` vs `UDP`
    • 从头部分析 TCP 与 UDP 的区别:
    • TCP 解决了五个问题

抓包过程

使用了 Wireshark 进行抓包,用两个最常用的 curl 和 ping 命令来演示抓包情况,开启抓包。

代码语言:javascript
复制
## 先访问我自己的网站首页
 curl https://zengzhiqin.kuaizhan.com 
## 再查看我自己网站的地址
 ping https://zengzhiqin.kuaizhan.com

Wireshark根据 ping 命令得到的地址进行条件过滤,得到上面两个命令所得到的包,主要有 TCP(https基于tcp协议)协议和 ICMP(ping命令是基于 ICMP 协议)协议的包,如下图所示:

抓包分析

UDP 特点

UDP 抓包看首部

UPD 首部

正在我想着要不抓一个 ARP(广播包,使用 UDP) 包的时候,我先直接在wireshark里面过滤了一下 UDP 类型的包,还真的有,然后我谷歌了下这包是用来干嘛,如下:

UDP协议抓包分析

此包作用

顺便吐槽一下百度翻译,反正这个翻译我是看不懂。

UDP主要特点

  • UDP 是无连接的,即发送数据之前不需要建立连接
  • UDP 尽最大努力交付,不保证可靠交付,不支持拥塞控制
  • UDP 面向报文,没有拥塞控制,很适合多媒体通信的要求(例如老师电脑广播学生电脑讲课)
  • UDP 支持一对一,一对多,多对一和多对多的交互通信
  • UDP 首部开销小,只有8个字节

UDP 应用代表

  1. 网页或者手机APP的访问

对于目前主流的移动互联网来说,TCP 建立比较耗时,还会有连接断了的问题,QUIC(Qucik UDP Internet Connections, 快速UDP互联网连接)是Google提出的基于 UDP 改进的通信协议,在应用层上,会自己实现快速连接建立,减少重传延时,自适应拥塞控制,很牛皮。

  1. 流媒体协议

话说大幂幂今天做客李佳琦直播间了,她太美了!

直播协议很多使用 RTMP,是基于TCP的。但是对于直播来说,视频播放有的包能丢有的不能,因为视频的连续帧里面有的重要有的不重要,格几个帧丢一个观众不会感知,但是连续丢就会卡顿了,因此在网络不好的时候应用希望选择性的丢帧。

TCP对直播有个致命的缺点就是网络不好的时候,TCP协议探测到了会主动降低发送速度,原本就卡那就更要命了,应用层应该是马上重传而不是主动让步。因此,很多直播应用都基于 UDP 实现了自己的视频传输协议。

  1. 实时游戏

游戏实时性要求高,拿王者荣耀来说,遇到了猴子慢一秒都是回泉水的问题,因此实时游戏中客户端和服务端要建立长连接来保证实时传输,可是玩家那么多都建立长连接腾讯哪怕自家有腾讯云也扛不住啊,TCP 长连接是需要再内核维护数据结构的,一台机器能支撑的 TCP 连接数目有限,UDP 是没有连接的,在异步IO机制引入之前常常是应对海量客户端连接的有效策略。

还有个原因,是 TCP 保证强顺序,一个保丢失了要等重发,客户端等不了,而且客户端并不关心过期数据。

  1. LOT 物联网
  2. 移动通信领域

最后两个领域我也讲不来,是 UDP ,然后实时性要求高,哈哈哈破功了。

TCP vs UDP

TCP头部

UDP头部

TCP 总是秉着严谨可靠的做学问的态度,UDP 总是一副尽最大努力交付的商人心态。UDP 工作时,发送方的 UDP 对应用程序交下来的报文,既不合并,也不拆分,而是设立了一个报文长度字段用来保留这些报文的边界,在添加首部后就直接向下交付网络层,看上面的 UDP 头部信息也能感受到他有多么的粗糙和敷衍了。

从头部分析 TCP 与 UDP 的区别:

  1. 跟TCP头部比起来,UDP头部简单的有点过分,即UDP结构更加简单
  2. TCP具有序列号和确认号和紧急指针,TCP 保证数据顺序和可靠传输,UDP 不保证,对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
  3. TCP 设立了SYN,ACK,FIN 等标志来握手建立连接,即TCP 面向连接,UDP 不面向连接,是无状态的,这点是主要区别,有连接能沟通上其他的事情就好办了,喝酒还是喝茶都好说话,毕竟有连接了其他的“可靠传输”“流量控制”"拥塞控制"等事情都是基于连接来锦上添花的事情`
  4. TCP 具有窗口,即 TCP 可以进行流量控制和拥塞控制,具体控制方法往下看,UDP 就不行,他就是把应用层给的报文加个头往网络层一丢完事,生死有命富贵在天。
  5. TCP 是面向字节流传输的,UDP 是基于数据报传输的。这点其实不难理解,一个个报文独立地传输只适合 UDP 这种全然不顾后果的鲁莽传输,TCP 还要进行流量控制拥塞控制啥的,肯定不能传报文,太大了,而是要可控传输,字节流发多少都好控制。
  6. UDP 传输速度快,TCP 传输速度慢,人家TCP要干那么多事情,握手交流窗口啥的,肯定更加耗时了。

如果要硬记这些特点,还是很难的,又不是黄蓉可以过目不忘,脑子里只需要绘制这两个的头部内容就好了,区别可以自己推导出来,前提是知道那些是干啥的。

TCP 解决了五个问题

  • 顺序问题
  • 丢包问题
  • 连接维护
  • 流量控制
  • 拥塞控制

顺序问题和连接维护可以看我的另外一篇抓包分析TCP三次握手四次挥手全过程,教你观看“多包运动”的正确姿势,下篇我们来看看 TCP 丢包问题,以及怎么通过滑动窗口来进行流量控制和拥塞控制吧。

有收获的老铁点个在看鼓励一下吧,感谢观看~

下期预告:TCP 流量控制和拥塞控制的实现(这期插了个小队讲UDP)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿甘的码路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抓包过程
  • UDP 特点
    • UDP 抓包看首部
      • UDP主要特点
      • UDP 应用代表
      • TCP vs UDP
        • 从头部分析 TCP 与 UDP 的区别:
          • TCP 解决了五个问题
          相关产品与服务
          云直播
          云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档