tcp校验和机制会一直正常工作吗?

时间:2014-06-24 01:40:10

标签: tcp checksum

我想知道TCP校验和机制是否可以确保TCP数据与原始数据相同,是否存在校验和不起作用的条件?我没有找到任何关于此的参考。

我有一个例子可以说明我的意见。

原始TCP数据为11111111 11111111 00000000 00000000 ......,在物理层上旅行时会更改为011111111 11111111 10000000 00000000 ......

结束方将具有相同的校验和,它将接受错误的TCP数据。

我对网络很陌生。

2 个答案:

答案 0 :(得分:2)

数据损坏总是很有可能保留校验和,或者也会破坏校验和,以便损坏的校验和与损坏的数据匹配。需要比TCP提供更高级别保证的应用程序必须添加自己的保护。

当然,这不会对恶意攻击者提供任何保护。如果他们可以拦截和修改数据包,他们可以轻松地调整数据和校验和。

答案 1 :(得分:1)

此处文章中的更多详细信息:http://criticalindirection.com/2016/02/22/tcp-checksum-the-fault-in-the-stars/

链接的一些摘录:

Following are the scenarios when the data gets corrupted while the checksum stays correct [2].

Reordering of 2 byte words:
Data:      0x01 0x02 0x03 0x04
Corrupted: 0x03 0x04 0x01 0x02

Inserting zero-valued bytes:
Data:      0x01 0x02 0x03 0x04
Corrupted: 0x01 0x02 0x00 0x00 0x03 0x04

Deleting zero-valued bytes:
Data:      0x01 0x02 0x00 00 0x03 0x04
Corrupted: 0x01 0x02 0x03 0x04

Replacing a string of sixteen 0’s with 1’s or 1’s with 0’s:
Data:      0xff 0xff 0xe9 0x1a 0x00 0x00 0x21
Corrupted: 0x00 0x00 0xe9 0x1a 0xff 0xff 0x21

Multiple errors which sum to zero:
Data:      0x01 0x02 0x03 0x04
Corrupted: 0x01 0x03 0x03 0x03
  根据Stone J.等人的说法。人。 [1],1 1600万到10亿   数据包通过TCP校验和取消选中为false-positive。这个   对于网络上的1500 MTU数据帧,表示1个未检测到的TCP   腐败发生在大约20GB到1.2TB的数据中。