[[ネットワーク用語]] > TCPヘッダ

* TCPヘッダ [#ue74c00a]

TCPヘッダ = Transmission Control Protocol header

CENTER:&ref(fig01.gif);
>http://www.atmarkit.co.jp/fwin2k/network/baswinlan015/baswinlan015_02.html
''TCPヘッダの構造''
TCPでは信頼性の高い通信を実現するために、受信確認やスライディング・ウィンドウ制御、そしてさまざまな付加機能などを用意している。
そのためUDPよりも複雑なヘッダ情報を持っている。「チェックサム」はIPヘッダなどと同様に、1の補数で計算する。

[[TCPヘッダ - Wikipedia>http://ja.wikipedia.org/wiki/Transmission_Control_Protocol#TCP.E3.83.98.E3.83.83.E3.83.80]]

CENTER:&ref(tcp_header.png);

~
CENTER:''Code Bit''
| フラグ | 意味 |h
| [[URG]] | 緊急転送データ |
| [[ACK]] | 受信確認 |
| [[PSH]] | プッシュ |
| [[RST]] | 接続のリセット |
| [[SYN]] | 同期 |
| [[FIN]] | 送信終了 |

[[TCPヘッダの構造 TCP/IP入門>http://atnetwork.info/tcpip/tcpip29.html]]
>TCPヘッダは、20バイトの大きさになります。

#html{{
        <TABLE cellspacing="1" cellpadding="3" bgcolor="#808080" border="0">
          <TBODY>
            <TR>
              <TD bgcolor="#5EB74B" align="center" nowrap width="150"><B>フィールド</B></TD>
              <TD bgcolor="#5EB74B" align="center"><B>説明</B></TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">送信元ポート番号<BR>
              (16ビット)</TD>
              <TD bgcolor="#ffffff">送信元のアプリケーションを識別するための番号<BR>
              TCPは、UDPの場合と違い、送信元ポート番号を0にできない。<BR>
              1~65535まで利用できる。</TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">宛先ポート番号<BR>
              (16ビット)</TD>
              <TD bgcolor="#ffffff">宛先のアプリケーションを識別するための番号<BR>
              1~65535まで利用できる。<BR>
              ※0は予約済み</TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">シーケンス番号<BR>
              (32ビット)</TD>
              <TD bgcolor="#ffffff">送信するデータに、順序を付けるための番号。<BR>
              送信するデータ1バイトごとにシーケンス番号を1つずつ増やす。<BR>
              2<SUP>32</SUP>を超えるとまた同じ番号を繰り返す。</TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">確認応答番号<BR>
              (32ビット)</TD>
              <TD bgcolor="#ffffff">受信したデータに対して、どこまで受信できたのかをバイト位置で表すフィールド。<BR>
              受信が完了したデータ位置のシーケンス番号+1を返す。<BR>
              ACKフラグがONの場合にのみ、ACK番号フィールドを有効とする。</TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">ヘッダ長<BR>(4ビット)</TD>
              <TD bgcolor="#ffffff">TCPデータが始まる位置を表すフィールド。TCPヘッダの直後にデータ部が続くため、TCPヘッダのサイズと考えてもよい。</TD>
            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">URG<BR>

              (1ビット)</TD>
              <TD bgcolor="#ffffff">URG ・・・ urgent:緊急<BR>
              緊急データが含まれていることを示すフラグ。<BR>
              デフォルト値は0、1でONになる。<BR>
              あまり使用されることはない。</TD>
            </TR>

            <TR>
              <TD bgcolor="#ffffff" align="center">ACK<BR>(1ビット)</TD>
              <TD bgcolor="#ffffff">ACK ・・・ acknowledge<BR>
              有効なACK番号がTCPヘッダに含まれていることを示すフラグ。<BR>
              TCPの3ウェイハンドシェイク時の一番最初を除き、他の全てのTCPパケットは、ACKのフラグがONになっている。</TD>
            </TR>

            <TR>
              <TD bgcolor="#ffffff" align="center">PSH<BR>(1ビット)</TD>
              <TD bgcolor="#ffffff">PSH ・・・ push<BR>
              受信したデータをすぐにアプリケーションに引き渡すように要求するためのフラグ。<BR>
              バッファリングを行うと応答性が損なわれてしまう可能性があるので、Telnetでは、このフラグをONにしている。</TD>
            </TR>

            <TR>
              <TD bgcolor="#ffffff" align="center">RST<BR>(1ビット)</TD>
              <TD bgcolor="#ffffff">RST ・・・ reset<BR>
              TCP接続を中断、拒否したい場合にセットされるフラグ。<BR>
              RSTフラグをONにしたTCPパケットを送信することで、現在のTCP接続を強制終了することができる。</TD>
            </TR>

            <TR>
              <TD bgcolor="#ffffff" align="center">SYN<BR>(1ビット)</TD>
              <TD bgcolor="#ffffff">SYN ・・・ synchronize<BR>
              TCPの3ウェイハンドシェイク時のオープン処理の開始に双方のそれぞれがSYNフラグがONにして、ACK番号を同期させる。以降のパケットにはセットされない。</TD>
            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">FIN<BR>(1ビット)</TD>

              <TD bgcolor="#ffffff">FIN ・・・ finish<BR>
              TCP接続を終了させるためセットされるフラグ。<BR>
              双方からFINが送られるとTCP接続が終了する。</TD>
            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">ウィンドウサイズ<BR>
                  (16ビット)</TD>

              <TD bgcolor="#ffffff">受信側のウィンドウサイズを相手に伝えるために利用されるフィールド。<BR>
              単位はバイトで、最大65535バイトになる。<BR>
              0は、データを受信することができないことを表す。</TD>
            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">チェックサム<BR>
                  (16ビット)</TD>

              <TD bgcolor="#ffffff">TCPパケットの整合性を検査するための検査用データが入るフィールド。</TD>
            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">緊急ポインタ<BR>
                  (16ビット)</TD>
              <TD bgcolor="#ffffff">URGフラグが1の場合のみ有効。<BR>
              緊急データの場所を表す。</TD>

            </TR>
            <TR>
              <TD bgcolor="#ffffff" align="center">オプション</TD>
              <TD bgcolor="#ffffff">TCP接続の特性を設定するために利用される可変長のフィールド。<BR>
              MSSのやり取りなどに利用される。<BR>
              32ビットの倍数になるように、必要に応じて最後にパディング(0)が埋められる。</TD>
            </TR>

            <TR>
              <TD bgcolor="#ffffff" align="center">データ</TD>
              <TD bgcolor="#ffffff">TCPのデータ部。<BR>
              TCP接続がタイムアウトして切断されないようにデータを含まないTCPヘッダだけのパケットを送る場合もある。</TD>
            </TR>
          </TBODY>
        </TABLE>
}}

[[TCPヘッダー ‐ 通信用語の基礎知識>http://www.wdic.org/w/WDIC/TCP%E3%83%98%E3%83%83%E3%83%80%E3%83%BC]]
- URG (緊急フラグ) 緊急ポインターフィールドを使うよう指示
- ACK (応答確認フラグ) セグメントが応答確認を持っている
- PSH (転送強制フラグ) 受信可能になったらすぐ送信
- RST (リセットフラグ) 正しくないパケットを受け取ったときの通信リセットの指示
- SYN (同期フラグ) 先頭シーケンス番号の転送
- FIN (転送終了フラグ) 送信終了。受信は可能

** リンク [#mba48911]
[[ヘッダ]]
[[TCP]]

[[URG]]
[[ACK]]
[[PSH]]
[[RST]]
[[SYN]]
[[FIN]]

TCPヘッダ フォーマット
http://www3.ocn.ne.jp/~tkatu/TCPHeader.html

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS