TCP和UDP协议原理及理解1——UDP

一、什么是TCP/UDP协议

1、回顾一下IP和端口号:
  • IP:标识网络上的唯一主机
  • port端口号:标识主机上的唯一进程
  • IP+port端口号:标识网络上的唯一主机上的唯一进程
  • 端(IP+port)对端(IP+port):四个信息标识唯一的一个端对端通信------->四元组
  • 四元组+协议(TCP/UDP协议)=五元组:在TCP/IP协议栈内部用来标识传输层上的唯一一个端对端通信
2、TCP/UDP协议是什么?

TCP和UDP协议是TCP/IP协议的核心。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。

  1. TCP协议: TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
  2. UDP协议:UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

接下来将对两大协议进行详细讲解。

二、UDP协议

1、UDP协议的特点

  • 无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接;只是发送数据,具体发送到了没有或者时服务器是否有响应,一概不管。
  • 不可靠: 没有确认机制,没有重传机制:如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息;
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量。

针对无连接和不可靠的特点,我们主要对比TCP来理解。

2、UDP协议段格式

在这里插入图片描述
由上图可以看出,UDP数据由header(UDP首部)和UDP数据部分组成;Header部分为8字节,也就是64比特位。

3、UDP数据的封装:

在这里插入图片描述
由上图可以看出:UDP数据的封装就是应用层的数据+UDP的首部,就包装成了UDP数据。
Header中的数据主要作用是:1>解包; 2>分用; 3>内部使用

4、UDP数据的分用

在这里插入图片描述
当对UDP数据进行分用的时候,应该从什么地方进行切割呢?切割多大长度呢?
我们知道,UDP数据的Header部分是将应用层数据封装成UDP数据的,所以在解包的时候应该将Header和应用层数据之间切割。所以应该切割8字节(Header部分)。

在分用的时候,是谁对数据进行分用呢?
在UDP数据Header中,有四元组信息,其中的目的端口已经唯一确定了某一进程,所以目的端口对应的进程来分用数据。

5、UDP数据的校验和机制(Checksum)

校验和机制: 利用Hash做数据正确性验证,也叫数据签名。
在这里插入图片描述
校验和不对的情况下,就直接丢包。在我们用户的角度就可能是平时见到的卡(应用层)或者是没有接收到消息。

6、UDP数据的缓冲区

UDP没有发送缓冲区,但有接收缓冲区。

我们以发送包裹为例,阐述一下缓冲区问题,见下图。
在这里插入图片描述
UDP使用注意事项:
我们注意到, UDP协议首部中有一个16位的最大长度. 也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部).
然而64K在当今的互联网环境下, 是一个非常小的数字。如果我们需要传输的数据超64K, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装;

应用层分包:
比如:如果一个聊天应用使用的是UDP协议,UDP一个数据报文最多发送50个字,但是我却要发送180个字,这个时候应用层就需要把这180个字分四次发送。

三、TCP

有关TCP的介绍请看下一篇博客,文章链接: TCP.

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/UDP测试工具是一种运行在Windows操作系统上的网络协议和数据包测试和调试工具。它支持TCPUDP协议的数据发送和接收,可以通过16进制切换发送和接收数据,支持自动应答和自定义数据设置。该工具可以用于测试TCPUDP通信连接,以及测试数据的接收和发送情况。它具有多连接支持、UDP广播支持、发送汉字、十六进制发送和接收方式、自动间隔时间发送、调试方案保存等特点。通过直观友好的界面,可以实时展示发送和接收的数据。 如果要导入数据,数据需要是.xml格式,并且支持多个数据格式,例如: <Root> <Type>Ascii</Type> <Datas> <Data> <Name>未命名信息1</Name> <Text>test1</Text> </Data> <Data> <Name>未命名信息2</Name> <Text>test2</Text> </Data> </Datas> </Root><span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [TCP/UDP测试工具 网络协议及数据包测试和调试工具](https://blog.csdn.net/dailifang/article/details/17189209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [TCP / UDP测试工具——tcpudptest使用总结](https://blog.csdn.net/qq_41907450/article/details/87854781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值