電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

こんにちわ。

#1です。

>それではデータを送受信する段階になったとき、
>アプリデータにMAC,IP、TCPヘッダーを付ける作業をして通信を行い、
> その前の段階では(3-Way Handshake)MAC、IP、TCPヘッダーしかないパケットで通信する
> (コネクションを確立する)という認識で正しいでしょうか?

あっています。

3-Way Handshakeを行っている間に限って言えば、どのような通信であってもパケットフォーマットは同一になり、アプリケーションのデータは載りません。

コネクション確立後は、パケットの中に設けられている"上位レイヤのデータをセットする部分"に、通信を行う各アプリケーションが必要なデータを埋め込むことになります。
コネクション確立後であっても、正しく通信を行うために宛先/送信元MAC、宛先/送信元IP、TCPヘッダなどの情報は付加されています。
    • good
    • 0

こんにちは、疑問はつきませんね。



さてご質問の件ですが、下記のサイトが詳しいかも知れません。

TCPのセッションシーケンスは、3つの段階に分かれます。まずはじめが、コネクション確立シーケンス、データー転送シーケンス、コネクション終了シーケンスの3つです。

そちらのご質問の通り、最初の「コネクション確立シーケンス」ではデーター長が0バイトの状態で、コネクションを確立します。一度コネクションが確立しましたら、そこから「データー転送シーケンス」に移行します。

データーをつけないパケットとのことですが、下記のサイトの図にも書いてありますが、データー格納部分の定義は、0~可変長ですので、0でも問題ありません。

参考URL:http://www.picfun.com/lan19a.html
    • good
    • 0

詳しい本を見れば分かりますが、いわゆる3-Way Handshakeの間はアプリケーションのデータは送られません。



アプリケーションのデータが送信されるのは、コネクションが確立されたからになります。
#質問ではパイプと書かれていますが、一般的にコネクションといいます。

データをつけないパケット...というのが意味が良く分かりませんが、MACやIPという意味であれば、送ることはできません。
というか、送ることはできますが、相手先で破棄されてしまいます。

この回答への補足

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

補足日時:2004/09/29 21:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!