コンピュータネットワークにおけるTCP/IPについてのメモ
TCP
3ウェイハンドシェイク
■概要
・ホスト間でコネクションを確立し、通信を開始するための仕組み
・以下の信号をお互いに送りあう
・ホストA
→SYN:1
→Ack:0
→シーケンス番号:ランダムな値
→確認応答番号:0
・ホストB
→SYN:1
→Ack:1
→ シーケンス番号:1
→確認応答番号
・SYN、AckはTCPヘッダに含まれている情報
・確認応答番号は相手から受信したシーケンス番号+自分が送るデータのサイズ
・シーケンス番号は
順序制御
・シーケンス番号を使う
再送制御
・Ackが相手のホストから帰ってきたら自分の送信したデータが届いていると判断できる
・Ackが返ってこなかった場合、自分が送信したデータが届いていないと判断して、もう一度同じ内容を送る。
・データが届いていない場合は再送することで信頼性を担保している
ウインドウ制御
・効率的に通信を行うためにAckによる到達確認の頻度を調整する仕組み
・常にAckを確認してからデータを送るのは効率が悪い。
・そこでウインドウサイズを決めておき、ウインドウサイズで指定された大きさのデータまではAckを待たずにデータを一度に送ることとする
・都度Ackを待たなくても良いので通信効率が上がる
・ウインドウサイズは3ウェイハンドシェイクの際にお互いに伝え合う
スライディングウインドウ
・ウインドウ制御によるAckの待ち時間を減らすための仕組み
・最後にAckを受信したら、その時点からのウインドウサイズまでウインドウをずらす
・ウインドウサイズが30だとすると、10までのデータを送信できたことを示すAckを受信した時点で、40まではAckを待たずにデータを送信する
・このようにすることで、本来は30までデータを送信した時点でAckを待たなければならないが、10の時点でAckを受信したことで40まではまとめてデータを送信できるようになり、どんどんデータを送ることができるようになる
フロー制御
・一度にまとめてデータを送ると、相手側のホストがデータを処理しきれなくなる場合がある
・そこで、ウインドウサイズを小さくすることで受信するデータを調節する
UDP((User Datagram Protocol)
・トランスポート層で動作するプロトコル
・TCPのような制御は行わない
・通信の信頼性は下がるが通信速度が高い
・UDPヘッダは8Byteで小さいので、ペイロード部分が大きい。つまり一つのパケットで送信できるデータの量が大きくなる
・パケットの到達確認は行わないので、パケットが通信経路上で失われる可能性がある。
・パケットロスの場合にはアプリケーション側で再送を行うか、パケットロスを許容できるものである必要がある
・UDPの用途に以下がある。
・映像や音声のようにリアルタイムで送られる必要がある場合
・信頼性が求められず、やりとりするデータサイズが小さい場合
・マルチキャスト、ブロードキャストでの通信が必要な場合
■UDPヘッダ
・宛先ポート番号
・送信元ポート番号
・パケット長
UDPヘッダとUDPデータの長さの合計
・チェックサム
UDPヘッダとUDPデータのエラーチェックに使われる値
ポート番号
・ポート番号はTCP/UDPのサービスを識別する番号
・0〜65535まである
・3種類に分かれる
■ウェルノウンポート番号
サーバーアプリケーションに割り当てられる
■登録済みポート番号
■ダイナミックポート番号
クライアントアプリケーションに割り当てられる
データの最大転送量
■MTU(Maximum Transmission Unit)
■MSS(Maximum Segment Size)
■RWIN(Recieve Window Size)
コメント