避けられないネットワークプログラミングの小さな基盤

ネットワーク関連のトピックは実際には非常に幅広いので、Javaを学習するために、ネットワークの基本、基本的なネットワークプログラミング、要​​求と応答に関連するコンテンツ、およびいくつかの追加の拡張機能に分けたいと思います。
もちろん、議論を始める前に、学習のための準備をする必要があります。少なくとも、Javaの基本的な知識、IOフロー、マルチスレッドの基本的な知識、コンピューターネットワーク関連などの知識が必要です。ここで説明しましょう。これらをあまり恐れないでください。少なくともここで必要なのは、Javaの基本(つまり、少なくとも最も単純なコードの記述方法を知っている)、IOフロー(つまり、IOとは何か、どのタイプのIOに分類されるか)、マルチスレッド(つまり、少なくともスレッドとランナブルがコードにどのように記述されているかを知っている必要があります)、コンピューターネットワーク(つまり、インターネットに接続していて、IPなどの単語を聞いたことがある) )。
以上の条件で、主に前編の内容である純粋な理論的知識について議論します。
基本を理解するために、最初に次の単語を聞いたことがあるかどうかを思い出してください:ip、http、https、ポート番号、tcp、udp、DNS、ipv4、ipv6、localhost ...多かれ少なかれ聞いたことがあると思いますそれらのすべてでさえ。まず、インターネットとの通信方法について考えてみましょう。
たぶん、ページがページを表示するためのURLを入力したと言うでしょう。
ここに画像の説明を挿入
これを見ると、Tomcatにアクセスするときにlocalhost:8080について考えることもできます。私たちにとって、それはリソースを取得するためにサーバーにアクセスしていると見なされます。1つはBaiduからのリソースであり、もう1つはtomcatからマシンにデプロイされたサーバーです。それでは、今述べた言葉を見てみましょう。
まず、最初に表示されるwww.baidu.comとlocalhostはIPアドレスと呼ばれます。IPアドレスは、コンピューター自体に対応するホストのアドレスとして理解できます。Baiduのようなドメイン名の場合、DNSが責任を負います。アドレスを解決するため、およびアドレスを見つけたら、必要なポート番号を探す必要があります。ポート番号は2バイトを占めます。TCPとUDPはそれぞれ0〜65535です。ポートは対応するプロセスですが、Baiduポート番号を反映していません。理由は、httpとhttpsにデフォルトのポート番号があり、httpが80、httpsが443であるため、次の方法でもBaiduのホームページにアクセスします。
ここに画像の説明を挿入
ポート番号の場合、0から1023はいつでもプログラムによって占有され、1024から49151はユーザーとプロセスに割り当てられ、49152から65535は動的またはプライベートポート番号です。それでもポート番号がわからない場合は、独自のタスクマネージャーを開いて確認することをお勧めします。
ここに画像の説明を挿入
ここでのPIDは、ポート番号の具体化です。(お持ちでない場合は、右クリックしてこのフィールドを追加してください。)
これを見て、少なくともそのようなプロセスを想像しました。Webページを見たいので、IPアドレスとポート番号をに入力する必要があります。リソースを取得します。証明書(httpおよびhttps)によっては、デフォルトのポート番号が異なる場合があります。
次に、階層化の問題を体系的に理解する必要があります。OSIは7層、TCP / IPは4層あります。実際、それらはすべて全体を表していますが、区分は異なります。OSIの7つの層は次のとおりです。1。物理層2.データリンク層3.ネットワーク層4.トランスポート層5.セッション層6.プレゼンテーション層7.アプリケーション層。TCP / IPの4つの層と7つの層との接続については、物理層(1、2)、ネットワーク層(3)、トランスポート層(4)、およびアプリケーション層(5、 6、7)。これは別の図ではなく、物理層の内容については説明しません。ここでは、最も単純な種類のネットワークを想像します。2台のコンピューター間で通信するには、最初にアドレスを取得してネットワークを形成し(ネットワーク層)、次に通信の目的を達成するためにリソースを送信できる必要があります(トランスポート層)。この交換(セッション層)では、2台のコンピューターから送信されるデータもフォーマットで通信する必要があり(プレゼンテーション層)、少なくともこの操作を実現するためのアプリケーションがコンピューター上に存在する必要があります(アプリケーション層)。(上記の説明は厳密ではありませんが、特に法外ではありません)
ネットワークの外観について一般的な考えを持った後、ipv4とipv6を振り返ることができます、これら2つは実際には何も言うことはなく、2種類のアドレスだけです値プロトコルipv4は、0〜255の32ビット4バイト10進数です。このアドレス値の範囲は大きく見えますが、実際には長い間十分ではなく、そのほとんどが北米で配布されています。そのため、128ビットと16バイトのipv6があり、サポートの範囲が大幅に拡大されています。(自分で確認したい場合は、ここでは違いについてあまり説明しません)*ここに知識のポイントがあります:ipv4はセグメントによって分類されます。これは、最初から区別することで簡単に理解できます。0-127はバックボーンネットワークや大規模なインターネット企業などで通常使用されるタイプです。128-191はタイプBであり、ノードが多いエリアのネットワークで主に使用されます。192-223はタイプCであり、主に小さなローカルエリアで使用されます。ネットワーク、224-239はマルチキャスト用のタイプD、240-255はクラスEが実験と開発用に予約されています。(覚え方については、実際には毎回2で割っていますが、信じられません。)すべてゼロのアドレスは何かを表し、すべて255のアドレスは現在のサブネットのブロードキャストアドレスを表します。興味のある方は、コマンドラインでBaiduのIPアドレスにpingを送信して確認できます。(ステーションbにpingを送信したい)
ここに画像の説明を挿入
これを見て思い出すことができます。IP、ポート番号、階層化など、ネットワークのいくつかの基本的な用語について説明しました。そして、httpとhttps、ipv4とipv6について話しました。しかし、私は主にネットワークについての私の想像力について話し、次にTCPとUDPの比較と議論で主に簡単なネットワークプログラミングを実装します。ネットワークの基本的な知識は、フォローアップの理解にも役立ちます。

おすすめ

転載: blog.csdn.net/qq_53660784/article/details/114215267