Network_Transport層TCP、UDPプロトコル

1.TCPおよびUDPプロトコル

TCP/IP协议族的传输层协议

TCP(Transmission Control Protocol)传输控制协议

UDP(User Datagram Protocol)用户数据报协议
  • TCPプロトコル:伝送制御プロトコル、安定した信頼性の高い伝送

  • TCPは、コネクション型で信頼性の高いプロセス間通信プロトコルです。TCPは、全二重サービスを提供します。つまり、データを同時に両方向に送信できます。各TCPには、一時的に送信バッファと受信バッファがあります。データを保存します。

  • UDPプロトコル:ユーザーデータグラムプロトコル、より高い伝送効率

  • UDPプロトコルは、コネクションレス型で信頼性の高いトランスポート層プロトコルです。送信者は、送信されたデータがターゲットホストに到着するかどうか、データが間違っているかどうかなどを気にしません。データを受信するホストは、データを受信したかどうかを送信者に通知しません。その信頼性は、上位層プロトコルによって保証されます。データをより速く、より効率的に転送します。

コネクション型ネットワークプロトコルとは、通信する前に通信する当事者間の接続を確立することを指します。たとえば、電話をかけるとき、両者は話す前に接続を確立する必要があります。

コネクションレス型ネットワークプロトコルは、通信当事者が事前に通信回線を確立する必要がなく、宛先アドレスを含む各パケットをネットワーク回線に送信し、システムが独自に送信ルートを選択することを意味します。たとえば、qq、WeChatは情報を送信します。

2.TCPパケット

TCP将若干个字节构成一个分组,叫报文段
TCP报文段封装在IP数据报中 10部分

ここに画像の説明を挿入

  • 送信元ポート番号:送信側プロセスに対応するポート番号。
  • 宛先ポート番号:受信側のプロセスのポート番号に対応します。
  • シーケンス番号:送信者は、受信者の正しい再組み立てを容易にするために、各バイトに番号を付けます。
  • 確認番号:送信者の情報を確認するために使用されます。これは、シーケンス番号の前のデータセグメントが受信されたことを送信者に通知するために使用されます。確認番号がNの場合、最初のN-1データセグメントが受信されたことを意味します。
  • ヘッダー長:TCPヘッダーデータ構造のバイト長を決定するために使用します。通常の状況では、TCPヘッダーは20バイトですが、ヘッダーの長さは最大60バイトまで拡張できます。
  • 予約済み:拡張ビットとして、現在は使用されていません。

制御ビット:

URG 緊急ビット 緊急ポインタ有効ビット、緊急ポインタとともに使用
ACK 確認ビット ACK = 1の場合、確認シーケンス番号フィールドは有効です。0の場合、無効です。
PSH 緊急 フラグビットが1の場合、受信者はデータセグメントをアプリケーション層にできるだけ早く送信する必要があります
RST リセットビット RST値が1の場合、TCP接続を再確立するように通知されます
SYN 同期(接続)ビット 同期シーケンス番号ビット。TCPが接続を確立する必要がある場合は、この値を1に設定します。
終わり オフビット TCPがデータ送信を完了し、切断する必要がある場合、切断を提案する当事者はこの値を1に設定します。
  • ウィンドウサイズ:ローカルで受け入れることができるデータセグメントの数を示します。この値のサイズは可変です。ネットワークのブロックが解除されると、受信側はメッセージに応答してこのウィンドウ値を増やして送信速度を上げます。ネットワークが不安定な場合は、この値を減らすとネットワークデータの信頼性の高い送信が保証されます。 、TCP制御のトラフィックは、ウィンドウサイズを変更することで実現されます。たとえば、ダウンロード速度は最初は数KBから数MBに徐々に増加します。ネットワーク速度を制御するために使用されます。

  • チェックサム:エラー制御に使用されます。フィールド検査の範囲には、ヘッダーとデータの2つの部分が含まれます。データセグメントは、送信時と宛先に到達したときにチェックおよび計算されます。値に一貫性がない場合、データは破損していると見なされ、受信側はデータを破棄します。

  • 緊急ポインタ:URGと組み合わせて使用​​され、URG = 1の場合に有効です。

  • オプション:TCPヘッダーには最大40バイトのオプション情報を含めることができます。たとえば、最大セグメント長MSS(最大セグメントサイズ)。MSSは相手にTCPを通知します。バッファが受信できるメッセージセグメントのデータフィールドは最大MSSバイトです。

3.スリーウェイハンドシェイクプロセス

ここに画像の説明を挿入

  • PC1はPC2との接続を確立したいので、最初にSYNメッセージ(SYN = 1)を送信して、接続の確立を要求しますPC1seqシーケンス番号x

  • PC2はそれを受信した後、SYNパケットとACKパケットを送信します。つまり、(ACK = 1)確認と(SYN = 1)接続の確立要求を送信します。PC2seqはy、Ack = x + 1、このAckは確認番号です。 、これは、PC1のxがロジャーであることを意味します。

  • PC1は、接続を確立するためのPC2の要求を受信し、確認(ACK = 1)し、seq = x + 1で応答します。Ack= y + 1は、PC2のyが受信されたことを意味します。

フォー。フォーウェーブプロセス

ここに画像の説明を挿入

  • PC1はPC2から切断したいので、最初に(FIN = 1)を送信して切断を要求し、(ACK = 1)確認を送信します。

  • PC2は応答し(ACK = 1)、切断することに同意します。これは半分切断されています。この時点で、PC1はPC2に接続できなくなりますが、PC2は引き続きPC1にデータを送信できます。

  • 次に、PC2もPC1から切断し、送信(FIN = 1)して確認(ACK = 1)します。

  • PC1(ACK = 1)は切断を確認します。

おすすめ

転載: blog.csdn.net/Wsxyi/article/details/113658534