您的位置:首页 > 理论基础 > 计算机网络

When the CRC and TCP checksum disagree

2015-10-21 20:26 726 查看
文章引用

Stone J, Partridge C. When the CRC and TCP checksum disagree[C]//ACM SIGCOMM Computer Communication Review. ACM, 2000, 30(4): 309-319.

文章链接

http://dl.acm.org/citation.cfm?doid=347057.347561

【文章简介】

文章比较详细的介绍了网络中常用的校验和和CRC校验,并通过实际抓取不同类型网络下的数据包,观察数据包的corruption情况。利用TCP的重传机制,对比重传前后的数据包,分析出现corruption的原因,并给出了corruption出现的几率,以及发生corruption而检验和并没有检测出该数据的几率。下面给出详细的介绍。
【CRC和校验和的简单介绍】

CRC校验一般用于数据链路层,可以检测出连续32bit数据中的任意错误,以及在2048bit内的2比特错误。在数据随即分布的情况下,发生错误而CRC-32校验通过的概率仅为1/2^32,即4×10^9.

校验和(16位)被利用在IP协议、ICMP协议、UDP以及TCP协议中。校验和能发现任意连续15bit的错误,以及16bit下除0x00->0xFF和0xFF->0x00的错误外的全部错误。在数据随即分布的情况下,发生错误而通过校验的概率为1/2^16.但实际上,因为数据分布的不均匀,校验和(16bit)的校验功能仅相当于10bit的CRC校验。
【实验设置】

文章通过在实际网络中抓取数据包,包括在部分网络抓取仅发生corruption的数据包,以及一些网络站点抓取全部数据包。抓取数据包的对象包括:

校园网(Campus: Next to the router of the computer science build- ing at Stanford University. This data set was taken over one week during a term in 1999.)

宿舍网(Dorm: On a broadcast-Ethernet (10base2) LAN in a Stan- ford University residential dormitory. This data set was taken over the course of three months during a term in 1999.)

实验室(DoE-Lab: At the firewall of Lawrence Berkeley National Laboratory. This data was provided by Vern Paxson and represents four distinct data sets taken at different times on several days in late 1998. This dataset is a trace of inbound traffic only.)

网络爬虫(Web-Crawl: A trace taken at 10Mbit Ethernet hub con- nected to a web spider, which walked approximately 15 million URLs over the course of two days of tracing in May 2000.)

实验数据的分析利用文章自行编写的软件实现。为了探究数据包具体出现了何种类型的错误,作者分析了TCP的数据包(TCP有重传机制)

【实验结果】

不同网络下数据包出错的概率明显不同,需要说明:

1. DORM的IP数据包错误率比较高,是因为DORM是一个层级比较少的网络,检测软件更容易检测到IP检验和错误,而在其他类型的网络下,IP检验和错误的数据包很可能直接被路由器丢弃。

2. WEB-Crawl部分错误率主要为TCP,是因为网络上的站点(服务器)普遍使用TCP协议,且服务器存在ACK-of-FIN的Bug

3. 在Campus网络下,UDP数据包错误的几率很高
【错误原因分析】

经过分析,主要的错误来自于网络上的硬件错误;部分来自软件错误,包括ACK-of-FIN等错误,错误的主机、路由器错误以及链路层错误等。

(经过实际测试,数据链路层利用CRC对数据包进行校验,而实际通过CRC校验的数据包仍然有1/7500的概率不能通过TCP/UDP的数据校验)

【数据校验的可靠性】

不同的网络环境下,数据包的corruption的概率相差较大,一般在0.00075~0.0017%之间。而部分主机则相当于“bad apple”,这些“bad apple”可能没几分钟就会出现一个corrupted packet通过校验。而网络中一般主机的情况相对较好,出现corrupted而通过校验的概率在10e^-9到10e^-6之间。

经分析,数据包发生corruption而通过校验的概率在1/65536~1/1024之间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: