Chapter 04

トランスポート層

クボ太郎 | Kubota Hideya
クボ太郎 | Kubota Hideya
2020.09.30に更新

アプリケーション層について

アプリケーション層は具体的なシステムやサービスに必要な機能を実装するための層です。具体的な構成に関してはアプリケーション層に属するプロトコルの数が多く、また共通する要素も少ない為、今回は説明を省略します。

ポート番号

アプリケーションが通信を行う際、アプリケーション毎に通信するデータの送受信を行うための出入り口が用意されています。この出入り口を ポート といい、各ポートには ポート番号 が割り振られています。なので通信を行う際は、このポート番号を使って情報をやり取りします。

ポート番号には、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 67 / 68
ネットワーク管理 (SNMP) SNMP 161 / 162

ウェルノウンポート以外のポート番号に関しては、ユーザーが独自で設定することが可能 です。ただし、その場合は通信するコンピュータ同士で、 どのポート番号を使うのか についての認識が統一されている必要があります。

TCPとUDP

トランスポート層は通信の制御を行うレイヤーです。トランスポート層ではアプリケーションが求める通信要件を 「信頼性」「即時性」 の2つに分類し、それぞれ、信頼性は「TCP」即時性は「UDP」 というようにプロトコルを用意しています。

文章での説明だとがこの2つのプロトコルの動作を理解するのが困難なのでまずは以下のスライドから雰囲気をつかむことをお勧めします。

このスライドの内容を要約すると

TCP (電子メールやWWWで利用)

  • データを確実に届けるために 1対1での通信 を行う。
  • 通信を確実にする為に、受信側がデータを 受け取れる状態なのかを確認する
    • 意思疎通を行う手段として コントロールフラグ が使われる。
  • 受信側はデータを受け取った場合は 送信元に「受け取ったよ」という報告 をする。
  • 受け取ったという返答が得られない場合は 再度送り返す

UDP (電話やDNSで利用)

  • 通信を開始する際に受信側がデータを 受け取れる状態なのかを確認しない
  • 受信側はデータを受け取っても 送信元に返答しない
  • 複数の相手に同時に データを送信することが可能。

ネットワークの分野では、TCPのような信頼性を重視した通信を「 コネクション型通信 」、UDPのような即時性を重視した通信を「 コネクションレス型通信 」と呼びます。

受け取った先で

トランスポート層は通信の制御を行うレイヤーであると同時に サービスの識別 という非常に重要な役割があります。TCPもUDPもどちらも ポート番号 を利用して、「 コンピュータの中のどのサービス(アプリケーション)にデータを渡せば良いのか 」を識別しています。

まとめ

  • アプリケーション毎の出入り口である ポート は「 ポート番号 」で管理されている。
  • ポート番号の 0~1023番 までは ウェルノウンポート と呼ばれ、既に予約されている。
  • TCP
    • データを確実に届けるために 1対1での通信 を行う。
    • 通信を確実にする為に、受信側がデータを 受け取れる状態なのかを確認する
      • 意思疎通を行う手段として コントロールフラグ が使われる。
    • 受信側はデータを受け取った場合は 送信元に「受け取ったよ」という報告 をする。
    • 受け取ったという返答が得られない場合は 再度送り返す
  • UDP
    • 通信を開始する際に受信側がデータを 受け取れる状態なのかを確認しない
    • 受信側はデータを受け取っても 送信元に返答しない
    • 複数の相手に同時に データを送信することが可能。
  • TCPもUDPも ポート番号 を利用して、データの 渡し先のアプリケーション を識別している。