• ベストアンサー

TCPのコネクションについて。

TCPのコネクションがよくわかりません。 3ウェイハンドシェークでお互いに通信するのを了承しあう、という説明がよくあると思うのですが、それをしたのがなぜコネクションになるのでしょうか?それをしないでデータを送っても破棄されるということでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

なかなかわかりずらいですよね。 > スリーウェイハンドシェイクにより双方向に通信路を確保することができるようになるというわけです。 > の部分ですね…。 > なぜこれをやったら「通信路を確保」できたのでしょう? ここで言う「通信路」というのは「通信回線」よりもはるかに高度の概念です。 コンピューター内のソフトやファイルまで含みます。 例えとして航空管制を使いましょう。 航空機が管制空域に入ると管制官と連絡を取りスリーウエイハンドシェイクで相互確認を取ります。(通信路の開設) このあとは適宜情報をやり取りし、管制空域を離脱するときに通信路を切断します。 > やる前とやった後で何が変わったのでしょうか? お互いに通信台帳を準備しこれと突き合わせながら通信していきます。 > これをやらずにTCPヘッダつきのパケットを送ってもだめだよ、ってことでしょうか? はい、通信路を開設せずにTCP/IPでの通信はできません。 UDPなら可能ですが通信の信頼性はがた落ちです。

netw2009
質問者

お礼

回答ありがとうございます。 うーん、なかなか難しいのですね…。 TCPのヘッダに関して、よく勉強すれば分かるのでしょうか…。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

キーワード「コネクションとは」でGoogle検索して最上位にヒットする次の解説は分かりやすいと思いました。このWebページ内のどの記述が分からないのか質問者から指摘があればより詳しい回答ができるかもしれません。 http://www.7key.jp/nw/tcpip/tcp/connection.html 3ウェイハンドシェイクをしないでデータを送るのであれば,それはそもそもTCPではありません。そのような送信をするのはUDPです。 http://www.7key.jp/nw/tcpip/tcp/udp.html

netw2009
質問者

お礼

回答ありがとうございます。 >上記のように、3つのパケットをお互いに交換してコネクションを確立する手続きの事を「スリーウェイハンドシェイク」と呼びます。スリーウェイハンドシェイクにより双方向に通信路を確保することができるようになるというわけです。 の部分ですね…。なぜこれをやったら「通信路を確保」できたのでしょう?やる前とやった後で何が変わったのでしょうか? これをやらずにTCPヘッダつきのパケットを送ってもだめだよ、ってことでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • kazzs
  • ベストアンサー率40% (129/322)
