IPv6 ঠিকানার পাঠ্য উপস্থাপনের সর্বাধিক দৈর্ঘ্য?


430

আমি $_SERVER["REMOTE_ADDR"]পিএইচপি দ্বারা ফিরিয়ে নেওয়া ডেটাটি একটি ডিবি ক্ষেত্রে, খুব সহজ কাজগুলিতে সঞ্চয় করতে চাই। সমস্যাটি হ'ল আমি কোনও আইপিভি 6 ঠিকানার পাঠ্য উপস্থাপনার সর্বোচ্চ দৈর্ঘ্য সম্পর্কে কোনও সঠিক তথ্য খুঁজে পাই না , যা কোনও ওয়েবসার্কর মাধ্যমে সরবরাহ করে $_SERVER["REMOTE_ADDR"]

আমি পাঠ্যগত উপস্থাপনাটিকে 128 বিট হিসাবে ঠিকানার মধ্যে এনকোড করাতে রূপান্তর করতে আগ্রহী নই, আমি কেবল এটি জানতে চাই যে কোনও আইপিভি 6 ঠিকানা জমা দিয়ে সর্বাধিক কত অক্ষর প্রয়োজন $_SERVER["REMOTE_ADDR"]


6
জোন সূচক সম্পর্কে কী?
রবার্ট টুপেলো-শ্নেক

5
# ডেফাইন INET_ADDRSTRLEN (16) # নির্ধারণ INET6_ADDRSTRLEN (48)

সূত্র: lxr.free-electrons.com/source/incolve/linux/inet.h

1
প্রশ্নের stackoverflow.com/questions/1076714/… এর কিছু অনুরূপ তবে কার্যকর উত্তর রয়েছে।
এডওয়ার্ড

উত্তর:


615

45 অক্ষর

আপনি একটি ঠিকানা হতে পারে আশা করতে পারেন

0000:0000:0000:0000:0000:0000:0000:0000

8 * 4 + 7 = 39

:তাদের মধ্যে 7 সহ 4 সংখ্যার 8 টি গ্রুপ ।

তবে আপনার যদি আইপিভি 4-ম্যাপযুক্ত আইপিভি 6 ঠিকানা থাকে তবে শেষ দুটি গ্রুপের ভিত্তিতে 10 দ্বারা পৃথক করা যায় ., উদাহরণস্বরূপ। [::ffff:192.168.100.228]। সম্পূর্ণ লিখিত:

0000:0000:0000:0000:0000:ffff:192.168.100.228

(6 * 4 + 5) + 1 + (4 * 3 + 3) = 29 + 1 + 15 = 45

দ্রষ্টব্য, এটি একটি ইনপুট / ডিসপ্লে কনভেনশন - এটি এখনও একটি 128 বিট ঠিকানা এবং সঞ্চয়স্থানের জন্য কাঁচা কলোনকে পৃথক করা ফর্ম্যাট, যেমন [0000:0000:0000:0000:0000:ffff:c0a8:64e4]উপরের ঠিকানার জন্য মানক করা ভাল ।


245
শিরোলেখ ফাইলগুলি INET6_ADDRSTRLEN 46 হিসাবে সংজ্ঞায়িত করে, যা 45 টি অক্ষর এবং একটি চলন্ত নাল দিয়ে ফিট করে।
বিষ্ণিজ

6
ওয়ার্থ লক্ষ করেন, IPv6 ঠিকানা এছাড়াও সুযোগ জোন থাকতে পারে stackoverflow.com/questions/5746082/... , যেমন আপনি পেতে যে RemoteEndpointMessageProperty.Address থেকে
ররি

আইপিভি 4 অ্যাড্রেসগুলি :: ffff: 127.0.0.1 এর মতো লেখা হয় না?
গ্রেওয়াল্ফ

52
@ ফিলিপচেকন এটির মতো ধরণের চিন্তাভাবনা যা কার্যকর নয় - আকারটি বের করুন এবং এটি ব্যবহার করুন। আপনি যদি বাফারটি প্রসারিত করতে চান তবে কেবল যদি এটি 64 অক্ষর প্যাডিংয়ের সাথে সহায়তা করে তবে 45 (+1 )ই সর্বোত্তম।
gbjbaanb

1
এটি ipv6 ঠিকানায় শতাংশ সাইন ইন অ্যাকাউন্টে গ্রহণ করে? উল্লেখ করুন - superuser.com/questions/99746/…
গৌরব

85

লিনাক্সে ধ্রুবক দেখুন INET6_ADDRSTRLEN(অন্তর্ভুক্ত করুন <arpa/inet.h>, দেখুন man inet_ntop)। আমার সিস্টেমে (শিরোনাম "in.h"):

#define INET6_ADDRSTRLEN 46

