generated at
通信プロトコルの基礎知識

はじめに
ソフトウェアエンジニアを目指すニートのために通信プロトコルの基礎知識を簡潔にまとめました
ネットワークエンジニアやインフラエンジニアを目指すみなさんはこの程度で満足せずもっと頑張って下さい
OSI参照モデルは、エンジニア間で通信ネットワークの話をする際に便利なのでなんとなく使われていますが現代では有名無実化している側面もあります

オススメ書籍
この記事は、現代のネットワーク通信プロトコルに関する基礎的な知識の全体像を可能な限り薄く広くまとめているだけなので、詳しくは以下の本を読んでください


参考文献

具体的な通信サービスを提供
例えばファイル・メールの転送、遠隔データベースアクセス
HTTPやFTP等の通信サービス
データの表現方法
例えばEBCDICコードのテキストファイルをASCIIコードのファイルへ変換する
通信プログラム間の通信の開始から終了までの手順
接続が途切れた場合、接続の回復を試みる
ネットワークの端から端までの通信管理
(エラー訂正、再送制御等)
ネットワークにおける通信経路の選択(ルーティング)
直接的(隣接的)に接続されている通信機器間の信号の受け渡し。
第1層 - 物理層
物理的な接続。コネクタのピンの数、コネクタ形状の規定等。銅線-光ファイバ間の電気信号の変換等

実際の通信の様子
ネットワーク上で送受信されるデータの塊のこと
小分けにして送受信することで一つのケーブルを通して複数の機器とやりとりができる

各レイヤーの説明

DNSとは
ドメイン名(例 google.com ) と IPアドレス (例 172.217.161.78 ) を紐付けて管理するためのプロトコル
DHCPとは
ネットワーク構成設定を自動で動的に各デバイスに割り当ててくれるプロトコル
LANにデバイスを接続した時にローカルIPアドレスの割り当てが自動で行われるのはこいつのおかげ
HTTPとは
Webブラウザ(ChromeとかSafariとか)がWebサーバーと通信するために使っているプロトコル
最初はHTMLをやりとりするために発明された
現在はスマホアプリ等様々なアプリケーションがHTTPで通信している
最近はHTTPSと呼ばれるTLS/SSLを用いた暗号化通信を可能にしたバージョンがよく使われる
TLS/SSLとは
通信者の認証・通信内容の暗号化のためののプロトコル
HTTPSで使われてる
RTPとは
音声や動画の配信に使われるプロトコル
UDPを活用しており遅延が少ない
RTSPとは
音声や動画などのマルチメディア・データをふくむサーバを遠隔操作するためのプロトコル
SSHとは
ネットワークに接続された機器のシェルの遠隔操作のためのプロトコル
暗号化通信が可能なTelnetの後継プロトコル
Telnetとは
ネットワークに接続された機器のシェルの遠隔操作のためのプロトコル
暗号化通信できないプロトコルなので、廃れてきている
NTPとは
パケット交換による遅延時間が変動するネットワーク上のコンピュータシステム間で時刻同期させるための通信プロトコル
1985年以前から運用されており、現在使用されている中で最も古いインターネットプロトコルの1つ
SNTPとは
NTPパケットを利用した、簡単な時刻同期プロトコル
FTPとは
ファイルを転送するプロトコル
暗号化通信できないプロトコルだったため、ほぼ滅んだ
SIPとは
IP電話で使われてるやつ
XMPPとは
インスタントメッセンジャーのためのプロトコル
NFSとは
遠隔地にあるストレージを利用するためのプロトコル
POPとは
電子メールで使われるプロトコル
IMAPとは
電子メールで使われるプロトコル
SMTPとは
電子メールで使われるプロトコル
SNMPとは
IPネットワーク上のネットワーク機器を監視(モニタリング)・制御するための情報の通信方法を定める通信プロトコル


携帯電話用のメールで使われるプロトコル




UDPとは
通信相手からの応答を待たずにデータを送り続ける
高いリアルタイム性が要求されるシステム(例 オンラインゲーム、IP電話等)で使う
TCPとは
通信相手からの「データが到着しました!」という応答を待ってから次のデータを送る
信頼性が要求されるシステム(例 データ転送)で使う
QUICとは
TCPの遅さを改善するためにGoogleが開発し始めた
2012年に開発開始
PPTPとは
VPNの構築のために使われるプロトコル


