それはちょっと好きです:
+-------------------------------------------------------+
| client network server |
+-----------------+ +--------------------|
| (connect) | ---- SYN ----> | |
| | <-- SYN,ACK -- | (accepted) |
| (connected) | ---- ACK ----> | |
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
when client sends...
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
| | | |
| (send) | ---- data ---> | |
| | <---- ACK ---- | (data received) |
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
when server sends...
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
| | | |
| | <--- data ---- | (send) |
| (data received) | ---- ACK ----> | |
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
...and so on, til the connection is shut down or reset
SYN は接続を開始します。通常、接続が確立されているときにのみ表示されます。ただし、TCP 経由で送信されるすべてのデータには ACK が必要です。送信されたすべてのバイトを考慮する必要があります。そうしないと、再送信されます (または、深刻な場合は接続がリセット (クローズ) されます)。
ただし、実際の接続は通常、上の図とまったく同じではありません。これには、次の 2 つの理由があります。
- ACK が蓄積される可能性があるため、1 つの ACK でその時点までに受信したすべてを確認できます。つまり、1 つの ACK で 2 つ以上の送信を確認できます。
- ACK は、TCP ヘッダー内の単なるフラグとフィールドです。1つを送信するには、少なくともヘッダーの帯域幅に加えて、下位層が追加するものが必要です。しかし、データセグメントにはすでにすべてが含まれています...したがって、データを送信している場合は、無料でACKを同時に送信できます.
ほとんどの TCP/IP スタックは、再送信や接続のリセットを過度に危険にさらすことなく、ネイキッド ACK の数を減らそうとします。したがって、次のような会話が可能です。
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
| | | |
| | <--- data ---- | (send) |
| (data received) | | |
| (send) | -- data,ACK -> | |
| | | (data received) |
| | <- data,ACK -- | (send) |
| (data received) | | |
| (wait a bit) | <--- data ---- | (send) |
| (data received) | | |
| (send) | -- data,ACK -> | |
| | | (data received) |
| (send) | ---- data ---> | (wait a bit) |
| | | (data received) |
| | <- data,ACK -- | (send) |
| (data received) | | |
| (wait a bit) | (dead air) | |
| | ---- ACK ----> | |
\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
UDP に関しては、SYN と ACK の組み込みの概念はありません。UDP は本質的に「信頼性が低く」、接続指向ではないため、概念はあまり当てはまりません。通常、確認応答はサーバーの応答になります。ただし、UDP の上に構築された一部のアプリケーション層プロトコルには、送受信されたデータを確認するためのプロトコル固有の方法があります。