tcp - TCP 校验和

标签 tcp network-programming checksum crc

TCP 是否不负责通过在传输过程中发生丢失等情况时采取任何可能必要的措施来确保通过网络完整地发送流?

它做的不对吗?

为什么更高的应用层协议(protocol)及其应用程序仍然执行校验和?

最佳答案

虽然 TCP 确实包含自己的校验和,但它只是一个 16 位校验和,而且 TCP 校验和机制肯定有可能漏掉多位传输错误。这种情况很少见,但仍有可能发生,事实上我已经看到它发生了(几十年一两次)。

健壮的协议(protocol)会希望使用更高级别的哈希函数来确保传输数据的完整性。话虽如此,传输少量数据的应用程序并不多。批量传输应用程序(例如包管理器或自动更新机制)通常会使用加密哈希函数来提高数据完整性的保证。

关于tcp - TCP 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494416/

相关文章:

session - Golang - 过滤事件 SSH session 的标准输出

c - 如何禁用 DST_METRIC_READ_ONLY 内核 3.0.26

c - unix域套接字编程

c# - C# 和 PHP 中的不同 MD5 文件哈希

encryption - 创建一个小的(<10 位)、不(非常)安全的 "hash"的想法

pcap_loop 的最后一个参数中的编译器警告。指向不同大小的整数

tcp - 创建一个监听端口的简单 Rust 守护进程

c# - NetworkStream.Write 阻塞到什么时候?

c++ - 从套接字返回的文件描述符大于 FD_SETSIZE

git - Git 如何计算文件哈希值?