タグ付けされた質問 「networking」

このタグは、ネットワークのハードウェアとソフトウェアに関連するトピックに関連して使用します。ソーシャルメディアなどのパーソナルネットワーキングに関してこのタグを使用しないでください。

6
ソケットとポートの違い
誰かがポートとソケットの違いをはっきりと説明してください。ポートはアプリケーションプロセスのネットワークへのドアとして機能し、アプリケーションプロセスは指定されたポート番号へのソケット接続を使用してネットワーク通信を処理することを知っていますが、単一のポート番号でリッスンする複数のプロセスがある場合、私は見つけていますソケットとポートの違いと、それらがどのように組み合わされるかを理解することは困難です。

9
ネットワークでバイト順を安全に無視できますか?
クライアントがWindows上で実行され、サーバーがおそらくLinux上で実行されるサーバークライアントアプリケーションを開発しています。後でクライアントをMacとLinuxに移植するかもしれませんが、まだではありません。 最近のすべてのホームコンピューターは、リトルエンディアンで実行されます。私はしばらくグーグルで検索しましたが、ビッグエンディアンで動作するデバイスのリストを実際に見つけることができませんでした。私の知る限り、一部のMotorolaチップは依然としてビッグエンディアンを使用し、おそらく一部の携帯電話を使用します(アプリをスマートフォンに移植する予定はないので、これは私には関係ありません)。サーバーとクライアントの両方がリトルエンディアンで実行されていることがわかっているのに、読み取りと書き込みのために、すべての整数、すべてのショート、すべてのフロート、ダブルなどのバイトを再配置するのはなぜですか? それはただ行う必要のない作業です。だから、私の質問は次のとおりです:エンディアンを安全に無視して、リトルエンディアンのデータを送信できますか?欠点は何ですか?

4
60年代と70年代にプログラマーはどのようにネットワークを使用して高価なコンピューターリソースを共有しましたか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 私は若く、かつてのようにネットワーキングとプログラミングを体験するために60年代と70年代に生きていませんでした。私はVan JacobsonによるContent Centric Networkingに関する講演を見てきましたが、これらの講演では、60年代および70年代に、ネットワークは希少なカードリーダーへのアクセスを取得するなどのリソース共有の問題を解決するために設計されたと述べている歴史的な視点を提供しますまたは高速テープドライブ。彼はその後、この時代にはデータがほとんどなく、そのデータは「コンピューター上に存在しなかった」と言い続けます。それはあなたが持ち歩いたもの、例えばテープや印刷物です。 これに関して2つの質問があります。 1)人々はどのように「リモート」でカードリーダーのようなものを使用しましたか?確かにある時点で、物理カードはコンピューターのある場所に届けられなければなりませんでした。あなたが100マイル離れていたら、それは彼らが事前にカードを掲示し、それからそれらのカードデッキを実行するのに必要なコマンドを実行するために単にネットワークを使用したことを意味しましたか? 2)人々は一般にどのようにしてプログラムの結果を取得しましたか?それはワイヤーを介して送り返されましたか、それともプログラムが遠隔研究者に戻った後に印刷物/テープなどが投稿されましたか? 私が言ったように、ここで私の時代が何らかの形で混同されてしまった場合、私は謝罪します、私はその時に生きていませんでした。 ありがとう。

2
マルチプレイヤーゲームのTCPまたはUDPですか?
これは私がよく見る質問です。ほとんどの人は、UDPはTCPよりもリアルタイムゲームの方が常に優れていると言います。私の理解では、UDPは気にしませんが、TCPは反対側がパケットを取得するまで何度もパケットを再送信しようとします。 私が読んだことの大部分は、UDPはどんなリアルタイムゲームにとっても必須であり、TCPはひどいということです。しかし、とにかく、ほとんどの人はUDPの上に何らかの形式のTCPを実装しているようです。そして、私たちはもう80年代ではなく、インターネットは今や非常に高速で信頼性が高いことを考えると、2つの違いは無視できると聞いています。 ここでの私の一般的な理解は間違っていますか?誰かが私のためにこれをクリアできますか?

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
Curiosityのパケット構造とは何ですか?
NASAの惑星間ネットワークの場合、パケットはどのように見えますか?これは明らかに冗長プロトコルの一種であり、受信機に保存され、バックアップが組み込まれています。パケット構造または通信プロトコルに関するドキュメントはありますか。14分間の通信に及ぶ必要がありますか?

3
ブロッキングストリームをTCP接続に多重化することをお勧めしますか?
2つのホスト間に複数の二重チャネルが必要です。1つのTCP接続のみを確立することには多くの利点があります。しかし、多重化は避けられない問題を引き起こすとは思いません。パフォーマンスを低下させたり、レイテンシを大幅に増加させたりしませんか?また、メモリ使用量とCPU使用量はどうですか?何か提案や警告がありますか?


