ケルベロスさんのプログラミング / けるぷろ

プログラマのけるさんことケルベロスです

TCPとUDP

TCPUDP

TCPとは

  • Transmission Control Protocol
  • インターネットにおいて標準的に利用されるプロトコル
  • UDPと比較して信頼性の高い通信を実現するために使用される

    • シーケンス制御、再送制御
  • ポート番号とは

    • 通信先のアプリケーションを指定するための番号
  • TCPはコネクション型プロトコルである

    • 相手の応答があって初めて通信を開始する
    • データ転送の前にコネクションの確立を行う
    • TCPコネクションの確立に使用されるのが3ウェイハンドシェイクである
  • 3ウェイハンドシェイク

    • 3回のやりとりでコネクションを確立する
      • 1- AからBへの接続確認
      • 2- BからAへの確認応答と接続確認
      • 3- AからBへの確認応答
  • 信頼性確保の方法

    • シーケンス制御
      • データを分割して送信する際にシーケンス番号を付与することで受信側で番号を元にデータを正しく組み立てることができる
    • 再送制御
      • 分割されたデータが到着したときに受信側から確認応答をすることで、時間内に確認応答がなかった場合にその番号のデータを再送信する
  • 通信効率向上

    • ウィンドウ制御
      • 受信側でウィンドウサイズを指定してそのサイズの分は確認応答を待つことなくデータを送信していく
    • フロー制御
      • 受信側で負荷が高まったときにウィンドウサイズを小さくして負荷がおさまるまで一定時間データ送信量を制御する

UDPとは

  • User Datagram Protocol
  • 信頼性は高くないが、速さやリアルタイム性を求める通信に使用されるプロトコルである
    • オーバーヘッドが少ない
    • パケットロスしても再送をしない
  • 用途
    • 音声や映像などのリアルタイム性のあるデータの送受信
      • 音声通話、ストリーミング
    • 複数の相手に同じデータを送信する場合
    • 信頼性が必要なく少量のデータ転送
      • DNSサーバとのデータ通信など

まとめ

通常の通信ではTCPを使用する
速さやリアルタイム性を求める場合にはUDPを使用する

参考
http://www.infraexpert.com/