回答No.1
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TCPコネクションについて

    はじめまして 宜しくお願いいたします。 以下ご質問させてください。 TCPコネクションについて クライアント⇔サーバ間通信において、 ポート21からポート80(HTTP)に対してTCPコネクションをオープン することはできるのでしょうか? (クライアントポート21からサーバポート80に対してアクセスする ことってできるのでしょうか?) 自分の認識では・・・ TCPクライアントはダイナミック(OSが割り当てたランダムなポート。しばしば1024から4000の間)にポートを選択すると認識しているので が。 最初にFTP通信をおこなっており、その継続セッションでHTTP通信をおこなうといった場合にそういった使い方をするのでしょうか? 以上 宜しくおねがいいたします。

  • WindowsのTCPコネクション管理

    Windows server 2003及びwindowsXPにおいて、以下のような動作を確認しております。(他のバージョンは未確認) [動作] あるIFからTCPコネクションを張った状態で、そのIFの無効化(非活性化)を行うと、TCPコネクションが切断される。 これはWindowsの仕様なのでしょうか? ちなみにUNIX系OSで同様のことを行っても、TCPコネクションは切断されません。 また、通信の対向マシンではTCPのFIN、RSTなどは受信していないことから、WindowsOS内部で何かしらの形でコネクションを強制切断していると思われます。 以上、ご回答をお願いいたします。

  • セッションとコネクション

    TCP・IPについて勉強をしているのですが、コネクションでやっていることについてはわかるのですが、セッションとは何が異なるのかが分かりません。 コネクション、セッションの双方に切断・確立する等の記述があり、混乱してしまっています。 現在の私のイメージとしては ・コネクションは仮想的なデータ通信路。 ・セッションはやり取りの管理をおこなう。 となっています。 例えば、Bフレッツハイパーファミリーはセッションが2つしか貼れないというのは、どのようなことなのでしょうか。 どなたかよろしくお願いします。

  • TCPスリーウェイハンドシェイク時の転送データについて

    タイトルにもありますように、TCPを使用した通信ではスリーウェイハンドシェイクを行って通信路を確認した後にデータ転送を行うと思うのですが、スリーウェイハンドシェイク時に送りあうデータとはTCPヘッダだけなのでしょうか? TCPヘッダだけを送るのであればTCPヘッダは約20バイトで、イーサネットで送るのであれば46バイト以下は破棄されて送れないのではないでしょうか? またTCPヘッダ+データを送るのであればデータの部分は何を送るのでしょう? 当方ネットワークを勉強中の初心者です。説明が分かりづらく申し訳ありませんが、ご教授ねがいます。

  • コネクション とは?

    よく、ノード間で「コネクションを張る」という表現がありますよね。 この場合、イメージとしてはノードの間で互いが紐で結ばれ、以降のデータ伝送はその紐を 通じて行うということは理解できます。 でも紐なんてないわけで、この「コネクションを張っている」状態とは、実態としてどういう状態なのでしょうか? (コネクションに限らず、パスを張るという表現もありますよね) 何か具体例でもあると、大変わかりやすいのですが。。。 ちなみに、この疑問の発端はSocket通信から来ています。

  • コネクションプールについて。

    いつもお世話になっております。 MySQLへのコネクションを確保しておく コネクションプールを作成したのですが、 このコネクションプールを利用して Select文を実行した時に 古いデータを取得してくる事があります。 コネクションは一度接続されたら それ以降常時接続し破棄は行なっていません。 その為コネクション内に古い情報が残っているのかなと考え、 これを回避する為には使うたびにコネクションのインスタンスを発行し、使い終わったら破棄しなければならないかという考えに至りました。 しかしそれでは、プールの意味が無くなってしまい本末転倒だと思い煮詰まってしまいました・・・。 お手数ですが、 コネクションプールとはどのように作るのが正しいのか教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • TCP/IP通信でのコネクションロスト(ソケットエラー)の検知について

    インターネット上での対戦ゲームの作成を行なっているところです。 サーバーを挟んでクライアント間で双方向の通信を行なっています。  A → サーバー → B  A ← サーバー ← B TCP/IPは信頼性の高い通信方法ということで、データ抜けなどは 心配しなくても良いと聞いています。 もし、データ抜けなどが発生した場合はコネクションロストの状態になると。 実際のプログラミングではソケットを使用しています。 コネクションロストが起きると、ソケットエラーかソケットクローズで検知できます。 実際に例えばクライアントAを強制終了させるとサーバーはただちに ソケットクローズを検知します。 ここで、問題はデータを送っても届かないのに、 ソケットエラーもソケットクローズも起きない状態が発生することです。 これはインターネットの経路上になにか問題が発生したと考えていますが このような状態はタイムアウトなどで監視する以外に検知する方法はないのでしょうか? クライアントはウィンドウズでVB6.0のwinsockを、 サーバーはLinuxを使用しています。 なにかアドバイスをいただければありがたいです。

  • ソケットを使ったTCP通信

    はじめまして. 最近ネットワークの勉強を始めた学生です. ソケットを使ったTCP通信について質問させてください. クライアント側はsocket(), connect()でコネクションを確立した後に何回か連続してsend(), recv()を行いたいのに,サーバ側がファイアウォールや侵入検知システムを使って途中で通信を終了するようにしてしまっている場合,クライアント側は再びコネクションを確立させなければ全てのsend()を行うことはできないのでしょうか? よろしくお願いします.

  • コネクション指向型サービスについて

    ネットワーク通信についてふと疑問に思ったのですが… もし、仮にトランスポート層、インターネット層、データリンク層が全てコネクション指向型のプロトコルだとすると、データリンク層から順に3層にわたってコネクションの確立が必要なのでしょうか? その場合、各層のサービス・プリミティブはどういった流れになるのでしょうか?

  • ルータを挟んだコネクションプール

    [Tomcat利用のWebアプリケーションサーバ]~[F/W兼ルータ]~[DBサーバ] という構成のシステムがあります(サーバは互いに別サブネット)。 ここで、Webサーバ~DBサーバ間にコネクションプールを使うか否かで内輪モメしています。 私の考えでは、「無通信のコネクションを張りっぱなしにすると、ルーティングテーブルが一定時間で消去されて通信不能になり、しかもWebアプリはそれを検知できない」なんですが、いまいち自信がありません。 パフォーマンス上、コネクションプールが欲しいのも事実なんですが、この構成で実現できるものなのでしょうか?