• 締切済み

インターネットのパケット通信について

Javaを使ってインターネットにアクセスできるプログラム作成の勉強中です。(Java言語も勉強中) マイクロソフト社のネットワークモニター3.1を使って任意のホームぺージアクセス時のデータやり取り(通信)を観察していますが、それらのデータが何を意味するのか、何の為のデータなのか分かりません。 ネット上で調べてみましたが、ネットワーク通信の入門編ではHTTPとは… TCPとは…などの説明はあるものの、自機PCからサーバーに対して何を送信して、サーバーから何が返信されて…と言う詳細の説明を見つけることが出来ず、図書館で文献を漁ってみたのですが目ぼしいものが見つかりませんでした。 取り敢えずパケット通信の手順とその内容を知りたいと思っており、最終的にはインターネエクスプローラ「もどき」のプログラムが組めることを目指しています。 ネットワーク通信(パケット通信)の詳細を解説した書籍やURLなどありましたら教えて下さい。

みんなの回答

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

HTTP通信手順は RFC 1945 / RFC 2616のあたりで規定されています。 HTTP RFC のキーワードで検索 AP層を使うだけなのでパケット通信の詳細等は知らなくても平気です。

mark225
質問者

お礼

早速の回答を有り難うございました。 お教え頂いたキーワードで検索して調べてみます。

