はじめてUNIX で仕事をする人が読む本 の備忘録 16
お世話になった本
この連載ブログを書くにあたり、お世話になった本がこちら。LPICと被っているところもありますが、実務での使い方なんかも扱っており、良書だと思います。
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
ネットワーク
第16章 TCP と UDP
ポート番号
HTTP 80
HTTPS 443 とか有名ですよね。
UDP
UDP
は単一のデータグラムを送受信する際に使用されるプロトコルである。
データの到達性などは保証しない。
TCP
TCP
は連続するデータストリームの送受信をする際に使用されるプロトコル。
連続性と到達性を保証する仕組みが組み込まれている。
信頼性が必要なアプリケーションにおいて使用される。
TCP のコネクション
TCP
では、まずはじめにコネクションの確率を行う。開始と終了の合図。
いわゆる、「3ウェイハンドシェイク」
終了するときは、FIN > ACK > FIN > ACK とやりとりして終わる。片方だけFINを送った状態をハーフクローズという。
TCP の通信
TCP
では切れ目のない連続したデータを扱えるが、実際のデータの送受信はIPレイヤにおいてパケット単位に分割される。これをTCP
レイヤで結合し、連続するデータであるかのようにアプリケーションに提供していく。
キーワードは、シーケンス番号
。これが付与されるので、パケットの順序性を保証できる。
TCP の通信の制御
基本は、データを送信して、ACK
が帰ってきたら次のデータを送信する。という動き。
しかし、これでは高速にデータのやりとりが出来ない。そこで出てきた概念がウィンドサイズだ。
ある程度まとまって送信しても良いデータ量を決めておく。ACKが帰ってくる前に一気に送ってしまうのだ。
ACKの帰ってくるまでデータを送信側で保持しておくことで、再送要求に対応する。
この機能を利用して、一度に送信する量を変更させることで、輻輳制御も可能になる。
他にも一度にACKを返すほうが効率的ということで、遅延ACK
等の制御もある
TCP と UDP の使い分け
TCP
だけで十分じゃないかという人もいるかもしれないが、リアルタイム性の要求されるパケットに再送されても意味があまりないので、その場合はUDP
を使うことが多い。
例えば、音声・動画のストリーミング通信等である。
データ再送が不要で、むしろ通信の遅延のほうが問題になるようなアプリケーションの時にUDP
が使われる。