为什么UDP在标头中有长度字段而TCP没有?
我猜测TCP中的段的长度是从IP头推断的,但是对于UDP数据报应该能够做同样的事情.
我正在试图弄清楚如何计算Java中的Internet Checksum,这让我无法忍受痛苦.(我在位操作方面很糟糕.)我在C#中找到了一个版本在C#中计算一个Internet(又名IP,即RFC791)校验和.但是,我尝试将其转换为Java并不会产生正确的结果.谁能看到我做错了什么?我怀疑是数据类型问题.
public long getValue() {
byte[] buf = { (byte) 0xed, 0x2A, 0x44, 0x10, 0x03, 0x30};
int length = buf.length;
int i = 0;
long sum = 0;
long data = 0;
while (length > 1) {
data = 0;
data = (((buf[i]) << 8) | ((buf[i + 1]) & 0xFF));
sum += data;
if ((sum & 0xFFFF0000) > 0) {
sum = sum & 0xFFFF;
sum += 1;
}
i += 2;
length -= 2;
} …Run Code Online (Sandbox Code Playgroud) 是否可以在单个IP数据包上发送多个tcp或udp数据包?协议中是否有任何规范不允许这样做.
如果协议允许但通常不是通过tcp/udp实现,你可以指向linux源代码中的相关部分来证明这一点.
在某个操作系统上是否有任何tcp/udp实现,它们会在单个IP数据包上发送多个数据包.(如果允许的话).
我正在研究网站测试框架,我希望能够欺骗用户ip.我已经读过,像Loadrunner这样的软件可以做到这一点,我也希望能够做到这一点.
关于如何正常使用套接字的教程可以在这里找到,但是如果我想欺骗ip,我将不得不以某种方式编辑ip头.这是在套接字级别完成的,还是在.Net中还有其他更深层次的,这可以让我这样做?
在谈论UDP时,我看到/听到拥塞几次.那是什么意思?
在IP封装中甚至有IP 标准.这里的用例是什么?我可以理解像TCP over DNS这样的东西,其中IP可能不可用,但如果你可以在IP中做IP,你不能简单地做常规IP吗?
我正在寻找为什么碎片在IP级别完成的原因,但为什么不在TCP/UDP上.
假设我的框架看起来像这样| MAC | IP | TCP |有效载荷| FCS.整个大小,如果说例如:1600.PathMTU发生在这里,为什么实现碎片@ IP级别是我的问题,为什么没有实现@ TCP/UDP级别/代码.
预先感谢.
ip-protocol ×7
networking ×3
tcp ×3
udp ×3
c# ×1
c++ ×1
checksum ×1
header ×1
java ×1
sockets ×1