小编Vij*_*ogi的帖子

TCP 中的数据包大小、窗口大小和套接字缓冲区

在研究了“窗口大小”概念之后,我了解到它在通过线路发送之前保留数据包,直到收到最早的数据包的确认为止。一旦填满,后续数据包将被丢弃。我还在某处读到TCP是一种流协议,而数据包是与网络层的IP协议相关的。

直到我假设我已经声明了一个缓冲区(内部代码),我填充了一些数据并使用套接字发送该缓冲区。我声明了一个 10000 字节的缓冲区,并使用套接字通过 10 Gbps 链路重复发送它。

我有以下假设和问题。请核实并帮忙

  1. 如果我想发送 64,256,512 等字节的数据包,请在那么多空间的代码内声明缓冲区并通过套接字发送。每次执行 send() 命令都会发送一个同样大小的数据包。

  2. 那么,如果我想研究数据包大小变化对吞吐量的影响,我该怎么办?我需要改变代码中的缓冲区大小吗?

  3. 我们使用 SO_SNDBUF 和 SO_RECVBUF 设置的套接字缓冲区是什么?谷歌说这是套接字的缓冲区空间。它与 TCP 窗口大小相同还是不同?哪个参数更适合改变或增加吞吐量?

套接字缓冲区中还有三个参数:Min、Default 和 Max。我应该根据我的实验改变哪一项以获得更多相关性?

sockets tcp

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

ls.cc 文件中有错误?

安装时出现以下错误

\n\n

在文件中包含来自linkstate/ls.cc:67:0:

\n\n
linkstate/ls.h: In instantiation of \xe2\x80\x98void LsMap<Key, T>::eraseAll() [with Key = int; T = LsIdSeq]\xe2\x80\x99:\nlinkstate/ls.cc:396:28:   required from here\nlinkstate/ls.h:137:58: error: \xe2\x80\x98erase\xe2\x80\x99 was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]\n  void eraseAll() { erase(baseMap::begin(), baseMap::end()); }\n                                                          ^\nlinkstate/ls.h:137:58: note: declarations in dependent base \xe2\x80\x98std::map<int, LsIdSeq, std::less<int>, std::allocator<std::pair<const int, LsIdSeq> > >\xe2\x80\x99 are not found by unqualified lookup\nlinkstate/ls.h:137:58: note: use \xe2\x80\x98this->erase\xe2\x80\x99 instead\n
Run Code Online (Sandbox Code Playgroud)\n\n

make: *** [linkstate/ls.o] Error 1 …

ns2

3
推荐指数
1
解决办法
2468
查看次数

ADA95中的地址绑定?

我们实时开发使用ADA语言(ADA95).我们面临着地址绑定机制的问题.在我们使用ADA83之前,其中直接机制是
用于16#12345678#的x;

将地址16#12345678#分配给变量x;但在ADA95中不支持此语法.分配的其他方法是声明变量记录.然后创建一些系统包的对象然后传递地址.这对于想要处理单个变量非常麻烦.此方法仅适用于具有连续存储位置的多个变量,因此您可以为第一个分配地址,其余部分将自动对齐.

 TYPE SIU_Type IS                       
  RECORD
   SIU_Reserved0  : GLOBAL_TYPE.ORDINAL;
   MIDR           : GLOBAL_TYPE.ORDINAL;
   SIU_Reserved00 : GLOBAL_TYPE.ORDINAL;


  END RECORD;

  package SIU_Conv is new System.Address_To_Access_Conversions(SIU_Type);
  SIU : constant SIU_Conv.Object_Pointer := SIU_Conv.To_Pointer(SIU_Address);
Run Code Online (Sandbox Code Playgroud)

在我们的项目中,我们在许多需要地址分配的地方使用变量,但第二种方式非常简单,并且使代码非常复杂.

如果有的话,Plaese建议任何其他方式.

ada memory-address

0
推荐指数
1
解决办法
108
查看次数

标签 统计

ada ×1

memory-address ×1

ns2 ×1

sockets ×1

tcp ×1