TCP/IPと、中継機器と、カプセル化と

基本情報技術者試験の、ネットワーク分野のプロトコル周りについてまとめました。
混乱しやすい中継機器など、特徴を分かりやすくまとめたつもりです。ぜひご一読ください！

##まとめ
OSI基本参照モデルとTCP/IP、中継機器の関係を示します。
![まとめ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/c172866e-8845-e63b-a70b-b62fbf136dfc.png)

##イメージを持つ

突然ですが、まずはエビ🦐 を郵送する場合を考えてみましょう。
エビはそのままでは送れないため、食品の安全を保つためにパックなどに入れられます。
大抵の場合、このパックには中身がエビである旨が表示されているはずです。
その後、パックよりも頑丈な、宛先等が明記された箱に入れられてトラックで運ばれます。
到着後は包装が解かれ、冷蔵庫等で保管されます。
そして、調理の際にようやくエビそのものが取り出されます。
![shrimp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/bdd8588f-b52e-20d0-2372-753ff0921077.png)

エビと同じように、ネットワーク上でデータを送信するためには、ある端末からネットワーク上にデータを上げ、さらに別のネットワークに送信し、そこから宛先の端末まで送り届ける必要があります。
この一連の流れに関する取り決めがTCP/IPです。

では、基本的な用語を見ていきましょう。

##用語を押さえる

###プロトコル
ネットワークを使って通信をする際の経路や信号規則、手順などを定めた規格です。
そして、機種やメーカーごとに使えるプロトコルが異ならないよう、通信機器で使用するプロトコルを統一するために作られたのが<Strong>OSI基本参照モデル</Strong>です。

###OSI基本参照モデル
ISO（国際標準化機構）が定める通信機能のプロトコルで、7つの階層に分かれています。
OSIはOpen Systems Interconnectionの略です。
![OSI参照モデル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/505e0652-a23c-ceaa-8d4b-8b69489d292c.png)
また、これらの規格に従って通信をする際には以下のような中継機器が使用されます。

###中継機器
![中継機器.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/e422e330-30c0-bb8f-f04b-092d1dab765e.png)

* <Strong>ゲートウェイ</Strong> 
OSI基本参照モデル第4〜7層で動作する機器です。
4〜7層のプロトコルを変換する機能を持ち、<Strong>異なるプロトコル間の相互通信</Strong>を可能にします。

- <Strong>ルータ</Strong> 
OSI基本参照モデル第3層のネットワーク層で動作する機器です。
データの<Strong>宛先IPアドレス</Strong>を参照して<Strong>異なるネットワーク</Strong>にデータを中継します。

- <Strong>レイヤ3スイッチ</Strong> 
ネットワーク層とデータリンク層の両方の制御情報に基づいて動作する機器です。
レイヤ2スイッチの機能に加え、ルーターの機能があります。

- <Strong>ブリッジ</Strong> 
OSI基本参照モデル第2層のデータリンク層で動作する機器です。
受信したデータから<Strong>MACアドレス等のデータリンク層の宛先情報</Strong>を参照し、同一ネットワーク内にある<Strong>宛先MACアドレスが属するセグメント全体</Strong>に送信します。
※ MACアドレス：
MACはMedia Access Controlの略です。Apple社との関係はありません。
ネットワーク機器に割り当てられた住所を指し、<Strong>データの受け渡し先を特定する</Strong>​​ために使用されます。
※ セグメント：
ネットワークのさまざまな場所を何らかの基準に基づいて区分した範囲を示す言葉です。
例として、ルータやブリッジなどによって分断されたネットワークのまとまりが挙げられます。

- <Strong>レイヤ2スイッチ（スイッチングハブ）</Strong> 
OSI基本参照モデル第2層のデータリンク層で動作する機器です。
受信したデータから<Strong>MACアドレス等のデータリンク層の宛先情報</Strong>を参照し、同一ネットワーク内にある<Strong>宛先MACアドレスの機器のみ</Strong>に向けて転送します。

- <Strong>リピータ（リピータハブ）</Strong> 
OSI基本参照モデル第1層の物理層で動作する機器です。
受信した信号をつながっている<Strong>他の全ての機器</Strong>に送信します。
また、弱くなった信号波形を増幅し、伝送距離を延長する機能を持ちます。

ここまでご紹介した6つの中継機器のうち、ゲートウェイ、ルータ、レイヤー3スイッチの3つは<Strong>異なるネットワーク同士</Strong>のやりとりに、ブリッジ、レイヤ2スイッチ、リピータの3つは<Strong>同一ネットワーク内</Strong>でのやりとりに寄与します。

このような機器で中継されるOSI基本参照モデルに対応する通信プロトコルのうち、現在デファクトスタンダートとして広く使われているプロトコル群が、<Strong>TCP/IP</Strong>です。

###TCP/IP
IP通信で使用するプロトコルをまとめて規定したもので、4つの階層に分かれています。
10以上の複数のプロトコルの総称ですが、それらを構成する中心プロトコルがTCPとIPのため、TCP/IPと呼ばれています。
![TCP:IP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/615989f5-425b-5dee-ddd2-7fdec8b07ce4.png)

- <Strong>HTTP</Strong>　
HyperText Transfer Protocol。Webサーバとクライアント間でデータの送受信を行うためのプロトコルです。

