计算机网络-运输层-用户数据报协议UDP
用户数据报协议UDP只在IP的数据报服务之上增加的功能:复用和分用的功能以及差错检测的功能。 UDP的主要特点是:(1) UDP是无连接的 ,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此了开销和发送数据之前的时延。(2) UDP使用尽最大努力交付 ,即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数)。(3) UDP是面向报文的 。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文,如图5-4所示。在接收方的UDP,对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程。也就是说,UDP一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文,若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如P电话、实时祝频会议等)要求源主机以恒定的速率发递数据,并且允许在网铬发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好适合这种要求。(5)UDP支持一对一、一对多、多对一和多对多的交互通信.(6)UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。(7)网络环境差的情况下,丢包严重。虽然某些实时应用需要使用没有拥塞控制的UDP,但当很多的源主机同时都向网络发送高速率的实时视领流时,网铬就有可能发生拥塞。结果大家都无法正常接收。因此,不使用拥塞控制功能的UDP有可能会引起网络产生严重的拥塞问题。还有一些使用UDP的实时应用,需要对UDP的不可靠的传输进行适当的改进,以减少数据的丢失。在这种情况下,应用进程本身可以在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传己丢失的报文。用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节(图5-5),由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:(1)源端口 源端口号。在需要对方回信时选用。不需要时可用全0。(2)目的端口 目的端口号。这在终点交付报文时必须使用。(3)长度 UDP用户数据报的长度,其最小值是8(仅有首部)。(4)检验和 检测UDP用户数据报在传输中是否有错。有错就丢弃。伪首部的第3字段是全零;第4字段是P首部中的协议字段的值,对于 UDP协议字段值为17 ;第5字段是UDP用户数据报的长度。当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点一应用进程。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由 网际控制报文协议ICMP发送“端口不可达”差错报文 给发送方。“ICMP的应用”中的traceroute时,就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP就返回“端口不可达”差错报文,因而达到了测试的目的。请注意,虽然在UDP之间的通信要用到其端口号,但由于UDP的通信是无连接的,因此不需要使用套接字(TCP之间的通信必须要在两个套接字之间建立连接)。UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。UDP计算检验和的方法 和计算IP数据报首部检验和的方法相似。但不同的是:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验。 在发送方 ,首先是先把全零放入检验和字段。再把伪首部以及UDP用户数据报看成是由许多16位的字串接起来的。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段后,就发送这样的UDP用户数据报。 在接收方 ,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,转为8位数二进制,然后按二进制反码求这些16位字的和。当无差错时其结果应为全1。否则就表明有差错出现,接收方就应丢弃这个UDP用户数据报(也可以上交给应用层,但附上出现了差错的警告)。 检验和 ,既检查了UDP用户数据报的源端口号和目的端口号以及UDP用户数据报的数据部分,又检查了IP数据报的源P地址和目的地址。 这里假定用户数据报的长度是15字节,因此要添加一个全0的字节。这种简单的差错检验方法的检错能力并不强,但它的好处是简单,处理起来较快。

udp与tcp区别是什么
UDP是面向无连接的通讯协议,UDP数据包含目的端口号和源端口号信息。主要优点速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送;缺点是传输数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。 TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次握手,主要优点是TCP在数据传输时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠;缺点是相对于UDP速度慢,要求系统资源较多。TCP和UDP区别:TCP是面向连接的协议,而UDP是无连接的协议,意味着当一个客户端和一个服务端通过TCP发送数据前,必须先建立连接,建立连接的过程被称为TCP三次握手;TCP提供交付保证,意味着一个使用TCP协议发送的信息是保证交付给客户端的,如果消息在传输过程中丢失,将重发;UDP是不可靠的,不提供任何交付的保证,一个数据报包在运输过程中可能会丢失;消息到达网络的另一端时可能是无序的,TCP协议将会为你排序,UDP不提供任何有序性的保证;TCP速度比较慢,而UDP速度比较快,因为TCP必须建立连接,以保证消息的可靠交付和有序性,需要做比UDP多的事; TCP是重量级的协议,UDP协议则是轻量级的协议。一个TCP数据报的报头大小最少是20个字节,UDP数据报的报头固定是8个字节。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。
TCP,全拼:Transmission Control Protocol,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。UDP,全拼:User Datagram Protocol,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP与UDP区别1、TCP提供的是面向连接的、可靠的数据流传输;UDP提供的是非面向连接的、不可靠的数据流传输。2、TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,按序到达;UDP尽最大努力交付,即不保证可靠交付。3、TCP面向字节流;UDP面向报文。4、TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。6、TCP的逻辑通信信道是全双工的可靠信道;UDP的逻辑通信信道是不可靠的信道。

