© 2020 Kubota Hideya All Rights Reserved.
本サイトではTCP/IPについて上位階層から順に解説していきます。ですが、その最上位に位置するアプリケーション層に関しては属するプロトコルの数が多く、また共通する要素も少ない為、他の階層を優先的に学習していきます。HTTPやSMTPなどの各プロトコルに関しては順序解説していきます。
アプリケーションが通信を行う際、アプリケーション毎に通信するデータの送受信を行うための出入り口が用意されています。この出入り口を ポート といい、各ポートには ポート番号 が割り振られています。なので通信を行う際は、このポート番号を使って情報をやり取りします。
ポート番号には、0~65535番 まであります。このうち、0~1023番 までは通信サービス毎にあらかじめ予約されており、 ウェルノウンポート といいます。
主なサービスのウェルノウンポート
サービス | アプリケーションプロトコル | ポート番号 |
---|---|---|
Web | HTTP | 80 |
Web (セキュリティ付き) | HTTPS | 443 |
電子メール (送信) | SMTP | 25 |
電子メール (受信) | POP3 | 110 |
電子メール (認証付き) | SMTP | 587 |
ファイル転送 | FTP | 20 / 21 |
遠隔ログイン | TELNET | 23 |
遠隔ログイン (セキュリティ付き) | SSH | 22 |
ネットワーク管理 (DNS) | DNS | 53 |
ネットワーク管理 (DHCP) | DHCP | 546 / 547 |
ネットワーク管理 (SNMP) | SNMP | 161 / 162 |
ウェルノウンポート以外のポート番号に関しては、ユーザーが独自で設定することが可能 です。ただし、その場合は通信するコンピュータ同士で、 どのポート番号を使うのか についての認識が統一されている必要があります。
トランスポート層は通信の制御を行うレイヤーです。トランスポート層ではアプリケーションが求める通信要件を 「信頼性」 と 「即時性」 の2つに分類し、それぞれ、信頼性は「TCP」、即時性は「UDP」 というようにプロトコルを用意しています。
文章での説明だとがこの2つのプロトコルの動作を理解するのが困難なのでまずは以下のスライドから雰囲気をつかむことをお勧めします。
<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vQUf05BXc_p_XSfYKgLtzhZ_5c-iP3xi27CgDRclg5pKHyMPSUEeKW2KsFd-iXUm9rTl-mj2BAp5kc6/embed?start=false&loop=false&delayms=60000" frameborder="0" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="margin:18px 0;width: 100%; height:420px;"></iframe>このスライドの内容を要約すると
- データを確実に届けるために 1対1での通信 を行う。
- 通信を確実にする為に、受信側がデータを 受け取れる状態なのかを確認する 。
- 意思疎通を行う手段として コントロールフラグ が使われる。
- 受信側はデータを受け取った場合は 送信元に「受け取ったよ」という報告 をする。
- 受け取ったという返答が得られない場合は 再度送り返す 。
- 通信を開始する際に受信側がデータを 受け取れる状態なのかを確認しない 。
- 受信側はデータを受け取っても 送信元に返答しない 。
- 複数の相手に同時に データを送信することが可能。
ネットワークの分野では、TCPのような信頼性を重視した通信を「 コネクション型通信 」、UDPのような即時性を重視した通信を「 コネクションレス型通信 」と呼びます。
トランスポート層は通信の制御を行うレイヤーであると同時に サービスの識別 という非常に重要な役割があります。TCPもUDPもどちらも ポート番号 を利用して、「 コンピュータの中のどのサービス(アプリケーション)にデータを渡せば良いのか 」を識別しています。
- アプリケーション毎の出入り口である ポート は「 ポート番号 」で管理されている。
- ポート番号の 0~1023番 までは ウェルノウンポート と呼ばれ、既に予約されている。
- TCP
- データを確実に届けるために 1対1での通信 を行う。
- 通信を確実にする為に、受信側がデータを 受け取れる状態なのかを確認する 。
- 意思疎通を行う手段として コントロールフラグ が使われる。
- 受信側はデータを受け取った場合は 送信元に「受け取ったよ」という報告 をする。
- 受け取ったという返答が得られない場合は 再度送り返す 。
- UDP
- 通信を開始する際に受信側がデータを 受け取れる状態なのかを確認しない 。
- 受信側はデータを受け取っても 送信元に返答しない 。
- 複数の相手に同時に データを送信することが可能。
- TCPもUDPも ポート番号 を利用して、データの 渡し先のアプリケーション を識別している。