この質問にはすでに回答済みのマークが付けられていますが、OPで尋ねられる追加の質問のいくつかに対処したいと思いました。
これらのポートは物理オブジェクトですか?
どのポートも物理オブジェクトではありません。
ポート番号は16ビットの符号なし整数です。つまり、使用可能なポートの範囲は1〜65535です(ポート番号0は予約されており、使用できません)。プロセスは、ファイル記述子の一種であるインターネットソケットを介して入力または出力チャネルを、トランスポートプロトコル、ポート番号、およびIPアドレスに関連付けます。このプロセスはバインディングと呼ばれ、ネットワークを介したデータの送受信を可能にします。
それらは私のコンピューターの一部に組み込まれているのですか?彼らは何か物理的なものですか?またはコードで書かれていますか?このコードはどこにありますか?オペレーティングシステム?本当にポートとは何ですか?
オペレーティングシステムのネットワーキングソフトウェアは、すべてのアプリケーションポートからネットワークに送信データを送信し、パケットのIPアドレスとポート番号を照合することにより、到着したネットワークパケットをプロセスに転送するタスクを実行します。
同じトランスポートプロトコルを使用して、特定のIPアドレスとポートの組み合わせにバインドできるプロセスは1つだけです。複数のプログラムが同じプロトコルを使用して同じIPアドレスの同じポート番号にバインドしようとすると、ポートの競合と呼ばれることもある一般的なアプリケーションエラーが発生します。
上記の段落は、ネットワークでポート/プロトコルが使用される理由を理解するための鍵です。合意された武器ポート番号を介してデータを送信するプロトコルを指定する方法がなかった場合-コンピューターが持っているため、一度に複数のことを行うことはできません(電子メールを確認してWebを使用してください)。電子メールクライアントのデータと閲覧しているWebサイトのデータを区別する方法はありません。
ポートはいくつありますか?
ポート番号は、3つの範囲に基づいて、さまざまな方法で割り当てられます。
Well Known / System Ports(0-1023)-この範囲のポートは、広く使用されているタイプのネットワークサービス(HTTP / 80、HTTPS / 443、Telnet / 21、SSH / 22)を提供するシステムプロセスによって使用されます。
登録済み/ユーザーポート(1024〜49151)-1024〜49151のポート番号の範囲が登録済みポートです。それらは、要求側エンティティによるアプリケーションの特定のサービスにIANAによって割り当てられます。(Webmin / 10000、HTTP Proxy / 8080、Remote Desktop Protocol / 3389など)
エフェメラル/ダイナミック/プライベートポート(49152〜65535)-49152〜65535の範囲には、IANAに登録できないダイナミックポートまたはプライベートポートが含まれます。この範囲は、カスタムまたは一時的な目的、および一時ポートの自動割り当てに使用されます。
ポート数を増減できますか?
使用可能なポートの数を増やすことができるという点では、ネットワークが機能することを許可する計算(バイナリ)のため、65535を超えるポートを割り当てることはできません。 65535以上のポート。
プロトコルとは何ですか?
コンピュータサイエンスでは、通信プロトコルはコンピュータ内またはコンピュータ間でメッセージを交換するためのデジタルルールのシステムです。コンピュータネットワークを介してメッセージが交換される場合、ルールシステムはネットワークプロトコルと呼ばれます。プロトコルは、基本的には、ネットワーク化された2つのデバイスが通信できる、合意された一連の命令/コマンド/呼び出しです。プロトコルに同意しなかった場合や、WebサーバーがWebブラウザにデータをランダムに送信しただけで、ブラウザが何をすべきかわからなかったとしたらどうでしょうか。幸い、HTTPがあり、作成されたすべてのWebブラウザーがソフトウェアに組み込んでいるため、同じ言語(HTTP)を話すWebサーバーと通信できます。
なんらかのコードだと思います。独自のプロトコルを作成できますか?プロトコルの作成に使用する言語は何ですか?
はい、独自のプロトコルを作成できます。プロトコルはさまざまな言語で書かれています。私はソフトウェア開発者ではありませんが、使用している言語に、TCP / IPを介して通信できるソフトウェアを作成できるライブラリがある限り、他のプロトコルスイートもありますが、TCP / IPが最も適しています。広く使用されています)その言語を使用してプロトコルを記述できます。プログラミング言語「C」は、プロトコルの記述に最も一般的に使用されているようです。これは、最初のネットワークプロトコルの多くが1970年代にUNIX上で開発され、CがたまたまUNIX自体が記述されている言語であるためです。
特定のプロトコルを実行する特定のポートをどのように取得しますか?
これはOSによってかなり異なります。たとえば、Windowsで実行されているリモートデスクトッププロトコルのポート番号を変更するには、レジストリを編集する必要があります。Linuxでは、ネットワークサービスの多くは、特定のネットワークサービスの.confファイルから直接構成できます。
新しいプロトコルをどのように定義または発明しますか?
最近新しいネットワークプロトコルを開発した人によるブログ投稿と彼がしなければならないことについては、https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/を参照してください。途中で。