2
ホストが去った後、オンラインゲームはどのように続きますか?
注:これは、ゲームではなくネットワーキングに関する質問です。私はStarCraftを単なる例として使用しています。 ゲームStarCraft(StarCraft 2ではない)はオンラインプレイをサポートしています。1人がホストし、他の人が参加します。ホストがゲーム中に退場した場合、ゲームはホストなしで無期限に続行できます。それはどのように機能しますか? 次のシナリオを検討してください。 3対3をホストします。参加できるようにするには、ルーターをポートフォワード6112、TCPおよびUDPに設定する必要があることに注意してください(ブリザードサポートを参照)。 5人が参加します。全員(自分も含む)はルーターの背後にいます。ゲームを開始します。 ゲーム開始から3分後、約20人の熱狂者が私の基地に流れ込みます。誰も私を助けません。 私のベースは排除されたので、私は去ります(ゲームはあなたに選択肢を与えません)。 ゲームはホストなしで続行します(ホームチームには2人のプレイヤーが残っています)。 残りの5つのクライアント(転送された6112を必要としなかった)はどのように接続されたままになりますか? 私が正しく理解している場合:2つのプログラムが互いに通信する場合、1つは「サーバー」であり、ポート上の接続をリッスンする必要があり、もう1つは「クライアント」であり、その接続要求を開始する港。彼らは単純にお互いにパケットを送信し始めることはできません(そして、両方がルーターの後ろにあるなら、私は彼らがどうするかさえ知りません)。 ゲームをホストしている人はサーバーであり、ゲームに参加している人はクライアントです。クライアントがサーバーとの通信を開始する方法を簡単に確認できます。私が取得できないのは、サーバーを経由せずにクライアントがどのように互いに通信を開始するのですか?インターネットプロトコルにより、サーバーはクライアント間の接続を開始できますか? StarCraftの場合、ゲームのトラフィックがBattle.netサーバーを通過することは完全に可能です。StarCraftは、ゲーム中(友人からのメッセージなど)にBattle.netへの接続を維持します。ただし、ゲームのトラフィックが通過するとは思えません。 私の質問は次のとおりです。複数のクライアントが接続されたサーバーは、それらの間の接続を開始できますか?
12 networking 

3
2つのノード間の相互接続中に分散デッドロックを回避するにはどうすればよいですか?
2つのピアノードがあるとします。最初のノードは2番目のノードに接続要求を送信できますが、2番目のノードは最初のノードに接続要求を送信できます。2つのノード間の二重接続を回避する方法は?この問題を解決するには、インバウンドまたはアウトバウンドTCP接続を作成するために実行される操作を連続して行うだけで十分です。 つまり、各ノードは、着信接続と発信接続の両方で、新しい接続作成操作を順番に処理する必要があります。この方法では、接続されたノードのリストを維持し、ノードからの新しい着信接続を受け入れる前、またはノードに接続要求を送信する前に、このノードがリストに既に存在するかどうかを確認するだけで十分です。 接続を作成する操作を順番に行うには、接続ノードのリストをロックするだけで十分です。実際、新しい接続ごとに、新しい接続ノードの識別子がこのリストに追加されます。このアプローチは、原因となることができればしかし、私は疑問に思う分散デッドロックを: 最初のノードは、2番目のノードに接続要求を送信できます。 2番目のノードは最初のノードに接続要求を送信できます。 2つの接続要求が非同期でないと仮定すると、両方のノードが着信接続要求をロックします。 どうすればこの問題を解決できますか? 更新:ただし、新しい(着信または発信)接続が作成されるたびにリストをロックする必要があります。他のスレッドがこのリストにアクセスする可能性があるため、デッドロックの問題が残ることになります。 更新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
ゲーム開発のためにネットワークを介してクロックを同期する方法は?
時間ベースの要素が多いゲームを書いています。私は時間を使用して、ネットワークが停止し、パケットが通過していないときのプレーヤーの位置(およびパケットが受信されるまでの時間と受信されない時間)を推定します。それは、プレイヤーが方向を選択して動きを止めることができないという意味でパックマンタイプのゲームです。そのため、システムは理にかなっています(または少なくとも私はそう思います)。 だから私は2つの質問があります:1)ネットワークに遅延があるので、最初にゲームのクロックをどうやって同期させるのですか?2)それらを同期せず、それらが同じであると想定しても大丈夫ですか(私のコードはタイムゾーンに依存しません)。これは、人々が時計を変えてチートするような非常に競争の激しいゲームではありません。 ゲームはJavaとPythonでプログラミングされています(プロジェクトとして並行開発)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.