আইপিভি 4 টিসিপি সংযোগগুলি কেন টিসিপি 6 হিসাবে প্রদর্শিত হচ্ছে?


30

netsat -tupnআমার ডেবিয়ান জেসি সার্ভারের ফলাফল এখানে :

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.0.0.12:445           10.0.0.20:49729         ESTABLISHED 26277/smbd      
tcp        0      0 10.0.0.12:443           10.0.0.21:44162         ESTABLISHED 1400/nginx: worker 
tcp        0      0 10.0.0.12:445           10.0.0.21:46650         ESTABLISHED 23039/smbd      
tcp        0      0 10.0.0.12:443           10.0.0.20:54584         ESTABLISHED 1400/nginx: worker 
tcp        0      0 10.0.0.12:139           10.0.0.225:10425        ESTABLISHED 23701/smbd      
tcp        0      0 10.0.0.12:445           10.0.0.217:49179        ESTABLISHED 21535/smbd      
tcp        0      0 10.0.0.12:445           10.0.0.217:49178        ESTABLISHED 21534/smbd      
tcp        0      0 10.0.0.12:445           10.0.0.20:64636         ESTABLISHED 21470/smbd      
tcp        0      0 10.0.0.12:443           10.0.0.21:44198         ESTABLISHED 1400/nginx: worker 
tcp        0      0 10.0.0.12:2049          10.0.0.16:752           ESTABLISHED -               
tcp        0      0 10.0.0.12:222           10.0.0.21:55514         ESTABLISHED 23111/sshd: redacted
tcp6       0      0 10.0.0.12:4243          10.0.0.20:64702         ESTABLISHED 31307/java      
tcp6       0      0 10.0.0.12:48932         162.222.40.93:443       ESTABLISHED 31307/java      
tcp6       0      0 10.0.0.12:49093         216.17.8.47:443         ESTABLISHED 31307/java 

PID, 31307 হল মেঘ ব্যাকআপ ইঞ্জিন, জাভা সংস্করণ 1.7.0_45। দুটি নন-আরএফসি 1918 আইপিভি 4 ঠিকানা হ'ল ক্র্যাশপ্ল্যানের সার্ভার এবং 10.0.0.20:64702ক্লায়েন্টটি চালিত আমার কম্পিউটার my

শেষ তিনটি সংযোগ কেন তারা আইপিভি 4 ঠিকানা হলেও tcp6 হিসাবে দেখায়?

উত্তর:


33

এটি ঘটছে কারণ ডিফল্টরূপে, এএফপিইটি 6 সকেটগুলি আইপিভি 4 এবং আইপিভি 6 উভয়ের জন্যই কাজ করবে। বিভাগ 3..7 দেখুন - আরএফসি 3493 এর আইপিভি 4 নোডের সাথে সামঞ্জস্যতা - আইপিভি 6 এর জন্য বেসিক সকেট ইন্টারফেস এক্সটেনশনগুলি

কোডের একটি সংক্ষিপ্ত উদাহরণ যা এই ধরণের পরিস্থিতি তৈরি করতে পারে:

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define TEST_PORT 5555

#define xstr(s) str(s)
#define str(x) #x

int main (int argc, char **argv)
{
    int v6server;
    int v4client;
    int rc;

    struct sockaddr_in6 s6addr = {
        .sin6_family = AF_INET6,
        .sin6_flowinfo = 0,
        .sin6_port = htons(TEST_PORT),
        .sin6_addr = in6addr_any
    };

    struct sockaddr_in c4addr = {
        .sin_family = AF_INET,
        .sin_port = htons(TEST_PORT),
        .sin_addr = inet_addr("127.0.0.1")
    };

    // Open an IPv6 listener
    v6server = socket(AF_INET6, SOCK_STREAM, 0);
    if (v6server < 0) perror("socket()");

    rc = bind(v6server, (struct sockaddr *)&s6addr, sizeof(s6addr));
    if (rc != 0) perror("bind()");

    rc = listen(v6server, 0);
    if (rc != 0) perror("listen()");

    // Connect to the listener with an IPv4 socket
    v4client = socket(AF_INET, SOCK_STREAM, 0);
    if (v4client < 0) perror("socket()");

    rc = connect(v4client, (struct sockaddr *)&c4addr, sizeof(c4addr));
    if (rc != 0) perror("connect()");

    // inspect open sockets
    system("netstat -tan | grep " xstr(TEST_PORT));

    close(v4client);
    close(v6server);
}

আমার উবুন্টু মেশিনে আউটপুটটি হ'ল:

$ make v4v6
cc     v4v6.c   -o v4v6
$ ./v4v6 
tcp        0      0 127.0.0.1:46518         127.0.0.1:5555          ESTABLISHED
tcp6       0      0 :::5555                 :::*                    LISTEN     
tcp6       0      0 127.0.0.1:5555          127.0.0.1:46518         ESTABLISHED
$ 
  • tcp6 LISTENএন্ট্রি পোর্টে সকেট শোনা 5555 নোট করুন যে এটি একটি AF_INET6 সকেট, তাই এটি IPv4 ও IPv6 উভয়ের ইনকামিং সংযোগ গ্রহণ করবে জন্য।
  • tcp ESTABLISHEDএন্ট্রি শ্রোতা (সক্রিয় সংযোগ) একটি AF_INET4 সকেট সংযোগ ফলাফল।
  • tcp6 ESTABLISHEDএন্ট্রি শ্রোতা সকেট থেকে উত্পন্ন হওয়া প্যাসিভ সংযোগ জন্য। এটি শ্রোতার tcp6কাছ থেকে উদ্ভূত হওয়ায় এটি প্রদর্শিত হচ্ছে tcp6; তবে এটি একটি আইপিভি 4 থেকে একটি সংযোগ উপস্থাপন করে।

এটি নিম্নলিখিত লক্ষণীয় মূল্য:

  • এই আচরণটি AFDPET6 সকেটের জন্য বিশেষ। এএএনপিএনইটি (আইপিভি 4) সকেট কেবল আইপিভি 6 এর সাথে কোনও কিছু করতে পারে না এবং করবে না।
  • এই আচরণটি IPV6_V6 কেবল সকেট বিকল্পের সাথে ওভাররাইড করা যেতে পারে । এই বিকল্পটি সেট করার ফলে সকেট কেবল আইপিভি 6 হ্যান্ডেল করতে পারে এবং কোনও আইপিভি 4 এর অনুমতি দেয় না।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.