精华内容
下载资源
问答
  • UDP协议详解

    2021-03-02 00:15:01
    关注+星标公众号,不错过精彩内容转自 |知晓编程1、简介UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过...

    关注+星标公众,不错过精彩内容

    转自 | 知晓编程

    1、简介

    UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP 消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。

    UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。它没有握手对话,因此将用户的程序暴露在底层网络的任何不可靠的方面。如果在网络接口级别需要纠错功能,应用程序可以使用为此目的设计的传输控制协议(TCP)。

    综上所述:

    UDP是基于IP的简单协议,不可靠的协议。

    UDP的优点:简单,轻量化。

    UDP的缺点:没有流控制,没有应答确认机制,不能解决丢包、重发、错序问题。

    这里需要注意一点,并不是所有使用UDP协议的应用层都是不可靠的,应用程序可以自己实现可靠的数据传输,通过增加确认和重传机制,所以使用UDP 协议最大的特点就是速度快。

    2、UDP协议

    UDP是基于IP的简单协议,建议先看一下IP协议《IP协议详解》相关内容。

    源端口和目的端口,端口号理论上可以有2^16这么多。因为它的长度是16个bit。端口的详细见下一章节。

    Length占用2个字节,标识UDP头的长度,包括首部长度和数据长度。可以有65535字节那么长。但是一般网络在传送的时候,一次一般传送不了那么长的协议(涉及到MTU的问题),就只好对数据分片。

    Checksum :校验和,包含UDP头和数据部分。这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。

    UDP检验和覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。UDP和TCP都包含一个伪首部,这是为了计算检验和而设置的。

    伪首部甚至还包含IP地址这样的IP协议里面都有的信息,目的是让UDP两次检查数据是否已经正确到达目的地。如果发送端没有打开检验和选项,而接收端计算检验和有差错,那么UDP数据将会被悄悄的丢掉(不保证送达),而不产生任何差错报文。

    wireshark抓包分析

      链接:https://pan.baidu.com/s/1O6MQUZRsEy9YkyvZNpBqhQ  提取码:quxv

    (提示:公众号不支持外链接,请复制链接到浏览器下载)

    过滤条件

    udp.port == 5007

    3、端口

    端口号是 16 位的非负整数,它的范围是0 - 65535 之间,这个范围会分为三种不同的端口号段,由端口号是由互联网分配号码管理局(IANA)进行分配

    • 周知/标准端口号,它的范围是 0 - 1023。在Unix的操作系统上,使用这些端口之一需要超级用户操作权限

    • 注册端口号,范围是 1024 - 49151。是用于IANA 注册服务的注册端口。

    • 私有端口号,范围是 49152 - 6553。未正式指定用于任何特定服务,可用于任何目的。这些端口也可以用作临时端口,在主机上运行的软件可以使用这些端口根据需要动态创建通信终结点。

    端口的作用,简单说就是为了区分不同应用程序的,当电脑接收到一个数据报,将根据不同的端口将数据送给不同的应用程序。所以上面说到互联网分配号码管理局(IANA)分配。

    具体分配的细则,大家可以到下面网站查看

    https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

    (提示:公众号不支持外链接,请复制链接到浏览器下载)

    这里以80端口为例,80端口是为HTTP(HyperTextTransport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(WorldWide Web)即万维网传输信息的协议。

    当然端口并不是唯一用来区分不同应用程序的因素,假如来到达服务器的两个80端口的数据报,但实际上,这两个数据报需要送给不同的应用程序。所以仅凭端口号来确定某一条报文显然是不够的。互联网上一般使用 源IP 地址、目标IP地址、源端口号、目标端口号来进行区分。如果其中的某一项不同,就被认为是不同的报文段。这些也是多路分解和多路复用的基础,关于多路分解和多路复用本文不再详细讲解。

    这部分内容同样适用于TCP协议中的端口部分。

    4、UDP和ARP之间的交互

    这是不常被人注意到的一个细节,这是针对一些系统地实现来说的。当ARP缓存还是空的时候。UDP在被发送之前一定要发送一个ARP请求来获得目的主机的MAC地址,如果这个UDP的数据包足够大,大到IP层一定要对其进行分片的时候,想象中,该UDP数据包的第一个分片会发出一个ARP查询请求,所有的分片都辉等到这个查询完成以后再发送。事实上是这样吗?

    结果是,某些系统会让每一个分片都发送一个ARP查询,所有的分片都在等待,但是接受到第一个回应的时候,主机却只发送了最后一个数据片而抛弃了其他,这实在是让人匪夷所思。这样,因为分片的数据不能被及时组装,接受主机将会在一段时间内将永远无法组装的IP数据包抛弃,并且发送组装超时的ICMP报文(其实很多系统不产生这个差错),以保证接受主机自己的接收端缓存不被那些永远得不到组装的分片充满。

    5、UDP适用场景

    UDP协议一般作为流媒体应用、语音交流、视频会议所使用的传输层协议,还有许多基于互联网的电话服务使用的VOIP(基于IP的语音)也是基于UDP运行的,实时视频和音频流协议旨在处理偶尔丢失的数据包,因此,如果重新传输丢失的数据包,则只会发生质量略有下降,而不是出现较大的延迟。

    我们大家都知道的DNS 协议底层也使用了UDP 协议,这些应用或协议之所以选择UDP 主要是因为以下这几点

    速度快,采用 UDP 协议时,只要应用进程将数据传给 UDP,UDP 就会将此数据打包进 UDP 报文段并立刻传递给网络层,然而TCP有拥塞控制的功能,它会在发送前判断互联网的拥堵情况,如果互联网极度阻塞,那么就会抑制 TCP 的发送方。使用 UDP 的目的就是希望实时性。

    无须建立连接,TCP 在数据传输之前需要经过三次握手的操作,而 UDP 则无须任何准备即可进行数据传输。因此 UDP 没有建立连接的时延。

    无连接状态,TCP 需要在端系统中维护连接状态,连接状态包括接收和发送缓存、拥塞控制参数以及序号和确认号的参数,在 UDP 中没有这些参数,也没有发送缓存和接受缓存。因此,某些专门用于某种特定应用的服务器当应用程序运行在 UDP 上,一般能支持更多的活跃用户

    分组首部开销小,每个 TCP 报文段都有 20 字节的首部开销,而 UDP 仅仅只有 8 字节的开销。

    6、UDP洪水

    UDP 洪水是一种拒绝服务攻击,攻击者将大量用户数据报协议(UDP) 数据包发送到目标服务器,旨在让该设备的处理和响应能力无力承担。由于UDP 洪水攻击,保护目标服务器的防火墙也可能不堪重负,导致对正常流量拒绝服务。

    UDP 洪水攻击的工作原理

    UDP 洪水的工作原理主要是利用服务器响应发送到其端口之一的UDP 数据包时所采取的步骤。在正常情况下,服务器在特定端口上收到UDP 数据包时,将通过以下两个步骤进行响应:

    • 服务器首先检查是否有任何当前侦听指定端口请求的程序正在运行。

    • 如果该端口上没有程序正在接收数据包,则服务器将以 ICMP (ping) 数据包作为响应,以告知发送方目标不可达。

    UDP洪水就好比酒店接待员转接呼叫的情况。首先,接待员接到电话,呼叫者要求将其连接到特定客房。然后,接待员需要查看所有房间的列表,以确保客人在客房内,并愿意接听电话。如果接待员了解到客人没有接听电话,他们就必须重新接听电话,并告诉呼叫者客人不会接听电话。如果所有电话线路都突然同时发出类似请求,他们很快就会变得不堪重负。

    由于目标服务器利用资源来检查并响应每个接收到的UDP 数据包,当收到大量UDP 数据包时,目标资源会很快耗尽,从而导致对正常流量拒绝服务。

    如何防护UDP 洪水攻击?

    大多数操作系统限制ICMP 数据包的响应速率,部分原因是为了中断需要ICMP 响应的DDoS 攻击。这种防护措施的一个缺点是,在攻击期间,合法数据包也可能在此过程中被过滤。如果UDP洪水的大小足以使目标服务器的防火墙的状态表饱和,则在服务器级别发生的任何防护都将是不够的,因为瓶颈将发生在目标设备的上游。

    ------------ END ------------

    推荐阅读:

    精选汇总 | 专栏 | 目录 | 搜索

    精选汇总 | 嵌入式C语言

    精选汇总 | STM32、单片机

    欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

    欢迎关注我的视频号:

    点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

    展开全文
  • TCP协议UDP协议

    千次阅读 2021-12-09 08:57:31
    1,TCP是面向连接的协议UDP是无连接的协议; 2,TCP协议传输是可靠的,UDP协议传输“尽力而为”; 3,TCP可以进行流控,UDP不行; 4,TCP可以进行分段,UDP不行; 5,TCP传输速度较慢,占用资源较大;UDP传输...

    TCP和UDP的区别

    1,TCP是面向连接的协议,UDP是无连接的协议;

    2,TCP协议传输是可靠的,UDP协议传输“尽力而为”;

    3,TCP可以进行流控,UDP不行;

    4,TCP可以进行分段,UDP不行;

    5,TCP传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小;

    扔球游戏

    1.面向连接:A和B扔球两者间隔着墙,但可以进行喊话,以及确认收到。

     无连接:A和B间隔着墙,不可喊话和确认收到,两者瞎扔,A向B扔完求即结束进程。

    2.TCP可以对信息进行确认,所以传输可靠。

    什么是面向连接:

    在正式传输数据之前,先通过预备好的协议,建立点到点的连接,之 后再传输数据。

    伪头部校验 --- 32位源IP地址,32位目标IP地址,8位保留,8位协 议,16位总长度 --- 反码相加法

      

                                                                       

                                                                          UDP

    TCP的三次握手

                                                                  TCP的四次挥手

    四次挥手的原因:因为第一次发送和接受的数据,与第二次发送和接受的数据可能不同。

    理论上四次挥手,实际上挥手次数不固定,可能是三次,两次,一次。

     TCP传输可靠性的保障机制 --- 确认,重传,排序,流控 --- 滑动窗口机制

    确认ACK协议

    重传未收到再次发送

    排序为数据的序号

    窗口机制---A发送的数据包数量不断增加,超过B的接受数量时减少到B的接受最大值,之后发包数再增加。原因是B在同一时间处理的数据包数量不同,导致可接受的数据包数不固定。

     

      16位端口号:告知主机该报文段是来自哪里(源端口Source Port)以及传给哪个上层协议或应用程序(目的端口Destination Port)的。进行TCP通信时,客户端通常使用系统自动选择的临时端口号,而服务器则使用知名服务端口号(比如DNS协议对应端口53,HTTP协议对应80,这些端口号可在/etc/services文件中找到)。

            32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中,序号值被系统初始化为某个随机值ISN(Initial Sequence Number,初始序号值)。那么在该传输方向上(从A到B),后续的TCP报文段中序号值将被系统设置成ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。例如,某个TCP报文段传送的数据是字节流中的第1025~2048字节,那么该报文段的序号值就是ISN+1025.另外一个传输方向(从B到A)的TCP报文段的序号值也具有相同的含义。

            32位确认号(acknowledgement number):用作对另一方发送来的TCP报文段的响应。其值是收到的TCP报文段的序号值加1。假设主机A和主机B进行TCP通信,那么A发送出的TCP报文段不仅携带自己的序号,而且包含对B发送来的TCP报文段的确认号。反之,B发送出的TCP报文段也同时携带自己的序号和对A发送来的报文段的确认号。

            4位头部长度(header length):标识该TCP头部有多少个32bit字(4字节)。因为4位最大能标识15,所以TCP头部最长是60字节。

            6位标志位包含如下几项:

            URG标志,表示紧急指针(urgent pointer)是否有效。

            ACK标志,表示确认号是否有效。我们称携带ACK标识的TCP报文段为确认报文段。

            PSH标志,提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收

            到的数据读走,它们就会一直停留在TCP接收缓冲区中)。

             RST标志,表示要求对方重新建立连接。我们称携带RST标志的TCP报文段为复位报文段。

             SYN标志,表示请求建立一个连接。我们称携带SYN标志的TCP报文段为同步报文段。

             FIN标志,表示通知对方本端要关闭连接了。我们称携带FIN标志的TCP报文段为结束报文段。

           16位窗口大小(window size):是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口(Receiver Window,RWND)。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。

            16位校验和(TCP check sum):由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。

            16位紧急指针(urgent pointer):是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

            TCP头部选项:TCP头部的最后一个选项字段(options)是可变长的可选信息。这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)。

    网络层 --- IP地址 ---- IP

     TCP和IP都是可变长头部

    TTL -- 生存时间 ---- 当数据包每经过一次路由器的转发,这个TTL值将 减1。当一个数据包中的TTL值为0时。则路由器将不再对其进行转发,将 直接丢弃。

    TCP --- 6

    UDP --- 17

    ICMP --- 1

    ip分片

    MTU ---- 最大传输单元 ---- 1500字节

    MSS ---- 最大段长度 --- 1460

    GE --- 千兆口 Ethernet --- 百兆口

    Et hernet --- 百兆口

    Huaiwei系统的一些操作

    <Huaiwei>--- 用户视图 --- “< >”

    用户视图仅能执行查看操作,但是不能对设备进行配置

    <Huaiwei>display ip interface brief ---- 查看接口IP配置情况摘要

    Physical --- 物理层面具备通信条件

    Protocol --- 协议层面具备通讯条件

                  ---- 只有接口双UP才代表该接口具备通讯条件

    <Huaiwei>system-view --- 进入系统视图

    [Huawei] --- 系统视图 --- 可以对设备进行全局类的配置

    [Huawei]sysname aa --- 修改设备名称

    改Haiwei为aa

    [aa]

    [aa]interface GigabitEthernet 0/0/0 --- 进入接口视图

    [aa-GigabitEthernet0/0/0]

    [aa-GigabitEthernet0/0/0]ip address 192.168.1.1

    255.255.255.0 --- 配置IP地址命令

    [aa-GigabitEthernet0/0/0]undo ip address 192.168.1.1

    255.255.255.0 --- 删除IP地址

    帮助系统

    tab --- 自动补全命令

    ? --- 查看命令后面参数/可以查看该字母开头的所有命令

    展开全文
  • UDP 协议介绍

    2021-03-07 22:00:53
    UDP概述 UDP(User Datagram Protocol) 即...UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议UDP报文没有可靠性

    UDP概述

    UDP(User Datagram Protocol) 即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层处于IP协议的上一层。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。UDP报文没有可靠性保证、顺序保证和流量控制字段等,可靠性较差。但是正因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等

    UDP特点

    UDP提供不可靠服务,具有TCP所没有的优势

    • UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销。此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。 举个例子:

      • DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。
      • HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。
      • 同一种专用应用服务器在支持UDP时,一定能支持更多的活动客户机。
    • 分组首部开销小,TCP首部20字节,UDP首部8字节。

    • UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)

    • UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息

    • UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。 正是因为这样,UDP显得不够灵活,不能控制读写数据的次数和数量。比如我们要发送100个字节的报文,我们调用一次sendto函数就会发送100字节,对端也需要用recvfrom函数一次性接收100字节,不能使用循环每次获取10个字节,获取十次这样的做法。

    • UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销。UDP也常用于多媒体应用(如IP电话,实时视频会议,流媒体等)数据的可靠传输对他们而言并不重要,TCP的拥塞控制会使他们有较大的延迟,也是不可容忍的

    • UDP 支持一对一、一对多、多对一和多对多的交互通信

    还要注意的是

    • IP 数据报要经过互连网中许多路由器的存储转发;UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送

    UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文

    UDP的首部格式

    在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和

    • 源端口: 占16位、源端口号。在需要对方回信时选用。不需要时可用全0。
    • 目的端口: 占16位、目的端口号。这在终点交付报文时必须使用。
    • 长度: 占16位、UDP用户数据报的长度,其最小值是8(仅有首部)。
    • 检验和: 占16位、检测UDP用户数据报在传输中是否有错。有错就丢弃

    注意:虽然在 UDP 之间的通信要用到其端口号,但由于 UDP 的通信是无连接的,因此不需要使用套接字

    UDP校验

    UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,都使用二进制反码运算求和再取反,但不同的是:IP数据报的校验和之检验IP数据报和首部,但UDP的校验和是把首部和数据部分一起校验

    发送方,首先是把全零放入校验和字段并且添加伪首部,然后把UDP数据报看成是由许多16位的子串连接起来,若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾增加一个全零字节(此字节不发送),接下来就按照二进制反码计算出这些16位字的和。将此和的二进制反码写入校验和字段

    接收方,把收到得UDP数据报加上伪首部(如果不为偶数个字节,还需要补上全零字节)后,按二进制反码计算出这些16位字的和。当无差错时其结果全为1。否则就表明有差错出现,接收方应该丢弃这个UDP数据报

    下图是计算UDP校验和的例子

    注意

    • 校验时,若UDP数据报部分的长度不是偶数个字节,则需要填入一个全0字节,但是次字节和伪首部一样,是不发送的
    • 如果UDP校验和校验出UDP数据报是错误的,可以丢弃,也可以交付上层,但是要附上错误报告,告诉上层这是错误的数据报
    • 通过伪首部,不仅可以检查源端口号,目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。 这种差错检验的检错能力不强,但是简单,速度快
    展开全文
  • 目录前言1.UDP协议的特点2. UDP协议的特点3. UDP的应用 前言 TCP和UDP协议都是传输层的协议,其中传输层是负责端对端之间的连接,端是指端点。 端口的划分和知名端口 0~1023:知名端口 3306:Mysql数据库 1521:...


    前言

    TCP和UDP协议都是传输层的协议,其中传输层是负责端对端之间的连接,端是指端点。

    端口的划分和知名端口

    • 0~1023:知名端口
    • 3306:Mysql数据库
    • 1521:Oracle数据库
    • 22:ssh服务器
    • 21:ftp服务器
    • 23:telnet服务器
    • 80:http服务器
    • 443:https服务器

    可以使用cat /etc/services查看知名端口

    ① 一个进程是否可以bind多个端口号?

    可以的,一个进程可以绑定多个端口号。

    ② 一个端口号是否可以被多个进程bind?

    是不行的,一个端口一次只能被一个进程所绑定。

    我们可以使用netstat [选项]命令来查询网络状态。

    • n :拒绝显示别名,能显示数字的全部转化成数字
    • l:仅列出有在 Listen (监听) 的服務状态
    • p:显示建立相关链接的程序名
    • t:(tcp)仅显示tcp相关选项
    • u:(udp)仅显示udp相关选项
    • a:(all)显示所有选项,默认不显示LISTEN相关
      .

    举个例子的话就是 可以使用 netstat -anp | grep [端口号]来查看当前某个端口的具体情况。

    1.UDP协议的特点

    UDP协议的特点就是无连接、不可靠、面向数据报的,整个过程就像是一个寄信的过程,每次接收和发送数据均是整条进行发送。

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

    2. UDP协议格式的特点

    在这里插入图片描述
    我们再来看看,udp的定义:
    在这里插入图片描述

    ① 16位源端口号:数据从哪个端口发送出来的,换一句话说,数据是从哪一个进程中被发送出来的

    ② 16位目的端口号:数据想要到哪一个端口去,换句话说,数据想要往哪一个端口去。

    ③ 16位UDP长度:即UDP所能支持的数据长度,即UDP数据最大支持65536的长度。

    问题:想要使用UDP协议发送大于65536(216)的数据,应该如何发送?
    解答:可以采用自定制协议,(HTTP协议所使用的TCP协议),但是在使用自定制协议的时候,要使用两个标识符,一个标识符用来标识是否为同一条数据,另一个标识符用来标识当前数据的位置,即用来判断数据的前后位置(偏移量)。
    解法二:也可以直接使用自定制协议限定大小,然后在同一个逻辑下多次调用sendto接口
    注意:由于UDP最大长度为65536,但是其中还包含了头部的8个字节,因此在每次发送数据的时候,最大发送65536 - 8 = 65528个字节。

    ④ 16位校验和:校验数据在传输过程中是否失真。

    • 首先在发送方进行填充,接收方进行检验。
      对于接收方而言,如果接收成功了,就会将数据递交给应用层。如果校验失败了,即使数据已经传输到了UDP协议中,也会直接被丢弃掉,因为又可能在传输过程中失真了。
    • 对于发送方来说,要对其进行填充,方法是:将除过校验和的16比特位,其余的按照16个比特位进行相加。(在相加的过程中如果出现比特位超过16位的情况,则需要进行回卷)

    回卷的策略:最高位 + 低16位 计算出来新的值。

    • 然后再将加完的结果进行反码运算,再将反码运算的结果放到16位校验和中去。
    • 对于接收方而言,对所有的16个比特位进行相加,如果相加的和全为1,则数据是正确的,否则数据就失真。

    在这里插入图片描述

    这里也能体现出UDP不可靠的特性:若接收方检验到数据失真则就直接丢弃不用,若是数据在转发过程中丢失,也直接丢弃。

    ⑤ 数据:应用层的数据(有效载荷)

    ⑥ UDP缓冲区

    发送缓冲区:将应用层数据打上UDP报头之后,直接递交给网络层
    接收缓冲区:去掉UDP报头,将数据递交给应用层,需要注意的是UDP协议并不保证数据的有序到达。

    3. UDP的应用

    • DNS: 域名解析协议
    • DHCP: 动态主机配置协议
    • NFS: 网络文件系统
    • TFTP: 简单文件传输协议
    • BOOTP: 启动协议(用于无盘设备启动)

    当然, 也包括你自己写UDP程序时自定义的应用层协议.

    展开全文
  • UDP协议

    2021-04-02 21:33:27
    传输层有两个好兄弟,大哥TCP和二弟UDP,大哥靠谱,二哥不靠谱 UDP不建立连接,无连接,不可靠 UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。 UDP的主要特点: 1.UDP是无连接的,减少开销和发送...
  • 先介绍下什么是TCP,什么是UDP。 1. 什么是TCP? TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的字节流服务,也就是说,在收发数据前,必须和对方建立可靠的连接。这一过程和打电话类似...
  • UDP协议 源端口号,目的端口号:发送端和接收端的端口号 长度:UDP用户数据报的长度,最小值是8字节(只有首部) 校验和:检测UDP用户数据报在传输中是否出错,出错就丢弃 源端口号,目的端口号:发送端和接收方...
  • 常用的网络传输协议有两种,分别是UDP协议和TCP协议 1. UDP协议 UDP协议,即用户数据报协议(User Datagram Protocol),是一种无连接通信协议,即在数据传输时,数据的发送端和接收端不建立洛基连接。简单来说就是...
  • 传输层传输层的主要工作是定义端口,标识应用程序身份,并将数据包交给对应的应用程序实现端口到端口的通信,并且传输层引入了TCP/UDP协议。1. 如果有大量数据包、数据包大?时间很长,网络中断,怎么控制重新传输?...
  • UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的...
  • udp协议

    2021-02-10 09:47:02
    1,udp协议是面向数据的,即是无连接的通信协议,因传输数据无需连接,且没有超时重发等机制,故而传输速度优于tcp。 2,udp是无连接的协议,每个数据报文都是一个独立的信息。包括完整的源地址或目的地址,它在...
  • TCP协议UDP协议

    2021-06-21 10:22:20
    首先弄清楚,TCP协议UDP协议 与 TCP/IP协议 的联系,很多人一直都是说TCP协议UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议 是一个 协议簇。里面包括很多协议的,UDP 只是其中的一个, ...
  • UDP 协议 UDP 协议,目标是在传输层提供直接发送报文(Datagram)的能力 Datagram 是数据传输的最小单位,UDP协议不会帮助拆分数据它的目标只有一个就是帮助发送报文。 为什么不直接使用IP协议?裸发数据 这是因为...
  • TCP/IP协议UDP

    2021-10-10 21:00:23
    TCP/IP协议:是一个协议簇,包含很多协议UDP也包括在其中。一般命名都是TCP/IP,是因为是协议中最重要的俩个协议 TCP/IP协议集包括:应用层、传输层、网络层、网络链路层 应用层包括: 1.超文本传输协议(HTTP) ...
  • TCP/UDP协议

    2021-08-13 03:46:24
    传输层协议TCP, 传输控制协议UDP,用户数据报协议 无连接,尽最大努力交付TCPTCP 特性TCP 提供一种面向连接的、可靠的字节流服务在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCPTCP 使用校验和,...
  • 计网 - TCP 协议 VS UDP 协议

    千次阅读 2021-07-04 11:51:54
    文章目录PreUDP 协议UDP 的封包格式UDP 与 TCP的区别总结 Pre 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?中提到了T CP 和 UDP 是今天应用最广泛的传输层协议,拥有最核心的垄断地位。 TCP 最...
  • 总所周知,tcp和udp都是传输层协议 区别 1、tcp面向连接 udp无连接 2、tcp可靠 udp不可靠 3、tcp面向字节流 udp面向报文 4、tcp头部大 udp头部小 5、tcp具有流量控制,拥塞控制 udp都没有 6、tcp只支持点对点 udp...
  • UDP 协议,是一个不支持可靠性的协议。 校验和(Checksum) 最简单的校验和算法:纵向冗余检查 UDP 不支持可靠性,但是像校验和(Checksum)这一类最基本的数据校验,它还是支持的。 不支持可靠性,并不意味着完全...
  • 在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议。我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的。相当于TCP的稳定性来说,UDP因为其数据传输的不可靠性,所以用在某些特定的场合...
  • UDP协议报文结构

    2021-11-04 11:20:55
    伪头部 : 只是为了提取 IP 数据报中的源IP,目的IP信息并加上协议等字段构造的数据。在实际传输中并不会发送,仅起到校验和计算使用,因此称之为伪首部。 源端口号 : 一般是客户端程序请求时,由系统自动指定,端口...
  • 文章目录UDP协议概述UDP报头UDP与TCP的对比 UDP协议概述 UDP是User Datagram Protocol(用户数据报协议)的简称。UDP提供无连接,不可靠的数据报服务。UDP 继承了 IP 包的特性,不保证不丢失,不保证按顺序到达。 ...
  • 基于TCP或UDP的应用层协议

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 350,416
精华内容 140,166
关键字:

哪些协议属于udp