ネットワークプログラミングの3つの要素:
- IPアドレス
- 港
- プロトコル
1.IPアドレス
IPアドレスの一般的なコマンド:
- ipconfig:ローカルIPアドレスを表示します
- IPアドレスにpingを送信:ネットワークが接続されているかどうかを確認します
- 特別なIPアドレス:127.0.0.1。これはループバックアドレスであり、ローカルアドレスを表すことができ、通常はテストに使用されます。
IPアドレス
IPアドレス:ネットワーク内のデバイスの一意の識別子です
IPアドレスは2つのカテゴリに分類されます。
-
IPv4:ネットワークに接続されている各ホストに32ビットアドレスを割り当てます。TCP / IP規則によれば、IPアドレスはバイナリで表され、各IPアドレスは32ビット長(4バイト)です。たとえば、バイナリ形式のIPアドレスは "10100000 10101000 000000101000010 *です。このような長いアドレスは扱いにくいです。使いやすさのために。IPアドレスは多くの場合、10進数形式で記述され、中央に記号" "が付いて区別されます。バイトしたがって、上記のIPアドレスは「192.168.1.66」と表すことができます。このIPアドレスの表記は「ドット付き10進表記」と呼ばれ、1と0よりも明らかに覚えやすいです。
-
IPv6:インターネットの活発な発展により、IPアドレスの需要は増加していますが、ネットワークアドレスのリソースが限られているため、IPの割り当てはますます緊迫しています。アドレス空間を拡張するには、IPv6を介してアドレス空間を再定義します。128ビットのアドレス長を使用し、16バイトの各グループを16進数の8つのグループに分割します。これにより、ネットワークアドレスリソースが不足する問題が解決されます。
InetAddressの使用
IPアドレスの取得と操作を容易にするために、JavaはInetAddressを使用するためのクラスInetAddressを提供します
。このクラスはインターネットプロトコル(IP)アドレスを表します。
-
static InetAddress getByName(String host):ホスト名のIPアドレスを決定します。
ホスト名は、マシン名またはIPアドレスにすることができます -
String getHostName():このIPアドレスのホスト名を取得します
-
String getHostAddress()は、テキスト表示でIPアドレス文字列を返します
コードデモを見てください:
netAddress address=InetAddress.getByName("LAPTOP-A61GB327");
このLAPTOP-A61GB327は私のコンピューターの名前ですが、コンピューターのIPに変更することもできます
package InteAddress;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InteAdressDemo {
public static void main(String[] args) throws UnknownHostException{
InetAddress address=InetAddress.getByName("LAPTOP-A61GB327");
String name=address.getHostName();
String ip=address.getHostAddress();
System.out.println("主机名:"+name);
System.out.println("ip地址:"+ip);
}
}
第二に、ポート
ポートは、デバイス上のアプリケーションの一意の識別子です
ポート番号:2バイトで表される整数。値の範囲は0〜65535です。その中で、0〜1023のポート番号は、いくつかのよく知られたネットワークサービスおよびアプリケーションに使用され、通常のアプリケーションは1024を超えるポート番号を使用する必要があります。ポート番号が別のサービスまたはアプリケーションによって占有されている場合、現在のプログラムの起動に失敗します
3.合意
プロトコル:コンピュータネットワークでは、接続と通信のルールはネットワーク通信プロトコルと呼ばれます
1.UDPプロトコル
-
ユーザーデータグラムプロトコル(ユーザーデータグラムプロトコル)
UDPはコネクションレス型通信プロトコルです。つまり、データ送信中、データの送信者と受信者は論理接続を確立しません。簡単に言えば、コンピュータが別のコンピュータにデータを送信するとき、送信側は受信側が存在するかどうかを確認せず、データを送信します。同様に、受信側がデータを受信するとき、送信側にフィードバックを提供しません。 。データへ。
UDPプロトコルを使用したリソース消費量が少なく、通信効率が高いため、通常、オーディオ、ビデオ、および通常のデータの送信に使用されます。 -
たとえば、ビデオ会議では通常UDPプロトコルが使用されます。これは、この場合に1つまたは2つのデータパケットが失われることがある場合でも、受信結果に大きな影響を与えないためです。ただし、UDPプロトコルを使用してデータを送信する場合、UDPの接続がないため、データの整合性は保証されません。したがって、重要なデータを送信するときにUDPプロトコルを使用することはお勧めしません。
2.TCPプロトコル
-
伝送制御プロトコル(伝送制御プロトコル)
TCPプロトコルはコネクション型通信プロトコルです。つまり、データを送信する前に、送信側と受信側の間に論理接続が確立され、データが送信されます。これにより、信頼性が高く、 2台のコンピュータ間の伝送でエラーのないデータ。TCP接続では、クライアントとサーバーを明確にし、クライアントがサーバーに接続要求を送信する必要があります。接続が作成されるたびに、「スリーウェイハンドシェイク」が必要です。 -
スリーウェイハンドシェイク:TCPプロトコルでは、データ送信の準備段階で
、接続の信頼性を確保するためにクライアントとサーバー間で3つの対話が行われます。最初のハンドシェイクでは、クライアントはサーバーに接続要求を送信し、待機します。サーバー
は2番目のハンドシェイクを確認します。サーバーはクライアントに応答を送り返し、接続要求を受信したことをクライアントに通知します
。3番目のハンドシェイクでは、クライアントは接続を確認するためにサーバーに確認メッセージを再度送信します。 -
スリーウェイハンドシェイクが完了し、接続が確立された後、クライアントとサーバーはデータ送信を開始できます。このコネクション型の特性により、TCPプロトコルはデータ転送のセキュリティを保証できるため、広く使用されています。ファイルのアップロード、ファイルのダウンロード、Webページの閲覧など。