
TCP/IPのTCP通信の3ハンドシェイク通信に関して質問なのですが、インターネットを使ったある端末でセンターのサーバーと6秒に1度程度3ハンドシェイク通信を行ってインターネット回線が正常かどうかを判定する機能を持っているそうなのですが、その時に1回の通信でどの程度のパケットをやり取りしているのかということを質問してみたら、約1.2kbyte程度のパケットをやり取りしていると業者の方が言っていました。
ちょっと興味があってWireSharkでこの端末とサーバ間のパケット通信をのぞいてみたところ、端末が1.2kbyte送信していたのですが、サーバからのACKと思われるパケットが1.2kbyteのパケットを返してきていて、再度端末が60バイト程度のパケットをサーバのIPアドレスに送信していました。
私はてっきり、端末とサーバー間のこの3ウェイハンドシェイクのパケットの総量が1.2kbyteだと思っていたのですが、これだと1.2k + 1.2k + 60 = 2.46kbyteとなると思うのですが、パケットのやり取りとしては正しいのでしょうか?
サーバー側が受信したら同じ容量の1.2kbyteのデータをACKとして返してきているように思うのですが、Wiresharkで見ても全く同じデータでは無いようでした。サーバはデータを受け取ったら、ちゃんと受信したという1 or 0のデータみたいなものを返せばよいだけだと思うのですが、理由はあるのでしょうか?
No.2ベストアンサー
- 回答日時:
TCPのAckは、「ここまでのデータを受信したよ」という信号なので、ペイロード(アプリケーションデータ)が乗っている必要はありません。
もちろん、相互にデータをやりとりするようなアプリケーションであればAckのパケットにデータをつけて送信することもありますが、FTPなどでデータをダウンロードする場合などデータが一方向しか流れない場合は、AckはTCPのヘッダだけ流れることもよくあります。
開発はやったことがないので、実際のプログラムでどのように作るかまでは知識が無く、お答えできません。
> Wiresharkでモニタできるデータというのは”あくせとめでぶ”の”あくせ”の層ぐらいまでしか確認できないみたいなことを聞いたことがありました。
Wiresharkは時々使用しますが、データリンク層のプロトコルまでしっかり拾えますが。データリンク層が拾えないなんて言うのは何かの間違いでしょう。
# 余談ですが、「あくせとめでぶ」は「あぷせとねでぶ」の間違いでは?
# http://ja.wikipedia.org/wiki/OSI%E5%8F%82%E7%85% …
回答頂きありがとうございました。
私も憶測でいろいろと発言してしまい大変申し分けありません。いろいろな状況でACKに乗せるデータもいろいろみたいですね。いろいろなことを勝手に勘ぐってしまっています。確かなことはACKは応答の意味だから、”ちゃんと届いたよ”ということを受けた方が送信した側に返せば大方役目を果たしてますね。
私は勝手に送信側が出したデータが受信側に届くと、受信側が”ちゃんと届いたよ、だって、あなたが送ったデータってこれでしょ! ほら”みたいに全部のデータを送り返すようなやり方はちょっと非効率ですね。別にそこまでしなくてもTCP通信ってデータのチェックサム機能にCRCチェックを行っていたと思うし、かなり厳しいことをやったりしてましたよね、確か。遅れてなければ、TCPなら再送のをWireSharkで見たことがありますし、2,3重のデータの正確性を重んじていることはなんとなくわかります。
”め”と”ね”は大変申し訳ありません。ありがとうございました。
”め”ってなに?ってかんじですね。
周りにWireShark仲間がおらず勝手に勘ぐりながら使わせて頂いているような状態です。物理層以外はすべて表示されるというのは知りませんでした。今後ともよろしゅう。
No.1
- 回答日時:
TCPの3way handshakeであれば、通常 SYN, SYNACK, ACKのいずれもペイロードを乗せることは通常有りません。
なので、パケットサイズとしてはIP+TCPで40byteくらい(イーサネットのフレームヘッダ入れたらもう少し大きい)のはずです。もし1.2kbyte程度のデータを持っているのであれば、TCPレベルではなくてアプリケーションレベルで何らかのセッション確認をしているものと推測します。こうなるとアプリケーションの仕様などを知らないと何ともいえませんね。
回答頂きありがとうございました。
アプリケーションレベルで何らかの確認をしているということですね。そうすると、そのやり取りはあくまでユーザ側のプログラムでの取り決めだからそこはユーザの仕様によるということなのですね。
私はTCPというプロトコルは、自分がクライアントで送ったデータが1.2kbyteあったら、サーバ側でACKとして返信している1.2kbyteは、ちゃんとサーバ側にクライアントが送信してきたデータがちゃんと届いているということを確認させるためにわざわざそれと同じものを送ってきて、”ほら、ちゃんと届いているでしょ”と確認させるために同じものを送ってきていて、クラアント側もそのデータとチェックサムを確認して、最後は60byte”OK! 了解”って感じで最後のデータを送信しているように感じていたのですが、
別にこれはTCPの物理層に近いプロトコルのやり取りというわけではないのですね。たぶんMicrosoftのVC++とかで作ったプログラムではVC++のTCP/IP通信のソケットプログラムのモジュールに、アプリケーション層のデフォルトの仕様として入っている可能性は十分に考えられますね。
そういえば、Wiresharkでモニタできるデータというのは”あくせとめでぶ”の”あくせ”の層ぐらいまでしか確認できないみたいなことを聞いたことがありました。私の勘違いかも
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
高速シリアル通信での大容量の...
-
Winsock 受信について
-
HTTP POST送信のヘッダの書き方
-
クリープを入れないコーヒーな...
-
ワード ある日突然 文書の表...
-
ダウンロードができません
-
友達にパソコンを貸すことについて
-
Microsoft office 2010
-
iPhoneでav4と言うエ○サイトの...
-
2台のPCでRS-232C接続でファイ...
-
wordの文書をPC画面中央に表示...
-
家電製品が入っていた箱を捨て...
-
av4と言うエ○サイトって動画を...
-
パソコン関係の雑誌でどんなの...
-
CISCO上でtftp操作
-
MozBackup 日本語版
-
スマホでは見れるんですけどパ...
-
家の中に、2つ欲しいものとい...
-
何で元のファイルとアップロー...
-
FTPソフト filezillaのキューフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UDPでマルチスレッドは可能か
-
パリティビットはわかるけど、...
-
UDPの送信確認
-
インターネット回線について
-
Winsock 受信について
-
ペイロードって何ですか?
-
TCP/IPのデータ送受信の"確実性...
-
同期速度とは
-
Googleドキュメントの安全性に...
-
シリアル通信でのデータ分け
-
スマホでauなどの大手キャリア...
-
セル、データグラム、パケット...
-
通信量の違い(ストリーミングと...
-
パケットのフィルタリング
-
リピータHUBでコリジョンが認識...
-
RS232Cからイーサネット(LAN)へ...
-
ワード ある日突然 文書の表...
-
wordの文書をPC画面中央に表示...
-
クリープを入れないコーヒーな...
-
FTPソフト filezillaのキューフ...
おすすめ情報