##背景
HTTP通信等の下のヒエラルキーに位置するTCP/UDPがいまいち何に使われているのかわからなかったので、まとめてみました。
##TCP/IPモデル
webサービスというのはブラウザの検索窓にURLを入れると、それをDNSで名前解決し〜色々な過程を経てWebブラウザにwebサイトは表示されますが、それを通信的に階層化すると以下のようになります。
1.アプリケーション層: ソフトウェア同士の会話に使われる 例:HTTP,SSH,DNS,SMTP(電子メールを送るときに使う通信)
2.トランスポート層: データのやりとりを順番に制御、エラー訂正したりするなどの信頼性を高めたデータの転送を制御する。 例:TCP,UDP
3.インターネット層:IPアドレスの割り当て、ルーティングをする 例:IP,ICMP、ARP
4.インターフェース層: ネットワーク上で接続されている機器同士で通信する 例:Ethernet,PPP
通信は上のようなヒエラルキー(TCP/IP モデル)になっており、下の層と上の層は互いに干渉しません。
##なぜトランスポートプロトコルが必要なのか?
トランスポートプロトコルが存在することの意味はパケット(データを細切れにしたもの)を 順番通りに正しく送るためです。トランスポートプロトコルのインターネット層でもパケットを送ることはできるのですが、この層は順番を考慮しながらデータを配送することはできないため、データの順番がぐちゃぐちゃになってしまいます。それをカバーするためにトランスポートプロトコルを使います。
##TCPとUDPの違い
TCPとUDPはどちらもトランスポート層に属し、データを送ると言う点では同じなのですが、
TCPではメールなどのデータの順番だけを送れば問題ないものを送っていたのですが、時代の流れに伴い、テキスト文章だけではなく、音声や動画も送信する必要が出てきました。音声や動画はデータの順番だけではなく、データの間隔を正常に送信することも求められるため、TCPにはできなかったのですが、UDPというデータのカプセル化(データを送るときにデータをDockerのコンテナみたいにパッケージ化して送ります。)をアプリケーション側にやらせ、カプセル化したデータをただ送るだけと言うUDPが開発されました。