问题标签 [network-protocols]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
17884 浏览

networking - 如何测量网络性能(如何对网络协议进行基准测试)

首先,有一点背景。分布式版本控制系统 (DVCS) 有许多不同的比较,它们比较存储库的大小或操作的基准速度。除了测量涉及“克隆”、“拉取”/“获取”或“推送”等网络的操作(命令)速度之外,我还没有找到任何可以对各种 DVCS 的网络性能和使用的各种协议进行基准测试的方法。

我想知道你会如何进行这样的比较;如何测量应用程序的网络性能,或如何对网络协议进行基准测试。我在这里设想还测量性能对网络带宽和网络延迟(ping 时间)的依赖性;一些协议以更多往返交换(协商)的形式牺牲延迟,以发送所需的最少最终“包”。

如果可能的话,我更喜欢只涉及一台计算机的解决方案。我希望看到在 Linux 上运行的开源解决方案。但我也欢迎更通用的答案。

首选操作系统: Linux
首选语言: C、Perl、shell 脚本


可能的测量:

  • 在一个会话中从服务器到客户端以及从客户端到服务器传输的总字节数;这也可以用来测量协议的开销(带宽)
  • 一个事务中的往返次数(连接)(延迟)
  • 网络运行速度(克隆/拉/推所需的时间)与网络带宽和网络延迟(ping 时间)的相关性

如何进行这样的测量(这样的基准)?


2009 年 2 月 6 日添加:
最简单的基准(测量)将是命令的网络版本time,即运行的命令会给我传输的字节数,以及执行给定命令期间的往返次数/网络连接数。


2009 年 9 月 6 日添加:上述网络版本命令解决方案的
示例time假想输出可能如下所示:

请注意,它只是一个示例输出,详细说明了人们可能想要获得的信息。


添加了 09-06-2009:
看起来我想要的一些东西可以使用 dummynet 来实现,工具(最初)用于测试网络协议......

0 投票
1 回答
1978 浏览

authentication - Kerberos 的感知/实际优势是什么?该技术是否有任何可行的替代方案?

我们计划在我们的架构中使用 kerberos。我想知道这项技术有哪些感知或实际优势,以及是否有任何替代方案。

请注意,我们有一个 .net 客户端和 java 服务器端。通信将通过消息总线和 SOA

0 投票
5 回答
390 浏览

tcp - 通过 tcp 连接打开优化协议打开操作

我正在设计一个名为 DITP 的新协议。它是一种面向连接的协议,将使用 TCP 作为传输层。使用常见的 Internet 协议,当 TCP 连接建立时,服务器首先发送问候消息给客户端响应,最终发送它的第一个请求。

我发现我可以通过反转初始协议事务来节省一次往返时间。客户端首先发送问候语,然后是第一个请求。

下图显示了两种协议事务时间之间的比较,以及它如何节省一个往返时间。

常用协议和DITP协议比较
(来源:disnetwork.info

您可能需要阅读以下博客注释以获得更详细的说明。 http://www.disnetwork.info/1/post/2008/08/optimizing-ditp-connection-open.html

我有两个问题要问 StackOverflow 的网络编程专家:

  1. 这个假设正确吗?

  2. 为什么通用协议不使用这个?

这种方法可以为通信延迟高且需要频繁建立连接的长距离连接提供显着的性能优化。HTTP 本来是一个不错的选择。

编辑:哎呀大错误。HTTP 使用客户端直接发送请求的优化方法。没有与 SMTP 一样的问候事务。请参阅 Wikipedia超文本传输​​协议页面。

0 投票
4 回答
5689 浏览

dns - 执行直接 DNS 查找的代码

我正在考虑进行一个实验,以不同的方式跟踪 DNS 值(比如它们多久改变一次等等)。为此,我需要能够直接向服务器发出 DNS 请求,以便 1)我知道它来自哪个服务器,2)我可以请求来自多个服务器的响应,以及 3)我可以避免本地操作系统运行缓存.

有谁知道可以让我直接查询 DNS 服务器的库(按优先顺序排列的 C#、D、C、C++)?如果做不到这一点,有没有人知道我可以从中实现这样一个系统的 DNS 协议的易于理解的描述?

0 投票
5 回答
10087 浏览

client-server - 半条命 2 多人游戏协议如何运作?

我想知道半条命 2 多人游戏协议如何在反恐精英:来源或失败之日:来源等模组中发挥作用。我相信他们使用了某种混淆和专有压缩算法。我想知道不同类型的消息是如何编码在一个数据包中的。

0 投票
2 回答
284 浏览

networking - BGP 路径属性类型 18 指的是什么?

有谁知道 Path Attribute Type 18 指的是什么以及如何解析它?我能理解的最好的是它是一个新的 AGGREGATOR(类型 7),我假设它正在读取新的 AS32 格式,但这并没有削减它,因为我无法解析这个数据包。是否有描述其工作原理的 RFC……是 CISCO 或其他网络供应商引入的特殊内容吗?

0 投票
11 回答
20134 浏览

networking - 我怎样才能真正学习低级网络编程?

所以我想了解所有关于网络的知识。远低于套接字,一直到原始套接字和其他东西。而且我想了解集线器、路由器、接入点等。例如,我希望能够编写自己的软件来做这类事情。*这类信息有很好的来源吗?

我知道我在这里问了很多,而要完全解释这一切需要从高层次到低层次。我想我正在寻找与Applied Cryptography的范围和深度相似的来源,但与网络有关。

感谢任何可以帮助指出我(以及像我一样的人?)正确方向的人。

* 是的,我意识到使用任何我手工制作的网络堆栈代码都会是一个巨大的安全问题,我只是想学习一下 :)

类似的问题:这里。但是,我寻找的不仅仅是“TCP/UDP 套接字下面有什么?”。

为澄清而编辑:我所说的深度高于驱动程序级别。因此,假设这些位可以进出电线的另一端,接下来呢?

0 投票
2 回答
1962 浏览

c++ - inet_addr 函数和前导零

我正在尝试使用该inet_addr函数来转换字符 IP 地址,但我认为由于我传递给 'inet_addr' 函数的 IP 地址具有前导零(192.169.055.075),因此 'inet_addr' 函数对此的解释不同。关于如何删除前导零的任何建议?

谢谢

0 投票
3 回答
22236 浏览

network-protocols - 网络上的大端还是小端?

网络上的数据传输以什么字节顺序发生?是小端还是大端?数据到达主机后如何转换为相应的字节顺序?

0 投票
1 回答
218 浏览

windows - 在 Vista 上创建异步可插拔协议时出现问题

我创建了一个用于创建 dzone 协议的教程(例如,我可以在 firefox 中键入 dzone:n 以获取新链接),它工作得很好,但最后我想创建一个新的别名协议 dn 指向同一个处理程序,Vista 不想采用这条新路径,尽管注册表项是好的(我通过将 dn 重命名为 dzone 来检查)。

请参阅此处的教程: [ http://reboltutorial.com/blog/dzone-protocol/]

仅在 Vista 上的 Windows XP 中不会出现此问题