連載:アニメーションで見るパケット君が住む町(10)
TCP課長は几帳面でしっかりもの!
綱野衛二
Roads to Node
2010/7/26
10-2 荷物が届くか事前に確認
では、TCP課長の仕事を確認していきましょう。
先にも述べたとおり、TCP課長のお仕事は「しっかり正確」がうたい文句ですね。これには理由があります。先ほどTCP課長がおっしゃったように、パケット君やイーサ配送君の仕事は「荷物を運ぶだけ」です。それ以上のことは何もしません。
TCP課長「そうです、正しく届いているか、届かなかった荷物はないのか、分割して届けた荷物は順番に届いているのか、これらの事項を考え、またもしダメだった場合を考えて……」
パケット君「ともかく、いろいろ考えてるんだよ。ウチの課長は」
ふむふむ。TCP課長は「しっかり正確」な仕事をするため、いろいろ多岐にわたって考え、手配しているようです。具体的には……
- 届け先に届くこと、届け先の荷物受け取り状態ができることを確認
- 荷物を届けやすいように分割して、それぞれに番号を付ける
- 荷物が届いたかどうかの確認を取る
- 届いていなかった場合に送り直す
- 相手の荷物受け取り状態に応じて荷物を送る量を調整する
- 届いた荷物を並べ直す
などを行います。うん、なるほど、「しっかり正確」ですね。
TCP課長はこれらの仕事を進めるために、2つの道具を用意して使っています。1つは「送付票」です。TCP課長はこれに荷物のことを書き込んで、荷物と一緒に送ります。もう1つが「配送箱」「受取箱」です。これはどんなものなのでしょう?
TCP課長「荷物を届け先別にまとめて置いておく場所が『配送箱』で、相手から送ってきた荷物を一時的に置いておく場所が『受取箱』です。これらを使うことにより……」
うーん、お話が長くなりそうなので、2つの箱についてはまた後で説明しましょう。まず先に、TCP課長が愛用している送付票を見てみましょう。
- 荷物のあて先のサービス事業部
- 荷物の送り元のサービス事業部
- 送る荷物のケース番号
- 次に受け取る荷物のケース番号
- 荷物を受け取ることができる個数
- 荷物の状態
ふむー、いろいろなことが書かれていますね。送付票のそれぞれの内容がどのような役割を持つかは、後ほど順番に説明していきます。
まず、TCP課長の仕事のうち最初の1つで、しかもとても重要な仕事をまず説明しましょう。それは、「届け先と荷物のやりとりが可能であることの確認」です。
先ほども説明したように、3Fまでのパケット君たちの仕事のおかげで、荷物はビルまでは届きます。ですが、TCP課長から見ればそれは届く「かもしれない」でしかありません。TCP課長は、何事も確実じゃないと気が済まない人なのです。
そのため、TCP課長は確認を取ります。こちらから届け先に仮の荷物を送り、届け先からそれに対する返答をもらいます。そして念のため、こちらからもう一度送ります。
図10-3 事前に荷物をやりとりして確認する |
いったい何のためにこんなことをするんでしょうか。
TCP課長「まず、応答があれば、相手までちゃんと荷物が届くことが確認できる。さらにこのときやりとりした荷物に基づいて、これから先の荷物のやりとりで使う番号を決め、やりとりする箱のサイズを教える。またこれを行うことで……」
はい、ありがとうございました。つまり、
- 相手との荷物がやりとりできることの確認
- これから実際の荷物をやりとりするための取り決め
を行う、ということですね。
まず、レイヤ4の2つのプロトコルのうち、TCPを説明します。TCP/IPプロトコル群という名前から分かるとおり、TCPはTCP/IPの中でも重要な役割を果たすプロトコルです。
TCPの役割として、大きく以下の3つを挙げることができます。
- コネクション管理
- 再送制御
- フロー制御
この3つの制御により、TCPは「確実なデータ転送」を担います。レイヤ4の2つのプロトコルのうちTCPを使うことで、上位プロトコルに対し、確実にデータを届けることができるようになります。
3つの制御を確実に行うため、TCPはヘッダに次の項目を持ちます。
![]() |
図10-4 TCPヘッダの構成 |
TCPヘッダの大きさは20バイトです。TCPは上位プロトコルが作成したメッセージを、MSS(Max Segment Size)と呼ばれる値で分割します。分割したメッセージそれぞれにTCPヘッダを付け、これをTCPセグメントと呼びます。
TCPの動作の基本となるのがコネクション管理です。「コネクション」とはTCPが設定する「仮想的な通信路」です。
以前から説明しているとおり、レイヤ3以下のプロトコルではデータをコンピュータまでは転送します。しかしそれは「転送することができる」だけで、確実に「転送が行われる保証」はありません。そこでTCPでは「確実に転送が行われることの確認」を行います。つまり2台のコンピュータ間で、実際のデータ転送はどのように行われるにせよ、データをやりとりできる「道」があることを確認するわけです。これが「仮想的な通信路」である、「コネクション」となります。
コネクションを作る(コネクションの確立)には、「3ウェイハンドシェイク(3way handshake)」と呼ばれる動作を行います。
図10-5 3ウェイハンドシェイク |
ここではTCPヘッダに含まれるフラグ項目のうち、ACKとSYNという値のビットで、TCPセグメントの役割を決めています。SYNは「データ転送要求」であることを示し、これにより相手側は受信の準備を整えます。ACKは「確認応答」であることを示し、相手のデータ転送に対し、それを正しく受信したことを伝えます。
3ウェイハンドシェイクでは、最初にデータ送信を希望する側が「SYN」を送ります。これに対し相手は、SYNに対する応答である「ACK」に加え、こちらからもデータを送信できるように「SYN」を送ります。その「SYN」に対して「ACK」を送ることで3ウェイハンドシェイクは完了し、コネクションが確立します。双方が「SYN」を送ることにより、どちらからもデータを送信できることが確認できます。つまり、コネクションは双方向のデータ転送路ということになります。
なお、TCPの通信では「SYN」は3ウェイハンドシェイク以外では使われません。また、最初のSYN以降の通信はすべて「ACK」扱いになります。
![]() |
10 TCP課長は几帳面でしっかりもの! | |
データ通信を確実に行うために必要な仕事 10-1 2人の上司 |
|
![]() |
10-2 荷物が届くか事前に確認 |
10-3 正しい順番で荷物をやりとり 10-4 相手の状態を確認しつつ送る 10-5 おさらいとまとめ |
関連記事 | |
ネットワーク・コマンド/ツール群の活用法を大紹介 連載 ネット・コマンドでトラブル解決 あなたのLANは健康ですか? 現状改善から一歩進んだ構築術まで 特集:基礎から学ぶネットワーク構築 レスポンスの悪いネットワークシステム どう検証し、解決していくか? 特集:ネットワークトラブルを解決する 運用管理に必須のツール/コマンド群 連載:24×365の運用管理 |
![]() |
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
![]() |
|
|
|
![]() |