関連するQ&A

  • TCP/IPでの通信の仕組み(パケット分割)について

    TCP/IPでのパケットの分割の仕組みで疑問に思ったことがあったので質問します。 本を見ると(日経NETWORK 新ネットワーク超入門より) TCPの役割:IP機能の負荷を減らすため、データが伝送途中で分割されないで送れる最大サイズになるように区切る。 ルータの役割:ルータ内のIP機能が、転送先の回線で決められたサイズに合わせて分割したりする。 と書いてあったのですが、 端末A -- ルータ1 -- ルータ2 -- サーバ (MTU:1500B) (1000B) (500B) (それぞれ、端末A ルータ1 MTU 1500B ルータ1 ルータ2 MTU 1000B ルータ2 サーバ MTU 500B と仮定) のようなトポロジを仮定した場合 端末Aがサーバと通信する場合はどのように通信が行なわれるのでしょうか?

  • パケット

    tcp/ipの勉強をしています. インターネットを通じて目的のサーバにたどり着くまでにデータを分割して送信するとわかりました. 具体的にどのレイヤでパケット(?)の分割をするのでしょうか? よろしくおねがいします.

  • 任意のTCPパケットを送信するプログラムの実装

    TCP 通信確立後、任意のパケットを送信するプログラムを 作成しようと考えてます。ここでの任意のパケットとは、 下記のように TCP ヘッダの値を色々と設定したパケットを 指します。 ・TCP ヘッダのすべての制御フラグを有効にしたパケット ・TCP ヘッダのチェックサムを意図的に間違えたパケット 任意のデータを送信するだけであれば、通常の socket プログラムで実装できると思うのですが、TCP ヘッダを 色々と設定するプログラムとなると、どんな実装になるの でしょうか。C だと SOCK_RAW で socket 通信するよう、 実装するのでしょうか。 実装は C、perl を考えてます。

  • 1パケットっていったいどのくらいの量?

    ネットワークアーキテクチャに詳しい方々に質問します。TPC/IPを勉強中なのですが、素朴な疑問があります。1パケットとはいったいどれくらいの量なのでしょうか。インターネットで調べたところ、携帯電話で利用する1パケットは128Byteというところまでしか見つけることができませんでした。これは一般的に128Byteということでいいのでしょうか?それともTCP/IPでの通信を利用するアプリケーションによってそれぞれことなるものなのでしょうか。どなたかご回答していただければとおもいます。よろしくお願いいたします。

  • TCP/IP通信3ハンドシェイクについて

    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のデータみたいなものを返せばよいだけだと思うのですが、理由はあるのでしょうか?

  • UDPパケットの分割について

    こんにちは。 現在、クライアント&サーバの通信プログラムを作成しています。 クライアントがサーバに接続しにいく際、サーバの待ち受けポートにクライアントが UDPでブロードキャストしています。 その際、クライアントの情報もUDPに乗せて、送信しています。 ここで、問題なのですが、ネットワークモニタで通信データを見てみると、 クライアントから送信するUDPデータが1500バイト?を超えると、UDPパケットの分割が行われ、 2つめのデータが、UDPではなく、IPで送信されています。 しかも、2つめのIPのパケットがサーバ側に届くケースと届かないケースがあるように見受けられます。 (環境の違いかもしれません。) 2つめのパケット破棄は破棄が起こる環境では必ず起きます。 破棄が起きない環境では一回も起こりません。 スイッチ、NIC等で、破棄することってあるのでしょうか? ネットワーク上の問題っぽいので、OSの違い(Win2K pro,Win2k advanced server) などには関係ないですよね? どなたが、ご存知の方がおられましたらご教授願います。

  • データ通信にかかるパケットについて

    質問です。書籍やWEBで検索しても一向に分かりませんでした。 問題 MTUが1500バイトの通信回線システムにおいて、300KBのデータを送信することを考える。このとき下記の問いに答えなさい。ただし、1KB=1024Bとして計算しなさい。 (1)IPヘッダに20バイト、TCPヘッダに20バイト付加して送信する。すべてのデータを送るためには、何パケットに分割すればよいか。

  • プロトコル間のデータ通信はどうやって?

    ネットワークについて関心があります。 プロトコル間のデータ通信はどうやって行われているので しょうか? (以下は間違いを含んでいるかもしれませんが、 説明となります) TCP/IPを使用して、インターネットを利用します。 送信する場合は、まずsocketを利用して、TCP、もしくはUDPに データを渡します。 ☆この時点で、ひとつ疑問なのは、TCPならば、TCPという名前の プログラムが存在しているのでしょうか? そして、適切なヘッダ、トレーラ(付いたかは自信がない)が くっ付けられて、それがIPにわたされる。 またそれが、PPPに渡される。そして、デバイスドライバに 渡される。 といった具合に、どんどんデータが包まれているわけですが、 その際のデータの受け渡し方法はどのようなものなのでしょうか? 上で質問した、TCPならばTCPという名前(これがそのまま名前じゃ ないかもしれませんが)のプログラムが存在する。という認識が あっているとすれば、IPという名前のプログラムが存在して、 PPPという名前のプログラムが存在して、そのそれぞれのプログラム間 でデータ通信を行っているはずです。プロセス間通信だから、 ソケットなのか、名前つきパイプなのか、共有メモリなのか、、 そこが気になります。 OSの機能の内部構造に関わるものだからか、 この話題についてプログラムの構造の観点から、記述された ものを見たことがありません。 宜しくお願いいたします。

  • インターネットとパソコン通信の違い

    ネットワークの勉強をはじめたのですが、パソコン通信とインターネットの違いの所で少し詰まっています。内容はパソコン通信での通信は無手順、インターネットはTCP/IPと書いてあったのですが、なぜパソコン通信は無手順で、インターネットはTCP/IPを使用するのでしょうか。

  • パケット通信

    C言語初心者です。 H8が乗っているコントローラとシリアル(RS232C)で繋がっている機器間で、 パケットを構成し通信したいのですが、そのパケットの快適な構成方法がわかりません。(コントローラ側のプログラムを作っています) イメージとしては構造体を使用すると快適なのかな?と思うのですが、 よくわかりません。 機器側のパケットは仕様があり、 スタートコード(2)-データ長(1)-データ長チェックサム(1)-データ(n)-データチェックサム(1) のような構成になっています。 ( )はバイト数です。 バイナリデータでの通信です。 データの先頭にコマンドコードがあり、機器の制御をするような感じです。 例えばですが、 typedef struct { unsigned char start[2];----->スタートコード(固定) unsigned char len;---------->データ長(変動) unsigned char len_cs;------->データ長チェックサム(計算) unsigned char data[SIZE];--->データの中身(変動) unsigned char data_cs;------>データチェックサム(計算) } packet; というようなやり方で、固定データや変動するデータを構造体として 使用することはできるのでしょうか? unsigned char cmd[] = {0x00,0x00,・・・・0x00} のように強引にスタートコードからデータ、チェックサムを 配列で並べて送信すると機器はちゃんと動作します。 (チェックサムの計算も電卓で計算してから書いてます) ただ、コマンドごとにこんなパケットを構成しないといけない のは手間ですし、何かブサイクに思えます。 快適なパケット作成の方法があればぜひ教えて下さい。 よろしくお願いします。

専門家に質問してみよう