ipv 6/ipv 4デュアルスタックアプリケーションサーバ開発の詳細


会社のビルはクラウドプラットフォームプロジェクトに対して北米の取引先のためにセットを配置する必要があります.アメリカのT-mobileキャリアの4 Gネットワークはすでに純粋なipv 6の環境なので、プラットフォームにipv 4/ipv 6ダブルスタックネットワークモデルをサポートさせなければなりません.
プラットフォームにデュアルスタックをサポートさせるには、次の手順に従います.
1、ホストはipv 4、ipv 6の2つのネットワークアドレスを保証する.(国内の実験室でテストするとき、ipv 6アドレスはトンネルを通じて臨時に配置することができます);
2.サービスをipv 6のモードで傍受させる(これにより、ipv 4クライアントを受信してもよいし、ipv 6クライアントを受信してもよい.ipv 4モードで傍受される場合、ipv 4クライアントの接続しか受け入れられない).具体的には、以下のインスタンスコードを参照する.
関連コードは次のとおりです.
listen_fd_ = socket(AF_INET6,SOCK_STREAM, 0);
struct sockaddr_in6 server_addr;
bzero(&server_addr, sizeof(server_addr));
server_addr.sin6_family = AF_INET6;
server_addr.sin6_addr = in6addr_any;
server_addr.sin6_port = htons(PORT);
            		
ret = bind(listen_fd_, (struct sockaddr*)&server_addr, sizeof(server_addr));

3、クライアントは自分のネットワーク環境を判断し、ipv 4であればサーバのipv 4アドレスに接続し、ipv 6であればサーバのipv 6アドレスに接続すればよい.サーバはipv 6のモードで傍受されるため、ipv 4のクライアントがサーバに到着すると、サーバホストカーネルのネットワークモジュールはipv 4アドレスをipv 6のアドレスフォーマットに自動的に補完する(具体的な補完方式は前の補完::ffff).以下の2つのアドレスは、ipv 4クライアントとipv 6クライアントがtcpでサーバに接続されたときのサーバのログ印刷内容をそれぞれ示す.
connection from [::ffff:47.91.73.215]:35768     
connection from [2001:470:1f04:10ce:a00:4dc1::]:47308
4、以上.実はunpはすでに詳しく述べて、各位の同僚は開発する時参考にすることができます.