Questions tagged «networking»

使用此标记可引用与网络硬件和软件相关的任何主题。请勿在社交媒体之类的个人网络中使用该标签。

6
插座和端口之间的区别
有人可以很清楚地解释一下端口和套接字之间的区别。我知道端口充当应用程序进程进入网络的大门,并且应用程序进程使用与给定端口号的套接字连接来处理网络通信,但是当您有多个进程在侦听单个端口号时,我发现很难理解插座和端口之间的区别以及它们如何装配在一起。

9
我可以安全地忽略网络中的字节顺序吗?
我正在开发服务器-客户端应用程序,其中客户端将在Windows上运行,服务器可能在Linux上运行。也许以后再将客户端移植到Mac和Linux,但还没有。 如今,所有家用计算机都在低端字节序上运行。我用Google搜索了一会儿,但是我真的找不到运行在big-endian上的设备列表。据我所知,有些摩托罗拉芯片仍使用大端字节序,也许还有一些手机(我不打算将应用程序移植到智能手机上,所以这对我来说无关紧要)。那么,为什么我会重新安排每一个整数,每次短,每一个浮动的字节双,等等,对阅读和写作的时候我已经知道,关于小端两种,服务器和客户端运行? 那只是不必要的工作。因此,我的问题是:我可以安全地忽略字节序,而只发送低字节序数据吗?缺点是什么?

4
程序员如何利用网络在60年代和70年代共享昂贵的计算机资源?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我还很年轻,在60年代和70年代还没有活着,无法像以前那样体验网络和编程。我一直在观看Van Jacobson关于内容中心网络的一些演讲,他在这些演讲中提供了历史观点,指出在60年代和70年代,网络旨在解决资源共享问题,例如访问稀缺的读卡器。或高速磁带机。然后,他继续说,这个时代的数据很少,而且数据“不存在于计算机上”,这是您随身携带的东西,例如在磁带或打印输出上。 我对此有两个问题: 1)人们如何“远程”使用读卡器之类的东西?当然,必须在某些时候将物理卡传送到计算机所在的任何位置。如果您在100英里外,这是否意味着他们提前将卡发布了,然后仅使用网络来执行运行这些卡座所需的命令? 2)人们通常如何获得其计划的结果?它是通过导线发送回去的,还是在程序运行回远程研究人员之后张贴了打印输出/胶带等? 如我所说,如果我把自己的时代弄混了,我深表歉意,当时我还活着。 谢谢。

2
多人游戏使用TCP还是UDP?
我经常看到这个问题。多数人说,UDP对于实时游戏总是比TCP更好。我的理解是,TCP会尝试一遍又一遍地重新发送数据包,直到对方得到它们为止,而UDP则不在乎。 我读过的大部分内容是,任何实时游戏都必须使用UDP,而TCP则很糟糕。但问题是,无论如何,大多数人似乎还是在UDP之上实现了某种形式的TCP。而且我还听说,由于我们已经不在80年代了,而且互联网现在相当快速且可靠,因此两者之间的差异可以忽略不计。 我的一般理解是否错误?有人可以帮我清理一下吗?

2
UDP数据有效载荷应包含CRC吗?
对于我曾经工作过的公司,我必须实现一个套接字接收器,该接收器主要通过一些专用传感器硬件通过本地连接以UDP形式获取数据。所讨论的数据是格式正确的UDP数据包,但有趣的是,数据有效负载始终以使用其余数据形成的CRC16校验和结尾。 我按照规范在终端执行了检查,但是我一直想知道这是否有必要。毕竟,UDP协议本身不携带16位CRC吗?因此,尽管UDP数据包可能会丢失或乱序,但我给人的印象是,在到达OS进程之前,如果不被网络硬件丢弃,就无法破坏它们。还是我缺少一些特殊用例? 值得补充的是,我在国防行业工作,正如您确定的那样,我对这样的事情都非常清楚,所以我想知道这是否仅仅是“安全OCD”的案例。 ..


4
如何与其他开发人员建立网络?
您会提出什么建议来找到交流机会或在用户组和其他开发人员场所进行交流? 例如,如果您去了代码训练营,是否会尝试与那里的其他开发人员建立网络?您将如何去做?您愿意在午餐时认识一个不认识的人做自我介绍吗? 我最近参加了一个用户组会议,觉得有点无聊。似乎只有少数人真正在与他人交谈。大多数与会者似乎都保持自己的立场。这对开发人员来说很典型吗? 我从来都不擅长网络,可能对我不认识的人有些内向,所以网络并不是我的强项。但是,我绝对想进一步扩展并结识其他开发人员。


