DUVER Tips

Unity,Unreal Engine,XR関係のblog

TCP/IPのメモ書き

最初に断っておくと、個人の勉強用のメモ書きになります。

Unitを使用してネットワークゲームを作成しようと思い立ったのですが
そもそも、TCP/IP プロトコルってなんだ?
とネットワークの仕組みが全く分かっていなかったため、勉強を始めた次第です。
用語の解説がメインになってしまっていますがご了承ください。

そもそもプロトコルってなんなの?

プロトコル

相手とのやり取りのための通信規約のこと。

送信するデータとは別に、適切にデータ伝送を行うための管理、制御用の情報必要。
データや管理情報をどのような形で伝送するのか、送受する際の手順を定めるのがプロトコル

TCP/IP Transmission Control Protocol /Internet Protcio

ネットワーク通信を行うために制定されたプロトコルの一種でもともとインターネットの
通信のために設計されたもの。

役割としては、多数の組織のネットワークを相互に接続し、個々の機器間で自由にデータ交換できるようにする事。

もう少し詳しく役割を追っていきましょう。

IP Internet Protocol

インターネット専用というわけではなく、接続してないネットワークでも使うことができる。
任意の機器の間でデータを伝送を実現するプロトコル

UDP(User Datagram Protcol)

IPだけではネットワークを活用することができない。
機器にデータを届けることはできるが、目的のプログラムを示すことはできない。
データを目的のプログラムに届けるためにはコンピューターで動作しているプログラムを識別しないといけない。
これを実現するのがUDP/TCPの役割。

コンピューターには複数のアプリケーションが存在するため
IPアドレスを用いて機器の識別まではできるが、どのアプリケーションに
データを送ればよいかわからない。
そのため、ポート番号と呼ばれる番号でどのプログラムにデータを送ればよいのか識別する。

ただ、UDPはネットワーク通信を保証する訳ではないので、データを確実に送れたか
また、遅れてない場合のエラー処理等の対策は対応できない。
そのためデータ送信の確実性を保証するためにはTCPを用いて通信をする。

TCP(Transmission Control Protocol)

エラー処理はネットワークアプリケーションの中で行う必要がある
エラー対処のためにエラー処理の問題に対処するプロトコルがこれ。

UDPと同様にポート番号を指定してデータを相互にやり取りをする
通信路を提供している。

TCPは特定の通信相手を指定して、明示的に接続処理を行い、以後はその相手とのみ
データのやり取りをする。これをコネクションと呼ぶ。

TCPはデータの送信に対して、確認情報を返すことで、確実なデータ伝送を実現している。

通信は必ず双方向で行われている。

エラー回復

なら、TCPで全て遅ればいいじゃん、と思っていたのですが
このような場合はUDPの方がいい、という時もあります。
主に以下のようなパターン

ゲームだとプレイヤーの位置を送る
・データが少ない
・高度な処理が必要
・リアルタイム性
・複数の相手に送信

IPアドレスMACアドレス

IPアドレスはインターネットに接続された個々のノードを識別するための一意な32BITの情報。
重複は存在しないが、自由に変更できる。

DNS ドメインネームシステム

サーバーの指定やメールアドレスにドメイン名を使用するが
ネットワーク通信ではIPアドレスを使用するため、
ドメイン名はIPアドレスに変換しないといけない、
これを行うのがDNS

ARP(Address Resolution Protcol)

実際のネットワーク通信は個々の方式毎に規定されているMACアドレスを使って行われる。

イーサネットMACアドレスを使って通信が行われる、

TCP/IPを使う場合はIPアドレスで宛先や送信元を指定するのでMACアドレスでノードを指定する必要がある、
そのため、IPアドレスMACアドレスの対応づけをする必要性がある、

IPアドレスMACアドレスの対応つけ処理のことを示す。
対応つけをネットワークを使って行うプロトコル

ICMP

通信でエラーを通知したり、診断機能を提供したり、各種の制御を
行うための管理プロトコル
主要な役割はエラーの通知。IPデータグラムが宛先に到着しなかった、途中で破棄された
といったエラー通知がICMPで送信元に送られる。
エラー通知が必ず送られるわけでもない。