标签: network-protocols

如何将单个字节放入网络字节顺序?

所以我有变量:

uint8_t version = 1;
uint8_t ttl = 1;
uint16_t payload_length = 
uint32_t account_identifier = 24027;
uint32_t source_address = 0;
uint32_t destination_address = 0;
uint16_t checksum = 0;
uint16_t protocol = 1;
Run Code Online (Sandbox Code Playgroud)

我想按网络字节顺序排列所有值。

我知道用于htons()16 位值和htonl()32 位值。

所以我会这样做:uint32_t source_address = htonl(0);并且uint16_t checksum = htons(0);

8 位值应该使用什么?

c byte network-programming network-protocols bit

2
推荐指数
1
解决办法
1588
查看次数

如何使用 scapy 创建新层或新协议?

我想使用 scapy 创建一个新层。我创建了一个新图层,但是当我将其发送到另一台计算机时,它丢失了,Wireshark 也无法识别它。我怎么解决这个问题?

class OMER(Packet):
    name = "OMER"
    fields_desc = [StrLenField("Omer", "", None)]
Run Code Online (Sandbox Code Playgroud)

python network-protocols layer scapy python-3.x

2
推荐指数
1
解决办法
7041
查看次数

为什么 ::1 不匹配 127.0.0.1?

IPv6 格式的环回 IP 地址为: 0000:0000 : 0000 :0000 : 0000:0000: 0000:0001

缩写为: 0:0: 0 :0 : 0:0: 0:1

然后缩短为(保留最后 2 个单词,即 4 个字节,以匹配 IPv4): :0:1(但我仍然不知道为什么它在 1 之前是双冒号而不是单冒号,也许是为了暗示有这里4个字节)

并简化为::: 1

将::1展开为IPv4格式,即: 0.0.0.1

但这与127.0.0.1不一样,数字 127 在哪里?

ip loopback network-protocols ipv4 ipv6

2
推荐指数
1
解决办法
1459
查看次数

TCP FIN 字节值?

我的问题实际上分为两部分:

从发送者的角度来看,

  1. 除了 TCP 标头 FIN 标志之外,TCP 层是否真的在流中注入(或者更像附加,因为它应该位于流的末尾)一个人工字节,这意味着该字节是 TCP 有效负载的一部分?
  2. 如果是的话,这个字节的值是多少?

从接收者的角度来看,

  1. TCP 层和应用程序都需要知道这个 FIN 标志/字节。那么TCP层是不是只看FIN标志,而不对流中的字节进行特殊处理呢?
  2. 申请如何通知?通过 FIN 标志,或者通过流中的这个特殊字节?
  3. 申请什么时候通知?就在 TCP 层接收带有 FIN 标志的段时,或者当该段最终在接收者的 TCP 缓冲区中冒泡时?
  4. 如果应用程序在具有 FIN 标志的段最终在 TCP 缓冲区中冒泡之前没有收到特殊通知,则意味着 TCP 层必须以某种方式标记缓冲区,因为 TCP 标头应该已经被剥离。那么FIN是如何标记的呢?

c networking network-programming tcp network-protocols

2
推荐指数
1
解决办法
556
查看次数

C# 检测本地主机端口使用情况

在此先感谢您的建议。

我目前正在开发一个程序,该程序使用 Putty 创建与服务器的 SSH 连接,该服务器使用本地端口转发使运行我的软件的客户端能够通过本地主机访问 SSH 服务器后面的服务。

IE:客户端:20100 -> Internet -> 通过路由器/防火墙暴露的远程 SSH 服务器 -> 本地内网 -> 内网 Web POP3 服务器:110。

Cmd 行:“putty -ssh -2 -P 22 -C -L 20100:inranteIP:110 -pw sshpassword sshusername@sshserver”

客户端将使用 putty 创建与 SSH 服务器的 SSH 连接,并在连接字符串中指定它要将 Intranet POP3 服务器的端口 110 绑定到客户端系统上的端口 20100。因此,客户端将能够打开一个到 localhost:20100 的邮件客户端,并通过 SSH 隧道与内部 POP3 服务器交互。以上是一般的描述。我已经知道我正在尝试做的事情会毫无问题地工作,所以我不想就上述问题进行辩论。

问题是...如何确保本地主机上的本地端口(我不能使用动态端口,因此它必须是静态的)未被任何其他应用程序使用或侦听?

我目前正在我的 C# 应用程序中执行此代码:

private bool checkPort(int port)
{
    try
    {
        //Create a socket on the current IPv4 address
        Socket TestSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        // …
Run Code Online (Sandbox Code Playgroud)

networking network-programming network-protocols c#-4.0

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

在python中计算IP校验和

我需要计算IP数据包的校验和,如http://www.faqs.org/rfcs/rfc1071.html中所述.

我已经有以下代码:

#!/usr/bin/python
import struct

data = "45 00 00 47 73 88 40 00 40 06 a2 c4 83 9f 0e 85 83 9f 0e a1"

# a test for the checksum calculation

def _checksum(data):
    #calculate the header sum
    ip_header_sum = sum(struct.unpack_from("6H", data))
    #add the carry
    ip_header_sum = (ip_header_sum & 0xFFFF) + (ip_header_sum >> 16 & 0xFFFF)
    #invert the sum, python does not support inversion (~a is -a + 1) so we have to do
    #little trick: …
Run Code Online (Sandbox Code Playgroud)

python checksum network-protocols

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

tcp/ip堆栈如何在linux中获取net_device接口

我正在阅读网络设备驱动程序代码.我的驱动程序遵循driver-model.REF:kernel/Documentation/driver-model.通过interface.txt读取:{Device interfaces是设备类的逻辑接口,直接与用户空间接口相关,如设备节点.每个接口都在其所属的设备类的目录中被赋予一个目录.}

还没有能够确切地确定接口.所以在通过struct net_device和interface.txt文件中的Programming接口(kernel./Documentation/driver-model)后,我再次得出结论,这些人的net_device是谈论.现在我想知道的是TCP/IP堆栈物理和链路层是网络驱动程序.我想给我的网络驱动程序提供给我的tcp/ip堆栈的接口.问题是如何?如何将net_device结构提供给TCP/ip堆栈.有谁知道这件事.关心Sraddha

.

networking network-protocols linux-device-driver

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

基于协议(UDP,TCP等)在Linux上模拟丢弃的数据包

我知道我可以使用tc和netem来做

tc qdisc add dev eth0 root netem loss 50%
Run Code Online (Sandbox Code Playgroud)

这将在所有eth0流量中丢弃50%的数据包.但是,我想指定一个协议(UDP,TCP等),因此只会删除此协议的数据包.

linux udp throttling network-protocols

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

替代Kafka over HTTP协议

您可能知道Kafka在应用层使用二进制协议通过网络传输消息,这种未知协议在高度安全的网络中存在问题.是否有任何消息代理工具可以替代Kafka over HTTP协议?

我们的任务是通过MAN网络将数据从多个来源发送到单个目的地.

基于开源和基于Java的解决方案是首选.

先感谢您.

java http network-protocols messagebroker apache-kafka

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

WebSocket分段和TCP分段之间有什么区别?

我正在阅读有关Websocket的信息,我看到该协议具有数据碎片(帧),WebSocket消息由一个或多个帧组成,但这不是TCP(数据碎片)做什么?我糊涂了。

tcp protocols network-protocols websocket

1
推荐指数
2
解决办法
1053
查看次数