TCPとUDPについて深堀したので、いろいろなサイトとYouTube動画を参考に、まとめてみました。
参考記事
ネットワークエンジニアとして
ポート番号とは?と代表的なポート番号まとめ
目次 |
---|
ポート番号とは? |
ポート番号の種類 |
主なプロトコルとポート番号一覧 |
「TCP」とは? |
-スリーウェイハンドシェイクとは? |
-「TCP」関連知識 |
「UDP」とは? |
「TCP」と「UDP」の違いまとめ |
ポート番号とは?
通信をする際、送信側にも受信側にもたくさんのアプリケーションが入っている為、
どのアプリケーションからどのアプリケーションまで送るかを特定するための番号。
16ビットの整数(0~65535)で定義されます。
ポート番号の種類
主なプロトコルとポート番号
「TCP」「UDP」とは?仕組みと違いについて
TCP/UDPとは、OSI参照モデルのレイヤー4:トランスポート層の代表的なプロトコルです。
(OSI参照モデルについては、「ファイアウォールの役割/OSI参照モデルまとめ」を参照)
トランスポート層では、どのように通信をするかということを決めていきます。
(通信方法、通信状態の確認方法、異常発生時の対処方法など)
TCP や UDP を使うことで、ある1 台のサーバの 1 つの IP アドレスで、複数のサービス(http/dns/SMTP 等)を提供できるようになります。
また、この機能を「セッションの多重化」といいます。
TCPとUDPをそれぞれ深掘りしていきます。
TCP(Transmission Control Protocol)とは〜信頼性を重視〜
- 信頼性の高い通信を実現するために使用されるプロトコルです。
- 信頼性を高めるために、送信元&宛先双方で状況を確認し合いながら
通信を行います。(コネクション型と言います) - 送信データは、セグメント(パケット)という単位に分割されます。
合わせて覚えたい「スリーウェイハンドシェイク」
TCPは、通信する前、コネクション(接続)を確立する為に、必ず双方(送信元と宛先)で情報の確認のやりとりをします。これをスリーウェイハンドシェイクと言います。
3つのステップ
- 送信側が受信側に、「SYN:1」でセグメント(パケット)を送信。(通信したいことを伝える)
- 受信側が送信側に、「ACK:1、SYN:1」でセグメントを送り返す。(通信OKの意思と、受信側からも通信したいことを伝える)
- 送信側が受信側に、「ACK:1」を送り返す。(送信側も通信OKの意思を伝える)
~関連知識~
◆制御ビット
ビット名 | 意味 |
---|---|
URG(Urgent) | 急ぎで処理すべきデータ |
ACK(Acknowledgement) | 確認応答番号のフィールドが有効(データが正常に届いたかを表す) |
PSH(PUSH) | 受信したデータを即時にアプリケーション層(上位)に渡す |
RST(Reset) | コネクションを強制終了する。異常の検出。 |
SYN(Synchronize) | コネクションの確立を要求 |
FIN(Finish) | コネクションの終了を要求 |
◆セッションとコネクションの違い
セッションは、通信の開始から終了までを管理する1つの単位のことで、コネクションは、セッションでデータ転送を行うための回線のこと。(道筋のようなもの)
◆PDUとは
Protocol Data Unit(プロトコル・データ・ユニット)の略で、通信におけるデータ単位のこと
◆データ単位:パケットについて
データを小分けにして送るという意味があるので、どの層のPDUなのか?に関わらず、データ単位をパケットと呼ぶことが多い。
UDP(User Datagram Protocol)とは〜スピードを重視〜
- 信頼性を考慮せず、送信データの制御や管理といった概念が一切ないプロトコルです。
- 指定されたポート番号に、何も考えずにデータを送ります。(コネクションレス型と言います。)
- TCPとは扱うデータも異なり、データグラムという単位に分割されます。
- 処理の不可が小さい為、スピードが速いのが特徴です。IP電話や動画ストリーミングなど小さいデータの転送で活躍します。