1
套接字如何通过无线连接工作?
我只在使用Android的客户端(特别是移动)应用程序上工作,其中所有网络都是使用框架提供的组件(如HttpUrlConnection)在HTTP层进行处理的。 但是推送消息系统(如Websockets / XMPP等)都保持与服务器的持久连接。甚至包含在支持Google Play的设备中的Google GCM都可以保持与服务器的持久连接。 我的问题是,如何在不耗尽电池的情况下工作?如果我们依次发出连续的HTTP请求,则电池电量将大量消耗。如何在不遇到相同问题的情况下维持这些持久连接?

2
什么是好奇心包结构?
对于NASA的星际网络,数据包是什么样的?显然,这是冗余协议的一种形式,存储在接收器中并进行了备份。是否有任何有关数据包结构或通信协议的文档,这些文档必须经过14分钟的通信?



2
主持人离开后,在线游戏如何继续?
注意:这是有关网络而不是游戏的问题。我仅以星际争霸为例。 游戏《星际争霸》(不是《星际争霸2》)支持在线游戏。一个人主持,其他人参加。如果主机在游戏过程中离开,则游戏可以在没有主机的情况下无限期继续。这是如何运作的? 请考虑以下情形: 我将3托管为3。请注意,为了使人们能够加入,我的路由器必须配置为转发6112,TCP和UDP端口(请参阅Blizzard支持)。 五个人参加。每个人(包括我本人)都在路由器后面。我开始游戏。 比赛开始三分钟后,大约有二十位狂热者涌入我的基地。没有人帮助我。 我的阵营被淘汰,所以我离开了(游戏没有给您选择)。 比赛在没有东道主的情况下继续进行(主队剩下两名球员)。 其余五个客户端(不需要转发6112)如何保持连接? 如果我理解正确:如果两个程序要互相通信,则其中一个必须是“服务器”并侦听端口上的连接,而另一个则必须是“客户端”并在该端口上发起连接请求港口。他们不能简单地开始向对方发送数据包(如果两个都在路由器后面,我什至不知道他们会怎么做)。 主持游戏的人是服务器,而加入游戏的人是客户端。很容易看到客户端如何开始与服务器通信。我不明白的是:客户端如何不通过服务器就开始彼此通信?Internet协议是否允许服务器启动客户端之间的连接? 就星际争霸而言,游戏流量完全可能通过Battle.net服务器。在游戏过程中,星际争霸确实维持与Battle.net的连接(用于来自朋友等的消息)。但是,我怀疑游戏流量会通过它,因为如果这样做了,为什么主机需要移植6112? 我的问题是:连接有多个客户端的服务器是否可以启动它们之间的连接?
12 networking 

3
如何在两个节点之间的相互连接期间避免分布式死锁?
假设我们有两个对等节点:第一个节点可以向第二个节点发送连接请求,但是第二个节点可以向第一个节点发送连接请求。如何避免两个节点之间的双重连接?要解决此问题,顺序执行为创建入站或出站TCP连接而执行的操作就足够了。 这意味着每个节点都应按顺序处理每个新的连接创建操作,包括传入连接和传出连接。这样,在从节点接受新的传入连接之前或在向节点发送连接请求之前,维护已连接节点的列表,只需检查该节点是否已存在于列表中就足够了。 为了使创建连接的操作顺序进行,对连接的节点列表执行锁定就足够了:实际上,对于每个新连接,新连接的节点的标识符都添加到该列表中。但是,我想知道这种方法是否会导致分布式死锁: 第一节点可以向第二节点发送连接请求; 第二节点可以向第一节点发送连接请求; 假设两个连接请求不是异步的,则两个节点都锁定所有传入的连接请求。 我该如何解决这个问题? 更新:但是,每次创建新的(传入或传出的)连接时,我仍然必须锁定列表,因为其他线程可能会访问该列表,因此仍然存在死锁问题。 更新2:根据您的建议,我编写了一种算法,以防止相互接受登录请求。由于每个节点都是对等节点,因此它可以具有一个客户端例程来发送新的连接请求,以及一个服务器例程来接受传入的连接。 ClientSideLoginRoutine() { for each (address in cache) { lock (neighbors_table) { if (neighbors_table.contains(address)) { // there is already a neighbor with the same address continue; } neighbors_table.add(address, status: CONNECTING); } // end lock // ... // The node tries to establish …

3
如何通过网络同步时钟以进行游戏开发?
我正在写一个具有很多基于时间的方面的游戏。当网络停滞且数据包未通过时(以及接收和不接收数据包之间的时间),我用时间来帮助估计玩家的位置。从某种意义上说,这是一种吃豆子型游戏,玩家可以选择一个方向并且不能停止移动,因此该系统才有意义(或者至少我认为可以)。 所以我有两个问题:1)由于网络存在延迟,我如何在开始时同步游戏的时钟。2)可以不同步它们,只是假设它们是相同的(我的代码与时区无关)吗?这不是一个超级竞赛的游戏,人们会改变时钟以作弊,但仍然如此。 该游戏正在使用Java和Python进行编程(作为项目进行并行开发)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.