• ベストアンサー

3ウェイハンドシェイクについて

TCP通信を行う場合、3ウェイハンドシェイクでパイプをつくるようですが、その始め(通信の始め)にSYNを送り、その返信にACKを返す仕組みになっていると思います。そのSYNを送るときに、MAC、IP、TCPヘッダーをつけたパケットを送ると思うのですが、アプリが作ったデータもまた送るのでしょうか?通信できるかどうかを確かめるだけなら最初の通信はデータが必要ないと思うのですが・・・。また、データをつけないパケットなども送ることができるのか(フォーマットに合わないような気が・・・)どうかもあわせてお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちわ。#1です。 >それではデータを送受信する段階になったとき、 >アプリデータにMAC,IP、TCPヘッダーを付ける作業をして通信を行い、 > その前の段階では(3-Way Handshake)MAC、IP、TCPヘッダーしかないパケットで通信する > (コネクションを確立する)という認識で正しいでしょうか? あっています。 3-Way Handshakeを行っている間に限って言えば、どのような通信であってもパケットフォーマットは同一になり、アプリケーションのデータは載りません。 コネクション確立後は、パケットの中に設けられている"上位レイヤのデータをセットする部分"に、通信を行う各アプリケーションが必要なデータを埋め込むことになります。 コネクション確立後であっても、正しく通信を行うために宛先/送信元MAC、宛先/送信元IP、TCPヘッダなどの情報は付加されています。

その他の回答 (2)

  • o_tooru
  • ベストアンサー率37% (915/2412)
回答No.3

こんにちは、疑問はつきませんね。 さてご質問の件ですが、下記のサイトが詳しいかも知れません。 TCPのセッションシーケンスは、3つの段階に分かれます。まずはじめが、コネクション確立シーケンス、データー転送シーケンス、コネクション終了シーケンスの3つです。 そちらのご質問の通り、最初の「コネクション確立シーケンス」ではデーター長が0バイトの状態で、コネクションを確立します。一度コネクションが確立しましたら、そこから「データー転送シーケンス」に移行します。 データーをつけないパケットとのことですが、下記のサイトの図にも書いてありますが、データー格納部分の定義は、0~可変長ですので、0でも問題ありません。

参考URL:
http://www.picfun.com/lan19a.html
回答No.1

詳しい本を見れば分かりますが、いわゆる3-Way Handshakeの間はアプリケーションのデータは送られません。 アプリケーションのデータが送信されるのは、コネクションが確立されたからになります。 #質問ではパイプと書かれていますが、一般的にコネクションといいます。 データをつけないパケット...というのが意味が良く分かりませんが、MACやIPという意味であれば、送ることはできません。 というか、送ることはできますが、相手先で破棄されてしまいます。

noname#46712
質問者

補足

VDSLさん、貴重なご回答ありがとうございます。「アプリケーションのデータが送信されるのは、コネクションが確立されたからになります。・・・アプリケーションのデータが送信されるのは、コネクションが確立されたからになります。」とありますが、●それではデータを送受信する段階になったとき、アプリデータにMAC,IP、TCPヘッダーを付ける作業をして通信を行い、その前の段階では(3-Way Handshake)MAC、IP、TCPヘッダーしかないパケットで通信する(コネクションを確立する)という認識で正しいでしょうか?

関連するQ&A