全硬件TCP/IP协议栈学习笔记(第三天:TCP/IP协议学习三)

描述

昨天我们结束时到了UDP协议,今天我们继续

<2>.UDP协议头

(1)UDP端口号:UDP协议通过端口号来区分不同程序的程序所需要的数据包。长度为16bit。

(2)UDP检验和:这是可选的选项,并不是所有系统都对UDP数据包加以检验,但是

RFC中标准要求发送端应该计算检验和。

UDP检验和覆盖UDP协议头和数据,这和IP的检验和不一样,IP的检验和只覆盖IP数据头,并不覆盖所有数据。UDP和TCP都包含一个伪首部,这是为了计算检验和而设置的。伪首部还包括IP地址这样的IP协议里都有的信息。目的是让两次检查数据是否已经正确到达目的地。

(3).UDP长度:它的长度可以达到65535字节。但是一般的网络在传输的时候,一次一般传送不了那么长的协议,就只好对数据分片。

<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报文。以保证接收主机不会自己的接收端缓存不会被那些总也得不到组装的分片装满。

3.TCP协议

UDP协议的优点是比较简单,容易实现,但是它的可靠性比较差,一旦数据包发出了,无法知道对方是否收到。

为了解决这个问题,提高网络的可靠性,TCP协议就诞生了,它可被近似认为是一个有确认机制的UDP协议,每发出一个数据包都被要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重新发送这个数据包了。TCP协议能够确保数据不会遗失,但是他的缺点就是过程复杂,实现困难,消耗较多的资源。

TCP数据包和UDP数据包都是内嵌在IP数据包的数据部分。TCP数据包没有长度限制,;理论上可以无限长。通常TCP数据包不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分