IPとは
IPアドレスに基づいて、データの塊(パケット)を届けるためのプロトコル
ネットワークの上の機器を判断するために使われる番号
パケットの送信者と宛先を示す宛名
IPv4とは
RFC 791で定義された、初代のIPアドレス
32bitの数値
約43億個
仮に全人類に一つIPアドレスを割り当てると枯渇する
IPv6とは
RFC 2460で定義された、次世代のIPアドレス
IPv4アドレスが枯渇しそうになったことから誕生
128bitの数値
約340澗個
RFC 1918で定義
そのコンピュータ自体を表すIPアドレス
IPv4では 127.0.0.1
ネットワーク内の全ての機器にパケットを一斉送信するためのアドレス
ネットワーク内の指定した複数の機器にパケットを一斉送信するためのアドレス
1つのネットワークを論理的に2つ以上のネットワークに分割したもの
CIDRとは
RFC 4632で定義
サブネットに属するIPアドレスの範囲を柔軟にブロック分けするための機構
例: 192.168.0.0/16 192.168.0.0 ~ 192.168.255.255 の、65536(2^16) 個のIPアドレスを含む範囲のアドレスブロックを表している
NATとは
RFC 2663で定義
パケットヘッダに含まれるIPアドレスと、他のIPアドレスを一対一で対応付けて変換する技術
グローバルIPアドレスプライベートIPアドレスを対応付けて変換する際によく用いられる
NATと言っているのにNAPTの話をしている場合があったりする
NAPTとは
RFC 3022で定義
ひとつのグローバルIPアドレスと複数のプライベートIPアドレスを変換する技術
ひとつのグローバルIPアドレスで複数のプライベートIPアドレスを通信可能にするためにポート番号も変換する
LANとは
同じ建物内など限定された範囲の中を繋ぐネットワーク
VLANとは
物理的な接続形態とは別に仮想的にLANセグメントを構成すること
WANとは
LAN同士を繋ぐネットワーク
ICMPとは
パケットの誤り通知や通信に関する情報の通知に使われる
pingコマンドが使っているプロトコル
ICMPの誤りの通知をICMPでやると無限ループになってしまうのでやらない
IPSecとは
IPのパケット単位での改竄検知やデータの秘匿機能を提供するためのプロトコル
VPNの構築のために使われるプロトコル
ASとは
インターネット内の統一された運用ポリシーによって管理されたネットワーク
IGPとは
AS内部のルーティングのためのプロトコルの総称
RIPとは
IGPの一種
目的のIPアドレスまでの最短経路を探索するためのプロトコル
最適なルーティングに収束するまでの時間がかかってしまう問題のため、現在ではあまり使われていない
OSPFとは
IGPの一種
目的のIPアドレスまでの最短経路を探索するためのプロトコル
比較的に処理に計算量がかかるが、RIPにおける問題を解消しており現在よく使われている
EGPとは
AS同士のルーティングのためのプロトコルの総称
BGPとは
EGPの一種


PPPとは
2点間通信において広く使われているプロトコル
2点間の接続を確立するためのLCPと上位層のために環境を整えるNCPからなる
ARPとは
IPアドレスからMACアドレスの情報を得るためのプロトコル
NICとは
コンピュータにネットワーク接続の機能を追加するためのハードウェア
NICに対して識別するために割り振られるアドレス
NICを通過する全てのパケットを受信するモード
Wi-Fiルータが認識した全てのパケットを受信するモード
Ethernetとは
ネットワーク通信に用いられる有線ケーブルの規格
Wi-Fiとは
ネットワーク通信に用いられる無線通信の規格
WEPとは
Wi-Fiで用いられる認証プログラム
脆弱性が明らかになったため現在ではあまり使われていない
WPAとは
Wi-Fiで用いられる認証プログラム
WEPの後継
ネットワーク全体がデジタル化された回線網
かつてはよく使われていたが、高速通信ができないため廃れた
ツイストペアケーブルで通信を行う技術
上りと下りの回線速度が非対称(Asymmetric)なDSL
ISDNより高速な通信が可能
スイッチ
受信されたデータをもとに接続されている各機器に転送するかどうかを判断する機器
判断にしようとするデータがどのレイヤーの情報なのかによって名称が変わったりする
例えば、第2層のデータを利用するものは「L2スイッチ」(Layer 2)と呼ばれる

第1層 - 物理層
シリアルポートの規格
廃れた
Ethernetのコネクタの規格
ツイストペアケーブル
WAN等で使われるめっちゃゴツいEthernetの規格
電波
光ファイバー
ハブ
ネットワークにおける集線装置
物理層データの修復(リピータ)機能も持つ