TCP/IP协议学习(5)-UDP协议
来源:互联网 发布:ubuntu gnome英伟达 编辑:程序博客网 时间:2024/06/07 19:13
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侦测。
4.UDP服务器设计
UDP协议的某些特性将会影响我们的服务器程序设计,大致总结如下:
关于客户IP和地址:服务器必须有根据客户IP地址和端口号判断数据包是否合法的能力(这似乎要求每一个服务器都要具备) 关于目的地址:服务器必须要有过滤广播地址的能力。 关于数据输入:通常服务器系统的每一个端口号都会和一块输入缓冲区对应,进来的输入根据先来后到的原则等待服务器的处理,所以难免会出现缓冲区溢出的问题,这种情况下,UDP数据包可能会被丢弃,而应用服务器程序本身并不知道这个问题。 服务器应该限制本地IP地址,就是说它应该可以把自己绑定到某一个网络接口的某一个端口上。
参考链接:http://m.blog.csdn.net/article/details?id=713856
0 0
- TCP/IP协议学习(5)-UDP协议
- TCP,UDP,IP 协议学习
- TCP/IP学习(二)IP、TCP、UDP协议
- TCP/IP协议学习之五(UDP协议)
- TCP/IP协议学习(TCP和UDP的区别)
- TCP、IP、UDP协议
- TCP、UDP、IP协议
- TCP/IP/UDP 协议
- TCP、UDP、IP协议
- TCP、UDP、IP协议
- TCP/IP、UDP协议
- TCP/IP详解学习笔记--UDP协议
- TCP/IP学习笔记(6)-UDP协议
- 学习总结:TCP/IP协议与UDP协议
- TCP、UDP、IP 协议分析
- TCP、UDP、IP 协议分析
- TCP、UDP、IP 协议分析
- TCP、UDP、IP 协议分析
- mysql慢查询,sql性能分析
- 云计算演义(序):除了公有云三巨头,其他的云计算公司和企业IT公司都要完蛋吗?云计算时代来了没有狂欢盛宴只有整个IT业的呜咽
- 我的进程的地址空间的学习
- ubuntn 16.04 下xx-net不能显示系统托盘解决方法
- T-SQL 利用SQL语句动态生成 解构并插入表格内容 示例
- TCP/IP协议学习(5)-UDP协议
- IGRIMACE一键新机 NZT7 NZT8 NZT9 在线源安装方式
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- java nosuchfilederror 或者nosuchmethederror
- Linux开发工具学习笔记1
- scala编程实例
- Linux路由器开发详解
- 初学者之CSS学习(五)控制文字的css样式
- tomcat4源码-深入理解tomcat