您好、欢迎来到现金彩票网!
当前位置:秒速快3 > 数据封装 >

如何利用UDP协议封装一个数据包

发布时间:2019-08-04 20:05 来源:未知 编辑:admin

  在如何封装一个数据包上,是一个非常细致的问题,而利用UDP协议来封装的话,是比较简单,让我们一步步来分析典型的TCP/IP协议。一般来说一个典型的一个数据包,包括以太网MAC头+网络层IP数据头+传输层UDP头+要传输的数据。让我们一层层来看看这些数据头是如何构成的。

  一般情况下,以太网MAC头由14个字节构成,12个自己的MAC地址+上层协议的标识符。举个例子

  8字节的前导用于帧同步,CRC域用于帧校验。这些用户不必关心其由网卡芯片自动添加。目的地址和源地址是指网卡的物理地址,即MAC地址,具有唯一性。帧类型或协议类型是指数据包的高级协议,如 0x0806表示ARP协议,0x0800表示IP协议等。

  0x45,其中的高位0x4,表示的是版本号,ipv4的意思,而后面低字节5表示的是指明IPv4协议包头长度的字节数包含多少个32位,这里是5,也就是说协议头是5*4=20个字节的大小。

  0x00,定义IP封包在传送过程中要求的服务类型,如果所有4bit均为0,那么就意味着是一般服务,具体如下:

  0x00, 0x00,是上面的标志位,16个字节。每一个IP封包都有一个16位的唯一识别码当程序产生的数据要通过网络传送时都会被拆散成封包形式发送,当封包要进行重组的时候这个ID就是依据了。

  0x00, 0x00这16位是由两部分组成,包括3bit的标记位和13bit的分段偏移量。

  这是当封包在传输过程中进行最佳组合时使用的3个bit的识别记号占3位

  ◆..0( More Fragment):更多分段当上一个值为0时,此值为0就示该封包是最後一个封包,如果为1则表示其後还有被分割的封包

  IP协议头格式规定当封包被分段之后,由于网路情况或其它因素影响其抵达顺序不会和当初切割顺序一至,所以当封包进行分段的时候会为各片段做好定位记录,以便在重组的时候就能够

  0x80表示生存时间。生存时间字段设置了数据报可以经过的最多路由器数,表示数据包在网络上生存多久TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1当该字段的值为0时,数据报就被丢弃,并发送ICMP消息通知源主机这样当封包在传递过程中由於某些原因而未能抵达目的地的时候就可以避免其一直充斥在网路上面占8位

  指IPv4数据报包头的校验和这个数值用来检错用的,用以确保封包被正确无误的接收到当封包开始进行传送后,接收端主机会利用这个检验值会来检验余下的封包,如果一切无误就会发出确认信息表示接收正常与UDP和TCP协议包头中的校验和作用是一样的占16位

  首部检验和字段是根据IP首部计算的检验和码,不对首部后面的数据进行计算ICMPIGMPUDP和TCP协议在它们各自的首部中均含有同时覆盖首部和数据检验和码

  IP协议头格式规定了:计算一份数据报的IP检验和,首先把检验和字段置为0然后,对首部中每个16位进行二进制反码求和(整个首部看成是由一串16位的字组成),结果存在检验和字段中当接收端收到一份IP数据报后,同样对首部中每个16 位进行二进制反码的求和由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报但是不生成差错消息,由上层去发现丢失的数据报并进行重传

  ICMPIGMPUDP和TCP都采用相同的检验和算法,尽管TCP和UDP除了本身的首部和数据外,在IP首部中还包含不同的字段由于路由器经常只修改TTL字段(减1),因此当路由器转发一份消息时可以增加它的检验和,而不需要对IP整个首部进行重新计算

  这两个选项较少使用,只有某些特殊的封包需要特定的控制才会利用到这些选项通常包括:

  ◆严格的源站选路:与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址

  以上这些选项很少被使用,而且并非所有的主机和路由器都支持这些选项

http://billsauctions.com/shujufengzhuang/801.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有