相关疑难解决方法(0)

什么是SO_SNDBUF和SO_RECVBUF

你能解释一下究竟是什么SO_SNDBUFSO_RECVBUF选择吗?

好的,由于某种原因,操作系统会缓冲输出/输入数据,但我想澄清这个问题.

他们的角色(一般)是什么?

它们是每插槽缓冲区吗?

传输层的缓冲区(例如TCP缓冲区)和这些缓冲区之间是否存在连接?

使用流套接字(TCP)和使用无连接套接字(UDP)时,它们是否具有不同的行为/角色?

一篇好文章也会很棒.

我搜索了它,但没有找到任何有用的信息.

sockets windows network-programming

28
推荐指数
4
解决办法
5万
查看次数

ARP超时.为什么固定周期?

这个人多年来一直困扰着我.

基本的问题:是有一些原因ARP 具有与在ARP缓存条目固定超时来实现?

我在Real Time中做了很多工作.如今,我们在专用的UDP/IP链路上进行大部分的系统间通信.这在大多数情况下可以在实时中可靠地工作,但是对于一个nit:ARP输入超时.

典型实现ARP的方式如下:

  • 当客户端要求将IP数据包发送到具有未知MAC地址的IP地址时,堆栈不会发送该IP数据包,而是发出ARP请求.如果上层(TCP)确实重新发送,则没有问题.但由于我们使用UDP,原始邮件将丢失.在启动时,这是可以的,但在操作过程中,这是一件坏事 ™.
  • (动态)ARP表条目会定期从ARP表中删除,即使我们只是在几毫秒之前从该系统获得了一个数据包.这意味着Bad Thing™定期发生在我们的系统中.

显而易见的解决方案(我们使用宗教)是使所有ARP条目保持静态.然而,这是一个皇家PITA(特别是在RTOS上,找到一个接口的MAC地址并不总是一些简单的GUI点击).

当我们编写自己的IP堆栈时,我通过永远(永远)超时ARP表条目解决了这个问题.这有明显的缺点.一个更健壮且完全合理的解决方案可能是每当看到来自相同MAC/IP组合的数据包时刷新进入超时.这样一个条目只有在这段时间内没有与堆栈通信时才会超时.

但现在我们正在使用我们供应商的IP堆栈,我们又回到了愚蠢的ARP超时.我们对这家供应商有足够的影响力,我或许可以让他们使用不那么不方便的方案.然而,这种脑死亡超时算法的普遍性使我相信它可能是实现的必要部分.

这就是问题所在.这种行为是否需要某种程度?

udp real-time arp

5
推荐指数
1
解决办法
7627
查看次数

标签 统计

arp ×1

network-programming ×1

real-time ×1

sockets ×1

udp ×1

windows ×1