উত্তর:
রাউন্ড ট্রিপ সময় আসলে কোথাও সংরক্ষণ করা হয় না। প্রেরণকারী হোস্টটি আইসিএমপির 16-বিট সনাক্তকারী এবং সিকোয়েন্স ক্ষেত্রগুলি ব্যবহার করে প্রতিটি আইসিএমপি ইকো অনুরোধ বার্তা প্রেরণের সময়টিকে স্মরণ করে। এটি যখন আইএমএমপি ইকো রিপ্লাই পায়, এটি বর্তমান সময়টিকে নোট করে, উত্তরটির দ্বারা চিহ্নিত ম্যাচিংয়ের অনুরোধ প্যাকেটটি প্রেরণের সময়টি আবিষ্কার করে, পার্থক্যটি গণনা করে এবং রিপোর্ট করে।
সাধারণত পিং একাধিক যুগপত পিংস এবং পৃথক প্যাকেটগুলির পার্থক্য করতে সিকোয়েন্স ক্ষেত্রের পার্থক্য করতে আইসিএমপি এর সনাক্তকরণ ক্ষেত্র ব্যবহার করে।
প্রদত্ত প্যাকেটের জন্য বহির্মুখী সময়টি কোথায় সংরক্ষণ করতে হবে তা স্থির করে তা বাস্তবায়নের উপর নির্ভর করে: এটি কোনও টেবিলে হোস্টে রাখার পরিবর্তে এটি সাধারণত বহির্গামী অনুরোধে প্রেরণ করে এবং সময়টি গণনার জন্য উত্তরটিতে অনুলিপিটি ব্যবহার করে। (এটি নির্দেশ করার জন্য মন্তব্যকারীদের ধন্যবাদ।) এটি প্রয়োগের জন্য যেভাবেই সুবিধাজনক হোক না কেন এটি প্রেরণ করা হয়েছে এবং অবশ্যই ডেটা সঠিকভাবে অনুলিপি করার জন্য সুদূর প্রান্ত এবং কোনও হস্তক্ষেপকারী সরঞ্জামকে বিশ্বাস করতে হবে। কিছু সিস্টেম মাইক্রোসেকেন্ডগুলির রেজোলিউশন সহ 16 বাইটে কিছু সময় উপস্থাপন করে, কিছুটি 8 মিলি সেকেন্ডের রেজোলিউশন সহ বাইট হিসাবে পরিচিত।
data
আইপিএম প্যাকেটের অংশের অভ্যন্তরের বিন্যাসটি হ'ল আইসিএমপি ইকো অনুরোধ / উত্তর বার্তা, আরএফসি 792 "ইন্টারনেট নিয়ন্ত্রণ বার্তা ফর্ম্যাট" (পি 14) থেকে অনুলিপি করা হয়েছে ।
Type
অনুরোধের জন্য 8, জবাব দেওয়ার জন্য 0; Code
0 হয়।
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
পুনশ্চ. কেবল স্পষ্ট করে বলতে গেলে, আইপি শিরোনামের সনাক্তকরণ ক্ষেত্রটি সাধারণত একটি স্বেচ্ছাসেবী মানতে সেট করা থাকে, প্রতিটি বিদায়ী প্যাকেটের জন্য পৃথক, যে কোনও বিভাজন পুনরায় অপসারণের জন্য ব্যবহৃত হয় এবং আইসিএমপি বডিতে কোনও কিছুর সমান মান থাকে না।
এছাড়াও, আইপি শিরোনামটিতে টাইমস্ট্যাম্পগুলি বিকল্প হিসাবে রাখার জন্য একটি পদ্ধতি নির্ধারিত থাকলেও পিংয়ের জন্য এটি সাধারণ প্রক্রিয়া নয় কারণ অনেকগুলি রাউটার নির্দিষ্ট আইপি বিকল্পগুলি পাস না করার জন্য কনফিগার করা হয়েছে। ইন্টারনেট প্রোটোকল টাইমস্ট্যাম্প বিকল্পের আরএফসি 781 নির্দিষ্টকরণ দেখুন ।
শেষ অবধি, যদিও এখানে সমস্ত কিছু মূল প্রশ্ন অনুসারে আইপিভি 4 দৃষ্টিকোণ থেকে লেখা হয়েছিল; তবে আইপিভি 6-তে পিং অত্যন্ত মিল, আইসিএমপিভি 6 আরএফসি 4443 দেখুন ।
ping
লিনাক্সে অন্তত একটি বাস্তবায়ন রয়েছে যা Data
আইসিএমপি পে-লোডের বিভাগে টাইমস্ট্যাম্প সংরক্ষণ করে । প্রতিধ্বনির উত্তরগুলি এমন একটি ইন্টারনেট এক্সচেঞ্জকে অনুসরণ করে যা প্রতিটি প্যাকেটে সেই জায়গাতে কিছুটা দূষিত হয়ে যায় তখন এটি কিছু আকর্ষণীয় ত্রুটি বার্তার দিকে নিয়ে যায়।
কমপক্ষে ping
লিনাক্সে সাধারণ ইউটিলিটি সহ , প্যাকেটটি প্রেরণের সময় প্রতিধ্বনি অনুরোধ প্যাকেটের ডেটা অংশে অর্থাৎ আইপি এবং আইসিএমপি হেডারগুলির পরে সংরক্ষণ করা হয়। যখন রিসিভারটি প্রতিধ্বনির জবাব দিয়ে উত্তর দেয় তখন ডেটা অংশ অক্ষত রাখা হয়, যাতে প্রেরক রাউন্ড-ট্রিপ সময় গণনা করতে পারে।
এটি ইউটিলিটির জন্য ম্যান পেজেping
বর্ণিত হয়েছে ("আইসিএমপি প্যাকেট বিবরণ" এর অধীনে):
যদি ডেটা স্পেসের
struct timeval
পিংয়ের আকার কমপক্ষে থাকে তবে এই স্পেসের প্রারম্ভিক বাইট ব্যবহার করে এমন টাইমস্ট্যাম্প অন্তর্ভুক্ত করে যা এটি রাউন্ড ট্রিপ বারের গণনায় ব্যবহার করে। যদি ডেটার স্থানটি ছোট হয় তবে কোনও রাউন্ড ট্রিপ সময় দেওয়া হয় না।
আমার মেশিনে sizeof(struct timeval)
16, তাই প্যাকেট ডেটার আকার 15 এ সেট করা ping
রাউন্ড ট্রিপের সময়গুলি দেখানো থেকে বিরত রাখে:
$ ping -s 15 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 15(43) bytes of data.
23 bytes from 8.8.8.8: icmp_seq=1 ttl=121
অবশ্যই, জোনাথঞ্জোর উত্তর বর্ণিত হিসাবে ইউটিলিটির মধ্যে প্রেরণের টাইমস্ট্যাম্প সংরক্ষণ করাও একটি সম্ভাব্য বাস্তবায়ন হতে পারে। এমনকি লিনাক্স ইউটিলিটির কিছু অভ্যন্তরীণ বুককিপিং প্রয়োজন, যেহেতু এটি সদৃশ প্যাকেটগুলি সনাক্ত করে।