3

在接口级别,DCCP 类似于 TCP:您连接然后发送/接收字节。

我想知道是否可以通过仅调整 tcp 的包装器来扭曲 dccp 连接...

根据示例代码(如下),需要更改的是:

  • 在套接字实例化时:使用不同的参数
  • 在使用套接字之前:设置一些选项

那么其他一切都将是一样的......

提示:我已经发现addressFamilysocketType扭曲的来源,但我不知道如何在协议工厂中干净地设置它们。此外,协议号,这里的第三个参数,IPPROTO_DCCP始终保持默认值。我也不知道如何访问要调用的套接字setsockopt

import socket

socket.DCCP_SOCKOPT_PACKET_SIZE = 1
socket.DCCP_SOCKOPT_SERVICE     = 2
socket.SOCK_DCCP                = 6
socket.IPPROTO_DCCP             = 33
socket.SOL_DCCP                 = 269
packet_size                     = 256
address                         = (socket.gethostname(),12345)

# Create sockets
server,client = [socket.socket(socket.AF_INET, socket.SOCK_DCCP,
                               socket.IPPROTO_DCCP) for i in range(2)]
for s in (server,client):
    s.setsockopt(socket.SOL_DCCP, socket.DCCP_SOCKOPT_PACKET_SIZE, packet_size)
    s.setsockopt(socket.SOL_DCCP, socket.DCCP_SOCKOPT_SERVICE, True)

# Connect sockets
server.bind(address)
server.listen(1)
client.connect(address)
s,a = server.accept()

# Echo
while True:
    client.send(raw_input("IN: "))
    print "OUT:", s.recv(1024)

有关 DCCP 的更多信息: https ://www.sjero.net/research/dccp/ https://wiki.linuxfoundation.org/networking/dccp

TL;DR:dccp 是一种提供拥塞控制(如 tcp)但不保证数据的可靠性或按顺序交付(如 udp)的协议。标准的 linux 内核实现了 dccp。

4

0 回答 0