ネットワークエンジニアを目指して。TCP/UDP - ウインドウサイズを利用したフロー制御

初心者にも理解できるネットワーク技術
↓メールマガジン購読はこちら↓

メールアドレス:

ホーム > TCP/IP技術(4) > TCP/UDP - ウインドウサイズを利用したフロー制御

TCP/UDP - ウインドウサイズを利用したフロー制御

はてなブックマークに追加はてなブックマークに追加 このエントリーを含むはてなブックマーク
Yahoo!ブックマークに登録 Yahoo!ブックマークでこのサイトを登録している人数 人が登録
この記事をクリップ!

おすすめ書籍紹介

マスタリングTCP/IP 応用編
入門編を卒業したらこちら。
応用編も入門編と同様に豊富な図を使用し、TCP/IPに関するさらに詳細な解説を記している。
特にパッケットの構造はかなり詳細に解説しており、初心者にはすこしつらいかもしれないが非常に読みやすいのでぜひ読んでみてほしい。

詳解TCP/IP〈Vol.1〉プロトコル
これも 必読中の必読書。
TCP/IPアーキテクチャを、実際にネットワークを組んで通信の動きを観察するという方法で書かれている。
本書に構成されているネットワークは単純なので、実際に同じ構成を組んで実機をいじりながら読み進めると非常に効果的に学ぶことが出来ると思います。

 

信頼性を高めるための方法

TCP では信頼性を向上させるために以下の 3 つの技術を採用しています。

  • 相手が通信可能かどうかを確認する機能
    仮想コネクションの確立
  • 相手にパケットが届いたかどうかを確認する機能
    ACK による到達確認
  • 相手の処理能力に合わせてデータサイズを調整する機能
    ウインドウサイズを利用したフロー制御

今回は最後の「ウインドウサイズを利用したフロー制御」について
解説していきましょう。

 

ウインドウサイズを利用したフロー制御

3 ウェイハンドシェイクで仮想コネクションを確立し、
データの送信中は ACK パケットを使用して到達確認を実施する。

これだけでも、かなりの信頼性向上になっているわけですが、
TCP ではさらにもう 1 つの機能を利用して信頼性向上を図っています。

それは送信するデータ量。

以下のように送信側ノードがむやみにデータを送信した場合、
受信側ノードのデータ処理能力が低く、すべてのデータを受信できない
可能性が発生してしまいます。

 

ウインドウサイズ

 

 

このような状態が続けば、当然通信の信頼性は落ちてしまいます。

そのため受信側ノードの処理能力を考慮しつつ、最適なデータサイズを
送信する機能が必要になります。

この機能を「フロー制御」と呼びます。

 

フロー制御の動作

送信するデータのサイズは、何の情報で最適化されるのでしょうか?

それは「ウィンドウサイズ」を使用して最適化を行っています。
一度に受信できるデータのサイズを「ウインドウサイズ」と呼び、
送信側ノードは受信側ノードあら通知されるウインドウサイズに
従って、送信するデータのサイズを調整しています。

受信側ノードがどのようにウインドウサイズを通知するかと
いいますと、データを受信するたびに返信する ACK パケットに
ウインドウサイズを盛り込んで通知しているのです。

 

フロー制御

 

もし、受信側で処理できなくなった場合は、ウインドウサイズを「0」
にして ACK パケットを送信します。

すると、送信側ノードはデータの送信を中断します。

受信側ノードでデータ受信が出来る状態になると、改めて ACK パケット
を送信することで、データ送信が再開されます。

 

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス:

 

関連記事

トランスポート層(レイヤ 4)の役割
トランスポート層(レイヤ 4)の役割について

ポート番号
ポート番号について

コネクションとコネクションレス
コネクションとコネクションレスについて

UDP
UDPについて

TCP ヘッダ
TCP ヘッダについて

仮想コネクションの確立
TCP ヘッダについて

ACK による到達確認
TCP ヘッダについて

ウインドウサイズを利用したフロー制御
TCP ヘッダについて

TCPウインドウ制御
TCPウインドウ制御とスライディング・ウインドウについて