web-dev-qa-db-ja.com

TCPセグメントとa TCPパケットの違いは何ですか?

TCPセグメントはTCPパケットの一部ではありませんか?

これが私が読んだものです:

セグメントは、TCPでトランスポータブルサイズに切り刻まれ、TCPヘッダーでラップされたアプリケーションデータの一部です。

TCPヘッダー自体がセグメントで構成されていませんか?

16
use753231

私達は言う TCP segmentは、プロトコルデータユニットで、TCPヘッダーと、(上位)アプリケーションレイヤーからのアプリケーションデータピース(パケット)で構成されます。トランスポートレイヤーデータは、一般的にsegmentおよびネットワークレイヤーデータユニットの名前はdatagramですが、トランスポートレイヤープロトコルとしてUDPを使用する場合、UDP segment、代わりにUDP datagram。これは、UDPデータユニットをセグメント化しないためだと思います(セグメンテーションは、TCPを使用するときにトランスポート層で行われます)。

Data Encapsulation and the TCP/IP Protocol Stack

元のTCP RFCは、「セグメント」という用語の使い方が不明瞭です。

場合によっては、「セグメント」という用語は、送信されているアプリケーションデータストリームの現在の部分だけを指し、TCPヘッダーは除外されます。たとえば、TCP "最大セグメントサイズ"(MSS)は、このメッセージのアプリケーションデータチャンクの最大サイズであり、TCPヘッダーはカウントされません。

ただし、「セグメント」という用語には、TCPヘッダーを含むTCPメッセージ全体が含まれる場合もあります。実際、少なくとも1つのケースでは、仕様はアプリケーションデータのないTCPセグメントに言及しています(プレーンAcksなど)。

単一のIPメッセージ全体が「データグラム」です。

元のIP RFCでは、リンク層メッセージを「パケット」と呼んでいました。 IPデータグラムを「フラグメント」に分割して、小パケットネットワークのパケットサイズ制限に合わせることができます。

IEEE 802.3 /イーサネットリンク層は、単一​​の隣接する物理層伝送を「パケット」と呼びます。パケットのMACデータリンク部分は「フレーム」と呼ばれます。フレームは宛先MACアドレスで始まり、フレームチェックシーケンスで終わります。 IPデータグラム(またはそのフラグメント)を含むフレームの部分は、「MACクライアントデータフィールド」と呼ばれます。

したがって、技術的には、「TCPパケット」や「IPパケット」などは存在しません。パケットは、IPの下の層からの用語です。 TCPには「セグメント」があり、IPには「データグラム」があります。

8
Spiff

A TCPセグメントはデータグラムと呼ばれます。通常、セグメントまたはデータグラムはパケットです。データグラムまたはパケットがネットワーク層で処理されると、IPヘッダーがデータに追加されます。 IPパケットになります。

トランスポート層は、データをセグメント、データグラム、またはいわゆるパケットと呼ばれる小さな単位に分割します。ただし、通常はそれらをセグメントと呼びます。

2
Lovej

tCPセグメントは単なる概念であり、IPデフラグとは異なります

ip mtuよりも大きなデータを送信すると、1つのipパケットに入れられますが、ipレイヤーは、ipパケットが長すぎて送信できないことを検出します。そのため、大きなパケットをいくつかに分割し、それぞれに同じ識別子ですが、オフセットとデータ長が異なります。受信側はすべての断片を収集する責任があります。すべての断片を受信した後、すべての断片を1つの完全なIPパケットに再構成し、それを上位プロトコル層にプッシュします。

ただし、tcp層の動作は異なります。十分な大きさのデータを送信すると、tcpレイヤーはデータを1つのtcpパケットに入れず、それらを分割します(ただし、ipは行います)。生データの一部を1つのtcpパケットに取り出してから、 tcpパケットからip層へ、tcpパケットの長さはmssによって決定され、後で残りのデータの別の部分を別のtcpパケットに取得し、すべてのデータが送信されるまでプロセスを繰り返します。

tcpがmssを使用しない場合、それは恐ろしいことです。 mssより大きいデータを送信すると仮定すると、1つのtcpパケットのみに入れられます(mssが使用されないため、データは小さな断片に分割されません)。tcpパケットはip mtuよりも大きいため、ipはtcpを分割します小片にパケット。いずれかの部分が失われた場合、tcpパケットは再送信され、時間と帯域幅を浪費します

ps:tcp_mss = ip_mtu-tcp_header

2
albert

TCPヘッダー、「セグメントヘッダー」とも呼ばれ、ペイロード、またはデータ、または「セグメントデータ」は、TCPセグメントのさまざまなサイズ。

2
Florenz Kley

