TCP/IPのプロトコル群について一覧でざっくりまとめてみたのでメモ

AWS認定の学習をしていて、「なんか自分ネットワークについて何も分かってないな...」と感じ、AWSの前にネットワークやLinuxの学習をしようと考えました。

この記事はその学習の一環として書いたもので、まずはネットワークの通信規約のデファクトであるTCP/IPをざっくり概観するために作成しました。

記述するプロトコルの選定方法としてはシンプルに、Wikipediaの「インターネット・プロトコル・スイート」ページ(日本語のもの)に記載してある一覧表に記載されているものを採用しました。

## アプリケーション層

|プロトコル名|何の略|用途・役割|
|:-:|:-:|:-:|
|BGP|Border Gateway Protocol|AS(自律システム)間におけるルーティングを行う。|
|DHCP|Dynamic Host Configuration Protocol|ネットワークを接続するために必要な情報を取得するために用いる。<br>これがないと昔のWindowみたいに自分でIPアドレスを設定しないといけない。|
|DNS|Domain Name System|ドメインとIPアドレスの関連付け・管理のために用いる。名前解決(ドメイン名をIPアドレスに変換する)を行う。|
|FTP|File Transfer Protocol|ネットワーク上におけるクライアントとサーバ間でのファイル転送のために用いる。|
|HTTP|Hypertext Transfer Protocol|webサーバアプリケーションとwebブラウザなどのクライアントアプリケーション間でのデータの送受信のために用いる。<br>htmlファイルのようなhypertextを始めとした、様々なデータの転送を行う。|
|IMAP|Internet Message Access Protocol|メールサーバ上でメールを管理するために用いる。<br>POPがメールをサーバーから一度だけダウンロードするのに対してIMAPではメールをサーバ上で保持し続ける。|
|IRC|Internet Relay Chat|クライアントとクライアントがテキストベースでメッセージのやり取りをするために用いる。<br>SNSやチャットツールの台頭によって利用者数は年々減少中。|
|LDAP|Lightweight Directory Access Protocol|リソースを一元管理しているディレクトリサービスへ接続するために用いる。<br>LDAP認証は本プロトコルを利用して実現される。|
|MGCP|Media Gateway Control Protocol|VoIP(ネットワーク上での音声による通話)の実現をサポートするプロトコル。|
|NNTP|Network News Transfer Protocol|ネットニュースサーバから記事を受信あるいはニュースを投稿するために用いる。Webアプリのニュースサイトなどがあるためほとんど使われていない模様。|
|NTP|Network Time Protocol|時刻の同期に用いられる。Time Protocolと異なり、通信時間による誤差を最小化する機能が含まれる。|
|SNTP|Simple Network Time Protocol|NTPの簡易版。主にクライアントの時刻の同期のみに用いる。|
|TIME|Time Protocol|時刻の同期に用いる。NTPより古く通信時間に起因する誤差が発生する。|
|POP|Post Office Protocol|メールサーバからメールを取得するために用いる。<br>IMAPと異なりメールを取得するとサーバからは対象のメールは削除される。|
|RIP|Routing Information Protocol|ルーティングに関する処理を行う|
|ONC RPC|Open Network Computing Remote Procedure Call|ネットワーク上の異なるコンピュータ上での処理の実行を遠隔で行うために用いる。|
|RTP|Real-time Transport Protocol|リアルタイムでのデータ転送に用いる。基本的にTCPではなくUDP上で利用される。|
|SIP|Session Initiation Protocol|クライアント間でのセッションを確立するために用いられる。|
|SMTP|Simple Main Transfer Protocol|メールの転送に用いる。|
|SNMP|Simple Network Management Protocol|ネットワーク上の通信機器の監視および制御を行うために用いる。|
|SSH|Secure Shell|暗号化技術を使って安全に外部サーバに接続し遠隔操作を行うために用いる。<br>本プロトコルによって通信内容は全て暗号化される。|
|Telnet|Teletype network|テキストベースでの端末間での通信に用いる。SSHのように暗号化はされない。|
|TFTP|Trivial File Transfer Protocol|FTPと同様にファイル転送を行うが、FTPと異なり認証が不要でUDPを使用する。|
|TLS/SSL|Transport Layer Security/Secure Sockets Layer|セキュアな通信を実現するために用いる。盗聴・改ざんの防止、証明書による通信相手の確認が可能。|
|XMPP|Extensible Messaging and Presence Protocol|インスタントメッセンジャーのためのプロトコル。WhatsAppやGoogle Talk、Facebook Chat(Messengerの前身)などで使われている。|
 

## トランスポート層

|プロトコル名|何の略|用途・役割|
|:-:|:-:|:-:|
|TCP|Transmission Control Protocol|アプリケーション側から提供されたデータを送信するために用いる。<br>データの順序や内容を保証し、正確なデータの転送を行うことができる。|
|UDP|User Datagram Protocol|TCPと同じくデータの送信に用いるが、データの正確性よりも速度を重視したプロトコル。<br>動画や音声のストリーミング、オンラインゲームのデータ転送に使われる。|
|DCCP|Datagram Congestion Control Protocol|UDPで発生する通信路の混雑を解決するTCPの制御機構を備えたプロトコル。|
|SCTP|Stream Control Transmission Protocol|通信路混雑を解消する機能を持ち、マルチホーミング機能(複数IPアドレスの利用による可用性の向上)とマルチストリーミング機能(通信効率の向上)を持つ。|
|RSVP|Resource Reservation Protocol|ネットワークにおける通信経路の帯域の予約を行う。|


## インターネット層

|プロトコル名|何の略|用途・役割|
|:-:|:-:|:-:|
|IP (IPv4、IPv6)|Internet Protocol|パケットを送信先のIPアドレスの元へ送信するために用いる。|
|ICMP/ICMPv6|Internet Control Message Protocol|通信が可能な状態かどうかを確認するために用いる。<br>pingやtracerouteなどが代表例。|
|NDP|Neighbor Discovery Protocol|ネットワーク上の近隣のノードのアドレスの管理や通信状態の検出に用いる。<br>IPv6で使用される。|
|IGMP|Internet Group Management Protocol|ネットワーク上で一対多or多対多の通信を行うために用いる。|
|IPsec|Security Architecture for Internet Protocol|データの改ざんの検知やデータの暗号化を行い、セキュリティを担保するために用いる。|

## リンク層 

|プロトコル名|何の略|用途・役割|
|:-:|:-:|:-:|
|ARP|Address Resolution Protocol|ローカルネットワーク内でIPアドレスからMACアドレスを検出するために用いる。|
|OSPF|Open Shortest Path First|ルーティング(ネットワークの経路選択)処理において、最短の経路を導くために用いる。|
|SPB|Shortest Path Bridging|複数経路のルーティングを実現するために用いる。負荷分散も行うため可用性・拡張性がある。|
|トンネリング (L2TP) |Layer 2 Tunneling Protocol|仮想トンネルを構築し、機器間でのデータの送受信を行うために用いる。|
|PPP|Point-to-Point Protocol|2つのノードを1対1で接続し、データの送受信を行うために用いる。|
|MAC|Media Access Control|機器ごとのMACアドレスの割り当てやフレーム送受信に用いる。|