通信プロトコルの基礎知識
https://gyazo.com/8248038b7b71200a84265e8e95c8cd53
はじめに
ソフトウェアエンジニアを目指すニートのために通信プロトコルの基礎知識を簡潔にまとめました
ネットワークエンジニアやインフラエンジニアを目指すみなさんはこの程度で満足せずもっと頑張って下さい
OSI参照モデルは、エンジニア間で通信ネットワークの話をする際に便利なのでなんとなく使われていますが現代では有名無実化している側面もあります
オススメ書籍
この記事は、現代のネットワーク通信プロトコルに関する基礎的な知識の全体像を可能な限り薄く広くまとめているだけなので、詳しくは以下の本を読んでください
ネットワークはなぜつながるのか
https://amzn.to/34ZdmnT
https://gyazo.com/6ce3daea0141716dda58948a9e8fe5b2
インターネットのカタチ
https://amzn.to/3nfxyJh
https://gyazo.com/6ea8ad54621e4a67126d06227feb848e
マスタリングTCP/IP 入門編
https://amzn.to/3pTQ0J7
https://gyazo.com/12f496786fd309044da5d2a2dcd5aee7
参考文献
https://www.cisco.com/c/m/ja_jp/primer/osi-reference-model.html
https://www.infraexpert.com/study/networking3.html
試験に出る.icon OSI参照モデルとは
https://gyazo.com/e26286d8bd7d43652b0c6e7c19de9210
第7層 - アプリケーション層
具体的な通信サービスを提供
例えばファイル・メールの転送、遠隔データベースアクセス
HTTPやFTP等の通信サービス
第6層 - プレゼンテーション層
データの表現方法
例えばEBCDICコードのテキストファイルをASCIIコードのファイルへ変換する
第5層 - セッション層
通信プログラム間の通信の開始から終了までの手順
接続が途切れた場合、接続の回復を試みる
第4層 - トランスポート層
ネットワークの端から端までの通信管理
(エラー訂正、再送制御等)
https://gyazo.com/349c39f96fb9ad669dd1aaf4df15533f
第3層 - ネットワーク層
ネットワークにおける通信経路の選択(ルーティング)
https://gyazo.com/5e0842565f8d7548e4e6b1ccfb1d0ad6
第2層 - データリンク層
直接的(隣接的)に接続されている通信機器間の信号の受け渡し。
https://gyazo.com/48148c92f38bab4431534cadad1ec723
第1層 - 物理層
物理的な接続。コネクタのピンの数、コネクタ形状の規定等。銅線-光ファイバ間の電気信号の変換等
https://gyazo.com/bd34dfa805a96bb62efb206b799008ea
実際の通信の様子
パケットとは
ネットワーク上で送受信されるデータの塊のこと
小分けにして送受信することで一つのケーブルを通して複数の機器とやりとりができる
https://gyazo.com/a1d4f3d203cec85e8a7f47d7468e98b6
https://gyazo.com/80080b9716806e08f08124abf3e91bb3
各レイヤーの説明
第7層 - アプリケーション層
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ネットワーク上のネットワーク機器を監視(モニタリング)・制御するための情報の通信方法を定める通信プロトコル
第6層 - プレゼンテーション層
MMS
携帯電話用のメールで使われるプロトコル
第5層 - セッション層
第4層 - トランスポート層
UDPとは
通信相手からの応答を待たずにデータを送り続ける
高いリアルタイム性が要求されるシステム(例 オンラインゲーム、IP電話等)で使う
TCPとは
通信相手からの「データが到着しました!」という応答を待ってから次のデータを送る
信頼性が要求されるシステム(例 データ転送)で使う
QUICとは
TCPの遅さを改善するためにGoogleが開発し始めた
2012年に開発開始
PPTPとは
VPNの構築のために使われるプロトコル
第3層 - ネットワーク層
https://ja.wikipedia.org/wiki/ルーティングプロトコル
IPとは
IPアドレスに基づいて、データの塊(パケット)を届けるためのプロトコル
IPアドレスとは
ネットワークの上の機器を判断するために使われる番号
パケットの送信者と宛先を示す宛名
IPv4とは
RFC 791で定義された、初代のIPアドレス
32bitの数値
約43億個
仮に全人類に一つIPアドレスを割り当てると枯渇する
https://ja.wikipedia.org/wiki/IPアドレス枯渇問題
https://gyazo.com/91f1f084d06b4a46d7af10453a332fbf
IPv6とは
RFC 2460で定義された、次世代のIPアドレス
IPv4アドレスが枯渇しそうになったことから誕生
128bitの数値
約340澗個
https://gyazo.com/8bd91f7946b30c37031ff8d29f229882
グローバルIPアドレスとは
プライベートIPアドレスとは
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の一種
第2層 - データリンク層
PPPとは
2点間通信において広く使われているプロトコル
2点間の接続を確立するためのLCPと上位層のために環境を整えるNCPからなる
ARPとは
IPアドレスからMACアドレスの情報を得るためのプロトコル
NICとは
コンピュータにネットワーク接続の機能を追加するためのハードウェア
MACアドレスとは
NICに対して識別するために割り振られるアドレス
プロミスキャスモードとは
NICを通過する全てのパケットを受信するモード
モニターモードとは
Wi-Fiルータが認識した全てのパケットを受信するモード
Ethernetとは
ネットワーク通信に用いられる有線ケーブルの規格
Wi-Fiとは
≒IEEE 802.11
ネットワーク通信に用いられる無線通信の規格
WEPとは
Wi-Fiで用いられる認証プログラム
脆弱性が明らかになったため現在ではあまり使われていない
WPAとは
Wi-Fiで用いられる認証プログラム
WEPの後継
ISDN
ネットワーク全体がデジタル化された回線網
かつてはよく使われていたが、高速通信ができないため廃れた
DSL
ツイストペアケーブルで通信を行う技術
ADSL
上りと下りの回線速度が非対称(Asymmetric)なDSL
ISDNより高速な通信が可能
スイッチ
受信されたデータをもとに接続されている各機器に転送するかどうかを判断する機器
判断にしようとするデータがどのレイヤーの情報なのかによって名称が変わったりする
例えば、第2層のデータを利用するものは「L2スイッチ」(Layer 2)と呼ばれる
第1層 - 物理層
RS-232C
シリアルポートの規格
廃れた
RJ-45
Ethernetのコネクタの規格
ツイストペアケーブル
10Base-T
100BASE-TX
1000BASE-T
10GBASE-T
WAN等で使われるめっちゃゴツいEthernetの規格
電波
光ファイバー
ハブ
ネットワークにおける集線装置
物理層データの修復(リピータ)機能も持つ