TCP接続を経由してデータを送信すると、送信するデータの量が、1つのパケットでの接続で許可される最大バイトサイズを超える場合があります。この "最大セグメントサイズ"(MSSとも呼ばれます)は、2つのTCPエンドポイント(クライアントとサーバー)間の接続時に "ネゴシエート"(1)されます。 OSIレベル4プロ​​トコルTCPは、スキャッター/ギャザーを担当します。これは、データストリームが小さな部分(セグメントと呼ばれる)に分割され、ネットワークを介して個別に送信されることを意味します。反対側では、TCPレイヤーがパケットを正しい順序で再収集して、送信されたようにストリームを再構成します。セグメントが出発時と同じ順序で目的地に到着するとは何もわかりません。これは、パケットに番号が付けられる理由でもあります。さらに、パケットは受信者によって1つずつ個別に確認されます(2)が、パケットが失われることがあります。その後、パケットの宛先からエミッタにACKは返されません。次に、エミッターはそれを再送信する必要があります(これはTCPの役割でもあります)。パケットが正しく受信されても​​、ACKがエミッターで受信されない場合があります(再度パケットが失われます)。このような場合、エミッターはそれを再送信しますが、受信者はそれをすでに受信したこと(つまり、Dupパケット)を確認し、それを排除しますが、ackを送信者に再送信します。

また、スループットを改善するために、エミッターは複数のパケットを直列に送信でき、前のackが次のパケットを送信するのを待つ必要がありません。これはTCPプロトコルの一部でもあり、スライディングウィンドウと呼ばれます。 ackのために保留中の送信パケット数は制限されています。

(1)実際、交渉はまったく行われていません。各エンドポイントは、自分が処理できる最大サイズを通知します。この値には、20バイトのIPヘッダー、および20バイトのTCPヘッダーは含まれません。 (2)1つのACKで複数のパケットを確認することもできます。

データグラムはIPネットワーク上で送信される、またはUDPなどのコネクションレスプロトコルを使用して送信されるカプセル化されたデータであることに注意してください。パケットは、TCPなどの接続指向プロトコルのカプセル化されたデータです。セグメントは、TCPで送信されるデータストリームの一部です。これらすべての説明については、W.Richard Stevens「TCP/IPの図解」を参照してください。

1
Roger VEBER

ヘッダーはセグメントで構成されていません。ヘッダーは常に同じサイズで、完全でなければなりません。そうしないと、パケットをデコードできませんでした。

あなたが「セグメント」と呼ぶのは、後で他の人と結合されてTCPストリームになります。 See: の「パケット」全体です。

Transmission Control Protocolは、データストリームからデータを受け取り、チャンクに「セグメント化」し、TCPヘッダーを追加してTCPセグメントを作成します。

1
slhck

TCPはアプリケーション層からデータを受信し、このデータをいくつかのデータセグメントに「チョップ」します。 TCPヘッダーが追加された元のデータの断片。このヘッダーの一部は、受信側のTCPプロトコルによって使用されるシーケンス番号です。受信したすべてのセグメント(ヘッダーを除く)を正しい順序で配置し、元のデータを再構成して、アプリケーション層に転送します。

だから、あなたの質問に答えるために; 「TCPパケット」という用語は実際には存在しません。これは、ヘッダーとデータセクションで構成される「セグメント」と呼ばれます。ヘッダー自体は、シーケンス番号、チェックサム、送信元ポート番号、宛先ポート番号などを含むいくつかの「フィールド」で構成されています。

1
Jasper

A TCPセグメントISパケット。セグメントは、TCP 2台のコンピュータ間の接続ストリームの一部です。AデータグラムはUDP用語で「パケット」です。

0
sinni800

IPパケットは、データが添付されたIPヘッダーで構成されます。データは、TCPヘッダーであり、TCPセグメントと呼ばれるアプリケーションデータのセグメントです。TCPセグメントは、通常、TCPパケットを呼び出します。

0
cpx

このような一般的な用語は、プロトコルデータユニット、つまりPDUです。

LAYER # - OSI NAME     - COMMON PROTOCOL OR USE - PDU NAME
-------   ------------   ----------------------   --------------------------
Layer 1 - Physical     - Transceiver            - bits, or a physical signal
Layer 2 - Datalink     - Ethernet               - frame
Layer 3 - Network      - IP                     - packet
Layer 4 - Transport    - TCP                    - segment
Layer 5 - Session      - SIP                    - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application  - HTTP                   - data, request, or response

レイヤー4以降の特定のプロトコルでは、ぼやけることがあります(たとえば、今日まで、本当に純粋にセッションプロトコルであるものは何も知りません。また、一般的な "プレゼンテーション"プロトコルなどはありません。しかし、それは間違いなく、多くのソフトウェア/通信スタックでほぼ別のレイヤーです。

また、前述のように、これらのPDUにはそれぞれ、そのペイロードまたはデータとは異なるヘッダーがあります。ヘッダーには、データに関する情報と、場合によっては相手側で確認するためのチェックサムがあります。

0
LawrenceC