如果我有一个Javascript应用程序并行打开2个websockets,它们都在同一个端口上的同一个主机:
var socket1 = io.connect(host);
var socket2 = io.connect(host);
Run Code Online (Sandbox Code Playgroud)
然后我将每个数据发送到应用程序中的相同功能:
socket1.on("data", function(e) {doStuff(e);});
socket2.on("data", function(e) {doStuff(e);});
Run Code Online (Sandbox Code Playgroud)
每个套接字是否只对自己强制执行有序属性,还是对整个应用程序强制执行?例如,如果发送到socket1的数据包丢失,socket2是否仍然能够接收和处理未来的TCP数据包而无需等待重新传输数据包到socket1?
所以我在通过C++中的客户端 - 服务器程序发送和接收自定义数据包时遇到了一些麻烦.我已经使用TCP实现了类似的功能,但是在使用UDP时,我遇到了将所有内容转换为单个数据报的问题.
目前我的头部由偶数个uint32_t字段组成.其中每个都以网络顺序存储,如下所示:
uint32_t x = htonl (int y);
Run Code Online (Sandbox Code Playgroud)
...
我正在将报头与数据包中的有效负载结合起来,如下所示:
typedef struct {
450Header header; // 512 bytes consisting of the unint32_t like above
char data[ BLOCKSIZE ]; // 3.5k
// Total Packet Size = 4k
} Packet;
Run Code Online (Sandbox Code Playgroud)
"
标题部分将包含有关数据包的信息,我的问题是如何处理字符串和有效负载的字节顺序.我非常喜欢一些字符串字段添加到搞什么名头,如果我派比数据包中的块大小,我想它分成多个包大的文件,我需要知道如何分割文件,因此可以按正确的顺序解释接收端.
我已经成功地独立构建了一个标题(所有字段都按网络字节顺序排列),如果我将它们添加到标题中,是否还需要转换字符串的顺序?我假设如果我将字符串保持在设定的大小,我仍然可以为标题编写校验和函数.
如果从问题1中正确排序所有内容,我是否需要在接收端再次将它们转换回主机订单?
我有一个mmap函数,它将文件加载到char缓冲区中,我可以简单地使用memcpy和递增偏移量这样一块一块地复制到Packet中的数据缓冲区吗?或者我是否还要担心有效载荷数据的网络顺序?
我是否需要对有效负载使用校验和?如果它不使用整个缓冲区并以奇数个字节结束,我该怎么办呢?
最后,我想报头包含序列号,所以我可以练习执行程序,如果数据包被丢弃(即回N),所以我现在最担心的是规范中,一切都从客户端发送的,因此它可以被理解的顺序在服务器端以正确的顺序.
我为商城制作了一些广告软件,它有一堆客户端(屏幕)和一个服务器,他们从中获取内容.到目前为止,它一直在一个单独的局域网内工作,所以安全性甚至没有超出我的想法,但他们问我是否可以通过互联网使其易于管理.
我试着想出一个合理的解决方案,比如Plan A
但后来我开始思考,发送另一把钥匙是什么意思?如果有人观察流量可以找出我正在使用的算法,那么如果他们可以根据原始的未加密密钥对它们进行解码,那么我发送的加密密钥数无关紧要.
B计划
停在那里,然后它只是一个固定的消息,将授予访问权限
计划C.
很好,除了它仍然遭受计划A的问题,并带来进一步的问题,如如果客户端通信在发送登录后立即切断并且没有获得新密码...
无论我以哪种方式看待它,如果解密算法是图形可行的,那么安全性就有一个漏洞.
好的计划D!
点是,原始密钥永远不会通过网络发送.
好吧..这个似乎有效.显然任何东西都可以被花费足够的时间来攻击,但也许它足以使它不值得.问题是,这个有点笨重,客户端的每次安装都需要手动输入密钥.它最有可能是漫长而复杂的,你是一般的懒人,可能只是通过邮件发送它... meh,目的失败了.
我不知道该做什么.如果我可以获得与您运行的工厂登录类型网站(例如此类网站)相同的安全级别,那对我来说没问题.他们如何使用用户+密码处理它?
我需要一些帮助来指导特定IP的netem延迟.我已正确输入所有命令,没有任何错误,如附图所示.我的速度测试没有延迟.有关使用命令时的更多信息:"tc qdisc add dev eth0 root netem delay 100ms"延迟添加完美无缺.我究竟做错了什么 ?
PS我是使用TC和NETEM的初学者,所以如果有任何解决方案请在解释时请仔细阅读.
以下是一些屏幕截图,可以更好地理解我的问题:
http://postimg.org/image/k9pu6uhxv/ http://postimg.org/image/tis0gyqtv/
是否可以使用Directory.GetFiles()访问网络文件夹,我通常必须在通过资源管理器打开时输入我的凭据?
我在traceroute手册页上看到类似的输出,但我一直很好奇为什么ping时间在跳跃之间?即,我总是希望值从一跳到另一跳递增:
[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 …Run Code Online (Sandbox Code Playgroud) 所以我想从套接字读取,但它没有给我任何东西,我是java网络的新手,所以请帮助我,它不会给我任何错误,但不会给我任何客户端套接字的输出..这是一个源代码:
ServerSocket server = new ServerSocket(4444);
Socket client = server.accept();
PrintWriter out = new PrintWriter(client.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String inputline = in.readLine();
while(inputline != null)
{
System.out.println("recieved "+inputline);
}
out.close();
in.close();
server.close();
client.close();
Run Code Online (Sandbox Code Playgroud) 我想更改MTU(最大传输单元)内docker,其在Ubuntu 14.04上运行.还有使用ubuntu 14.04运行的docker容器.
问题是它docker0在主机操作系统上的接口可以将MTU值从1500改为9000,但它不会影响docker os内部.意味着在docker内部运行时使用较旧的值,即1500.当我在主机上重新启动docker服务时,所有更改都将变为默认值.
我也尝试过使用新界面创建桥接连接,但是当我将界面连接到整个网络并且不再工作时.
帮助将受到高度赞赏
networking ×10
sockets ×3
linux ×2
c# ×1
c++ ×1
cryptography ×1
docker ×1
encryption ×1
ethernet ×1
io ×1
java ×1
javascript ×1
security ×1
tcp ×1
traceroute ×1
ubuntu ×1
ubuntu-14.04 ×1
udp ×1
websocket ×1