- <Strong>FTP</Strong>
File Transfer Protocol。各種ファイルを転送するためのプロトコルです。

- <Strong>DNS</Strong>
Domain Name System。文字や数字の組み合わせでできているドメイン名を機器内で識別できるIPアドレスに変換するためのプロトコルです。

- <Strong>SMTP</Strong> 
Simple Mail Transfer Protocol。メールを相手サーバまで届けるためのプロトコルです。
通信にはTCP/25ポートを使用します。
※TCP/25ポート：ポート番号の25番です。ポート番号とは、TCP・UDPにより個々のアプリケーションを識別するために使用される番号のことです。

- <Strong>POP</Strong> 
Post Office Protocol。メールを受信するためのプロトコルです。

- <Strong>TELNET</Strong>
インターネットに接続されている機器を遠隔操作するためのプロトコルです。

- <Strong>TCP</Strong> 
Transmission Control Protocol。送信したデータが確実に届いたかをその都度確認しながら送信する仕組みを持つプロトコルです。

- <Strong>UDP</Strong>
User Datagram Protocol。信頼性や確実性を保証するTCPとは異なり、信頼性を高めるためのチェック等を省くことで、高速性やリアルタイム性を実現するプロトコルです。

- <Strong>IP</Strong> 
Internet Protocol。IPアドレスを付与してネットワーク通信をする仕組みです。
ここで、IPアドレスとはコンピュータや通信機器の1台ごとに割り当てられた識別番号を指します。ネットワーク上の住所とも言われ、Pv4とIPv6の2種類のバージョンがあります。
このIPアドレスは、<Strong>送信先を特定する</Strong>際に使用されます。

- <Strong>PPP</Strong>
Point-to-Point Protocol。仮想的な専用の伝送路を確立し、相互に安定した送受信を行うためのプロトコルです。現在はEthernet上で利用するためのPPPoE（PPP  over Ethernet）プロトコルなどで使用されています。

- <Strong>Ethernet</Strong>
有線LANに関するプロトコルです。

これらの規格に従って、ネットワーク通信が行われています。


##通信をイメージする
さて、エビの郵送と同じように、ネットワーク上でデータを送信するためには、ある端末からネットワーク上にデータを上げ、さらに別のネットワークに送信し、そこから宛先の端末まで送り届ける必要がありました。
実際には カプセル化/非カプセル化 と呼ばれる方法で行われます。

- <Strong>カプセル化</Strong> 
送信するにあたり、データの体裁をそれぞれの階層にあった形に整えることをいいます。
カプセル化では、TCP/IPの各層で送信に必要な情報を含むヘッダが付加されます。

- <Strong>非カプセル化</Strong> 
受信するにあたり送信側で付加した余計な部分を取り除くことをいいます。
カプセル化の際に付加したヘッダを取り除き、最終的にはデータそのものを受信します。

このように、通信を行う場合はカプセル化により宛先やデータの状態等に関する情報が付加され、非カプセル化により不要となった情報が取り外されて最終的なデータが届けられます。
![カプセル化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/2ae791e0-7c08-61a1-9fe9-4fe4816bc3b6.png)

それぞれのヘッダにはさまざまな情報が入っています。
ヘッダには本当にたくさんの情報が入っていますが、ここでは主要なものを取り上げます。

- <Strong>HTTPヘッダ</Strong> 
リクエストヘッダ、レスポンスヘッダなどに分かれており、ブラウザやOS、cookie、レスポンス状況などの情報が含まれています。
ちなみにChromeではデベロッパーツールからNetworkタブで確認できます。

- <Strong>TCPヘッダ</Strong> 
送信元ポート番号や宛先ポート番号、TCPヘッダとデータ部分のエラーチェックを行うために使用されるチェックサムなどが含まれています。

- <Strong>IPヘッダ</Strong> 
送信元IPアドレスや宛先IPアドレスの他、IPヘッダのバージョン番号などが含まれています。

- <Strong>Ethernetヘッダ</Strong> 
送信元MACアドレスや宛先MACアドレスの他、タイプコードなどが含まれています。

以上より、各プロトコルや情報に重要な役割があると分かりました。


##参考
- 五十嵐順子&ラーニング編集部、かんたん合格 基本情報技術者教科書 2019年度、株式会社インプレス、2018
- [TCP/IPをはじめから](https://www.infraexpert.com/study/tcpip.html ) 
- [TCP/IPとは？通信プロトコルの階層モデルを図解で解説 | ITコラム｜アイティーエム株式会社 ] (https://www.itmanage.co.jp/column/tcp-ip-protocol/  )
- [OSI参照モデルをわかりやすく解説 – ルートテック](https://www.seraku.co.jp/tectec-note/industry/osi-reference-model/ )
- [【簡単】スイッチとは？｜インフラエンジニアになりたくて。 ](https://engineer-ninaritai.com/switch/ )
- [【ネットワーク機器】ハブ リピータ ブリッジ スイッチの違い](https://medium-company.com/%e3%83%8f%e3%83%96-%e3%83%aa%e3%83%94%e3%83%bc%e3%82%bf-%e3%83%96%e3%83%aa%e3%83%83%e3%82%b8-%e3%82%b9%e3%82%a4%e3%83%83%e3%83%81%e3%81%ae%e9%81%95%e3%81%84/ )