1.UDP简要介绍
UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。
2.UDP协议头
2.1.UDP端口号
由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包。端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传进来的目的端口号为3000的UDP包都会交给该程序。端口号理论上可以有2^16这么多。因为它的长度是16个bit
2.2.UDP检验和
这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。
UDP检验和覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。UDP和TCP都包含一个伪首部,这是为了计算检验和而摄制的。伪首部甚至还包含IP地址这样的IP协议里面都有的信息,目的是让UDP两次检查数据是否已经正确到达目的地。如果发送端没有打开检验和选项,而接收端计算检验和有差错,那么UDP数据将会被悄悄的丢掉(不保证送达),而不产生任何差错报文。
2.3.UDP长度
UDP可以很长很长,可以有65535字节那么长。但是一般网络在传送的时候,一次一般传送不了那么长的协议(涉及到MTU的问题),就只好对数据分片,当然,这些是对UDP等上级协议透明的,UDP不需要关心IP协议层对数据如何分片,下一个章节将会稍微讨论一些分片的策略。
3.IP分片
IP在从上层接到数据以后,要根据IP地址来判断从那个接口发送数据(通过选路),并进行MTU的查询,如果数据大小超过MTU就进行数据分片。数据的分片是对上层和下层透明,而数据也只是到达目的地还会被重新组装,不过不用担心,IP层提供了足够的信息进行数据的再组装。
在IP头里面,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表示中间的3bit标志则标示着该分片后面是否还有新的分片。这三个标示就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织(就算是后面的分片比前面的分片先到,这些信息也是足够了)。
因为分片技术在网络上被经常的使用,所以伪造IP分片包进行流氓攻击的软件和人也就层出不穷。
可以用Trancdroute程序来进行简单的MTU侦测。请参看教材。
3.UDP和ARP之间的交互式用
这是不常被人注意到的一个细节,这是针对一些系统地实现来说的。当ARP缓存还是空的时候。UDP在被发送之前一定要发送一个ARP请求来获得目的主机的MAC地址,如果这个UDP的数据包足够大,大到IP层一定要对其进行分片的时候,想象中,该UDP数据包的第一个分片会发出一个ARP查询请求,所有的分片都辉等到这个查询完成以后再发送。事实上是这样吗?
结果是,某些系统会让每一个分片都发送一个ARP查询,所有的分片都在等待,但是接受到第一个回应的时候,主机却只发送了最后一个数据片而抛弃了其他,这实在是让人匪夷所思。这样,因为分片的数据不能被及时组装,接受主机将会在一段时间内将永远无法组装的IP数据包抛弃,并且发送组装超时的ICMP报文(其实很多系统不产生这个差错),以保证接受主机自己的接收端缓存不被那些永远得不到组装的分片充满。
4.ICMP源站抑制差错
当目标主机的处理速度赶不上数据接收的速度,因为接受主机的IP层缓存会被占满,所以主机就会发出一个“我受不了”的一个ICMP报文。
5.UDP服务器设计
UDP协议的某些特性将会影响我们的服务器程序设计,大致总结如下:
- 关于客户IP和地址:服务器必须有根据客户IP地址和端口号判断数据包是否合法的能力(这似乎要求每一个服务器都要具备)
- 关于目的地址:服务器必须要有过滤广播地址的能力。
- 关于数据输入:通常服务器系统的每一个端口号都会和一块输入缓冲区对应,进来的输入根据先来后到的原则等待服务器的处理,所以难免会出现缓冲区溢出的问题,这种情况下,UDP数据包可能会被丢弃,而应用服务器程序本身并不知道这个问题。
- 服务器应该限制本地IP地址,就是说它应该可以把自己绑定到某一个网络接口的某一个端口上。
分享到:
相关推荐
《TCP/IP详解卷1-3》是一套深入探讨TCP/IP协议族的经典著作,由Stephen A. Thomas和W. Richard Stevens两位作者共同撰写。这套书籍详细地解析了互联网协议的各个方面,是IT行业内学习网络通信技术的重要参考书。下面...
### TCP/IP协议技术详解 #### 一、引言与背景 随着信息技术的飞速发展,全球范围内的计算机网络已经成为现代社会不可或缺的一部分。为了确保不同类型的计算机能够有效地通信与协作,TCP/IP协议族作为互联网的核心...
"TCP/IP 详解学习笔记" TCP/IP 协议是计算机网络中最重要的协议族之一,它为计算机之间的通信提供了标准的语言。TCP/IP 协议族包括了 IP 协议、IMCP 协议、TCP 协议,以及我们更加熟悉的 HTTP、FTP、POP3 协议等等...
TCP/IP详解学习笔记主要涵盖了网络通信的基础概念和TCP/IP协议族的核心内容。TCP/IP协议是为了克服计算机之间因操作系统和表达信息方式的差异而导致的沟通难题而诞生的,它是一个协议族,包含了众多协议,如IP、ICMP...
《TCP/IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议》是一本深入解析网络通信协议的专业书籍,其内容涵盖了TCP/IP协议栈中关键的几个层面。以下是其中涉及的重要知识点: 1. **TCP事务协议(TCP Transaction ...
TCP/IP详解前3章的学习笔记主要涵盖了网络通信的基础知识,特别是TCP/IP协议栈的四个主要层次,即应用层、传输层、网络层和数据链路层。这些层次定义了网络通信的不同方面,确保数据能够在不同主机之间可靠地传输。 ...
《TCP/IP卷1、2读书笔记》是对网络通信领域经典之作——"TCP/IP详解"的深入学习和理解的结晶。TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网的基础,是计算机网络之间进行通信的标准协议集。...
TCP/IP协议是互联网通信的基础,它定义了网络设备如何连接到互联网以及数据如何在它们之间传输的规则。...通过学习TCP/IP协议,我们可以更好地理解网络通信的细节,从而更有效地设计和实现网络应用。
通过阅读《TCP/IP详解1-3卷》,你可以深入了解TCP/IP协议簇的每一个层次,学习到如何在网络中进行数据传输,掌握网络通信的核心技术。不论是进行网络编程、网络故障排查,还是设计和优化网络架构,这套书都将是你不...
《TCP/IP详解卷一:协议》是一本深入探讨TCP/IP协议族的专业书籍,它为读者提供了全面而细致的网络通信理论和技术知识。TCP/IP协议是互联网的基础,它定义了网络设备如何交换数据以及数据如何被封装、传输和解封装的...
"TCPIP详解学习笔记" TCP/IP 协议族是一个协议族的统称,包括了 IP 协议、ICMP 协议、TCP 协议、UDP 协议、DNS 协议等等。TCP/IP 协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有 http、ftp ...
《TCP/IP详解卷1:协议》是一本深入探讨TCP/IP协议族的经典著作,由W. Richard Stevens撰写。这本书详尽地介绍了TCP/IP协议的基本概念、工作原理和实现细节,是IT从业者和网络工程师的重要参考资料。笔记内容可能...
《TCP/IP详解》的学习笔记涵盖了TCP/IP协议族的基础知识,主要关注链路层、IP协议以及ARP协议。链路层是TCP/IP模型的第二层,它的主要职责是为IP模块、ARP模块和RARP模块提供服务,负责在局域网内发送和接收数据。在...
【网络技术学习笔记三——TCP/IP详解】 网络通信的核心在于数据的传输,而TCP/IP协议族则是实现这一目标的关键。TCP/IP模型分为四层:应用层、传输层、网络层和链路层,分别对应于OSI模型的上三层。在本笔记中,...
#### 七、IP协议详解 IP协议是互联网的核心协议之一,它定义了数据在网络中的传输方式。 - **Internet体系结构**:TCP/IP协议栈为互联网提供了基础架构。 - **IP协议**:作为TCP/IP协议栈的重要组成部分,IP协议...
TCP/IP详解的学习笔记涵盖了IP协议的关键概念和技术细节。IP,即网际协议,是互联网通信的基础,具有不可靠和无连接的特点。不可靠意味着IP不保证数据报能成功到达目的地,错误时会丢弃数据包并发送ICMP消息。可靠性...