শেষ চরিত্রটি নুলকে শেষ করার জন্য, যেমনটি আমি বিশ্বাস করি, তাই অন্যান্য উত্তর হিসাবে সর্বাধিক দৈর্ঘ্য 45 হয়।


2
সুতরাং আমি এই 48 দেখতে কি? github.com/torvalds/linux/blob/master/incolve/linux/inet.h#L50
eis

@ ইনি সম্ভবত ২০১৩ সালে ছিল struct
আইরিডইন

13

আমার নিজের প্রশ্নের উত্তর:

আইপিভি 6 অ্যাড্রেসগুলি সাধারণত চারটি হেক্সাডেসিমাল ডিজিটের আট গ্রুপ হিসাবে লেখা হয়, যেখানে প্রতিটি গ্রুপ কোলন (:) দ্বারা পৃথক করা হয়।

সুতরাং যে 39 অক্ষর সর্বাধিক।


7
তবে আপাতদৃষ্টিতে একটি সাবধানবাণী রয়েছে, stackoverflow.com/a/7477384/3787376 ("ক্লায়েন্ট আইপি ঠিকানার জন্য সর্বাধিক দৈর্ঘ্য") দেখুন - "আইপিভি 4 ম্যাপযুক্ত আইপিভি 6 ঠিকানাগুলির জন্য, স্ট্রিং 39 টি অক্ষরের চেয়ে দীর্ঘ হতে পারে"। এটি বলে যে একটি "আইপিভি 4-ম্যাপযুক্ত আইপিভি 6" 45 টি অক্ষর এবং "এনএনএনএন: এনএনএনএন: এনএনএনএন: এনএনএনএন: এনএনএনএন: এনএনএনএন: 192.168.158.190" ফর্ম্যাটে রয়েছে। সর্বাধিক 45 টি অক্ষর হওয়া উচিত। স্ট্যাকওভারফ্লো . com / a / 166157 / 3787376 (এই প্রশ্ন) এর উত্তরটিও এই পয়েন্টটি দেখায় বলে মনে হচ্ছে।
এডওয়ার্ড


4

ইঙ্গিত হিসাবে একটি স্ট্যান্ডার্ড আইপিভি 6 ঠিকানা সর্বাধিক 45 টি অক্ষর, তবে আইপিভি 6 ঠিকানায় একটি "স্কোপ" বা "জোন" স্ট্রিংয়ের পরে একটি শেষ% অন্তর্ভুক্ত থাকতে পারে, যার কোনও নির্দিষ্ট দৈর্ঘ্য নেই তবে সাধারণত একটি ছোট ইতিবাচক পূর্ণসংখ্যা বা একটি নেটওয়ার্ক ইন্টারফেস থাকে নাম, সুতরাং বাস্তবে এটি 45 টির চেয়ে বেশি অক্ষরের হতে পারে। নেটওয়ার্ক ইন্টারফেসের নামগুলি সাধারণত "eth0", "eth1", "wlan0" হয়, সুতরাং সীমা হিসাবে 50 বেছে নেওয়া সম্ভবত যথেষ্ট ভাল।


3
সত্য, তবে এটি কেবল লিংক-স্থানীয় ঠিকানা, এবং আপনি একবারেই আপনার ওয়েবসাইট ইন্টারনেটে চলছে এমন কোনওটি আপনি দেখতে পাচ্ছেন না (এবং আশা করি এটি বিকাশের সময়ও নয়)।
মাইকেল হ্যাম্পটন

1

নির্দিষ্ট হেডারের জন্য নজর রাখুন যেমন HTTP_X_FORWARDED_FORএকটি একক আইপি ঠিকানা ধারণ করে। এগুলিতে আসলে একাধিক ঠিকানা থাকতে পারে (আমি অনুমান করে দেওয়া প্রক্সিগুলির একটি শৃঙ্খল)।

এগুলি কমাতে সীমান্ত হিসাবে উপস্থিত হবে - এবং এটি মোট 45 টি অক্ষরের চেয়ে অনেক বেশি দীর্ঘ হতে পারে - সুতরাং ডিবিতে সঞ্চয় করার আগে পরীক্ষা করে দেখুন।


3
কিছুটা দ্বন্দ্ব -1 (দ্বন্দ্বযুক্ত কারণ আমি আগে এই ফাঁদে পড়েছি, এবং আমি অনুমান করি যে এই উত্তরে এমন কিছু লোকের প্রাসঙ্গিক তথ্য রয়েছে যারা এই পৃষ্ঠায় পৌঁছে যাবেন) কারণ এটি পরিষ্কারভাবে জিজ্ঞাসা করা প্রশ্নের উত্তর নয়। প্রশ্নের মন্তব্য হিসাবে সম্ভবত এটি আরও ভাল হবে।
মার্ক অ্যামেরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.