计算机网络基础:TCP、UDP协议的简单介绍及区别
TCP(Transmission Control Protocol,传输控制协议),属于TCP/IP协议模型中的传输层,是基于连接的协议。TCP协议通过序列化应答和必要时重发数据包,为应用程序提供了可靠的传输流和虚拟连接服务。面向连接指的是在发送数据之前,必须与对方建立可靠的连接,就像打电话一样,你得先拨号,然后保证线路通畅,对方接听了电话,这时才能互相通话。这个建立连接的过程被称作“三次握手”。妹子:在吗?(你没有回应……)GG,你将永远失去她。妹子:在吗?(一个小时过去了)你:在这时候妹子的问题已经解决了,而你却激动地等待着她的回复。(她什么时候才能回我啊.jpg)当然这不是我们想看到的结果妹子:在吗?(第一次握手)你:在(第二次握手)妹子:问你一个问题(第三次握手)这时,她确定你在,所以会准备问问题,你也确定她在,所以激动紧张的等待没有白费接下来你们开始愉快地聊天(数据传输)终止连接的过程称之为“四次挥手”或者“四次分手”(感觉后者不太吉利,以下就用挥手)继续用刚才的微信发消息来举例:你:我讲完了, 你懂了吗?(第一次挥手)妹子:懂了,我也问完了(第二次挥手)妹子:谢谢谢,那我下了(第三次挥手)你:好,我也下了(第四次挥手)如果只有一、二、三次挥手的话,结果很容易自己想到。建立连接的三次握手,和终止连接的四次挥手,都是为了保证双方应答有效,避免让某一方持续等待接受数据而造成的资源浪费。在例子中体现为,开始聊天时不会咕咕咕,结束时不会突然去世。UDP(User Datagram Protocol,用户数据报协议),属于TCP/IP模型中的传输层,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。注:传输可靠指的是,通过拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段,保证数据无差错、不丢失、不重复且按序到达。

网络--TCP/IP(四)TCP 与 UDP 协议简介
从本节开始,我们开始学习最重要的传输层。传输层位于OSI七层模型的第四层(从下往上)。顾名思义,传输层的作用是实现应用程序间的通信。网络层的作用是保证数据在不同数据链路上传输的可达性,至于如何传输则是由传输层负责。常见的传输层协议主要有TCP和UDP协议。UDP协议最大的特点就是简单,UDP首部如图:和UDP首部相比,TCP首部要复杂的多。解析这个首部的时间也会相应的增加,这也是TCP连接的效率低于UDP的原因之一。TCP是面向有连接的协议,连接在每次通信前被建立,通信结束后被关闭。了解连接建立和关闭的过程通常是考察的重点。连接的建立和关闭可以用一张图来表示:通常情况下我们认为客户端首先发起连接请求。1.发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;2.接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;3.最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。*SYN:同步标志同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。*ACK:确认标志确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。*RST:复位标志复位标志有效。用于复位相应的TCP连接。*URG:紧急标志紧急(The urgent pointer) 标志有效。紧急标志置位,*PSH:推标志该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。*FIN:结束标志带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据根据一般思路,我们认为第三次是多余的,TCP协议为什么还要增加第三次的握手呢?这是因为在网络请求的时候,我们应该时刻记住“网络是不安全的,数据包是可能丢失的”。假设没有第三次确认,客户端向服务端发送了SYN包,请求建立连接。由于网络原因,服务器没有及时收到这个包,于是客户端重新发送了SYN包。正常建立了连接。此时超时的那个确认包到达了服务端,如果是两次握手此连接就建立了,服务端就建立了一个空连接,白白浪费资源。如果是三次,客户端判断这个确认包是无效的,就丢弃了。三次握手实际其实解决了第二步丢包问题。那么第三步的ACK包丢失了,TCP协议是如何处理的呢?按照TCP协议处理丢包问题的一般方法,服务器会重新向客户端发送确认包,知道ACK确认为止。但实际上这种做法有可能遭到SYN泛洪攻击。所谓的泛洪攻击,是指发送方伪造多个IP地址,模拟三次握手的过程。当服务器返回ACK后,攻击方故意不确认,从而使服务器不断重发ACK。由于服务器长时间处于半连接状态,最后消耗过多的CUP和内存资源导致死机。所以服务端采用的是这种方法,发送RST数据包,进入close状态,这个RST数据包中的TCP首部中的控制位中的RST位被置为1。这表示连接信息全部被初始化,原有的TCP通信不能继续。客户端如果还想建立TCP连接,需要从第一步握手重新开始。(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

udp广播会造成网络堵塞
会的。 用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广播域就是192.168.23.150&255.255.255.0=192.168.23.0。那么其它的在广播域192.168.23.0内的所有主机就可以到该设备发送的广播包。如果把子网掩码改为255.255.0.0,那么它所属的广播域就是192.168.23.150&255.255.0.0=192.168.0.0。那么其它的在广播域192.168.0.0内的所有主机都可以收到该设备发送的广播包。要想相同广播域内的其它主机能收到的广播帧,还需要在发送广播包的时候指定当前所属广播域内的广播地址。广播地址的计算方法为子网掩码取反再与广播域进行或运算。 例如:如果主机当前所属广播域为192.168.0.0,子网掩码为255.255.0.0,那么广播地址则为192.168.255.255。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/82268.html。