コンテンツにスキップ

TCP@L4

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. TCPメッセージ

TCPメッセージとは

トランスポート層で作成されるデータをTCPメッセージという。


TCPスリーウェイハンドシェイク

リクエストとレスポンスの送受信の前後に行われるTCP接続の確立のこと。


TCP KeepAlive

TCPリクエストのたびに、送信元と宛先間でTCPスリーウェイハンドシェイクを実施し直すのは非効率である。

そこで、宛先がTCP KeepAliveを定期的に送信し、送信元がACKパケットを返信することにより、TCPスリーウェイハンドシェイクが切断されないようにする。

tcp-keepalive


02. エラー

ECONNREFUSED

送信元が、TCPリクエストを待ち受けていない宛先のポート番号に対して、リクエストを送信したとする。

この場合に、宛先がTCPリクエストを拒否し、送信元に返信するエラーである。

             client(192.168.122.181)                   server(192.168.122.216)
                  |                                          |
                  |                                          |
                  |                                          |
  nc server 11111 |--------------- UDP datagram ------------>|
                  |                                          |
                  |                                          |
     ECONNREFUSED |<-------------- ICMP port unreachable ----|
                  |                                          |
                  |                                          |


ECONNRESET (Connection reset by peer)

Connection reset by peerともいう。

TCP接続中に宛先のプロセスが終了し、接続を強制的に切断したとする。

この場合に、宛先が接続の予期せぬ切断として送信元に返信するエラーである。

宛先はRSTパケットを返信し、接続をリセットする。

             client(192.168.122.181)                   server(192.168.122.216)
             |                                          |
             |                                          | nc -kl 11111
             |                                          |
             |                                          |
             nc server 11111 |--------------- SYN --------------------->|
             |<-------------- SYN+ACK ------------------|
             |--------------- ACK --------------------->| -*-
             |                                          |  |
             |                                          |  |
             |                                          |  | TCP接続確立状態
             |                                          |  |    (ESTABLISHED状態)
             |                                          |  |
             ECONNRESET |<-------------- RST ----------------------| -*-
             |                                          |