ネットワークの基礎(4) TCP/IP (TCPとUDP編)

TCP

 TCPトランスポート層に位置するプロトコルで、階層に位置するIPが完全性を保証しないベストエフォート方式である事から、伝送管理と送信達成管理の機能を実装している。

コネクションの確立

 TCPは通信時にあらかじめ相手との伝送路を確立するコネクション型通信を提供する。
 このコネクション確立において、TCPでは3ウェイハンドシェイクという手法をとる。
 まず確立要求のSYNパケットがサーバー(接続先)に送られ、次にそれに対する応答のACKパケットとサーバー側からの確立要求をするSYNパケットがクライアント(接続元)へ送られる。そして最後にクライアント側からサーバーへ返答のACKパケットが送られる。
この3段階を経て双方の接続が確立することになる。同様に切断時も個の3段階を経て切断がなされる。
 ホントはこの手順を用いたさまざまな攻撃手法が存在するがここでは割愛。
 例によってそのうち扱うかもしれないのでそのうちそっち参照ということで。

TCPヘッダ

 TCPのフロー制御などを実現するためにTCPヘッダには複雑な情報が盛り込まれる。
 たとえばシーケンス番号は送信するデータ全体における位置情報を8ビット単位で表現し、分割されたパケットを復元するための基準となる。ACK番号は受信時のACK応答で利用され、分割されたデータのうちどれが届いたか(あるいは届いていないか)を確認する指標となる。(そして次に送るべきデータを決定する)
 このヘッダは詐称する事もできるためやはり悪用されれば攻撃の手口となる。

UDP

 UDPTCPと違い、送信達成の管理をせず、より高速かつシンプルにアプリケーションへ通信環境を提供する。こういったプロトコル全般に言えることだが、「機能が削られている」というのはそのプロトコルが性能的に貧弱であることを示すのではなく「機能を限定する事のメリットを選んでいる」という意味なので注意が必要。(勝る劣るという議論自体がそもそも踏もうという事ね。状況によりTCPUDPもそれぞれ活躍の場があるわけで、だからどっちもなくならず、広くいろんな分野で使われているのです)