java - 使用java sockets时是否保证数据有效性?

标签 java validation sockets tcp corruption

注意:我主要关心数据的有效性而不是真实性,即我关心数据是否由于传输错误而损坏,但不太关心恶意用户是否尝试更改数据包并将其重新传输到原始预期方(类似于 MITM 攻击)。

我最近正在构建一个基于 TCP 的网络协议(protocol)(特别是使用 java 的 SocketServerSocket),我遇到了一个关于如何从中传输可靠数据的小问题使用 TCP 从 A 点到 B 点。

我现在主要关心的是是否要在我的自定义数据包结构的有效载荷(可能还有 header )数据中包含一个 SHA-2 哈希。通过一些研究,我发现 TCP 确实有自己的 ECC,但我也听说它不是特别“强”。

由于 java 的 Socket 是基于 TCP 架构的,我的问题是:

  1. Socket 类是否保证有效(未损坏/丢失)数据(至少可以确定我不需要包括我自己的数据校验和)?

  2. 当数据通过 TCP 连接发送时,java 本身(通过任何 java 代码基础设施)是否为数据提供额外验证(通过普通旧 TCP)?

    <

最佳答案

  1. TCP 就是这样做的。与 Socket 类无关。

  2. Java 不会在 TCP 的基础上添加任何内容。

关于java - 使用java sockets时是否保证数据有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214781/

相关文章:

javascript - 如何将 Socket.io 配置为在 https 上的同一端口上运行?

java.time : Compare two Instants - get the number of hours, 两者之间的分、秒、年、月

java - 我无法解释 System.in.read() 行为

C# 验证特定输入

sockets - Debian - 每个用户的默认 IP?

linux - 短缺时间内缓冲 UDP 数据包

java - OnLowMemory 被调用

java - 为什么我们使用byte来读取二进制数据

c# - 使用 ValidationException 类

asp.net-mvc - 使用数据注释验证ASP.NET MVC 2中的SelectList