ডিএনএস প্রোটোকলের সাথে সম্পর্কিত কীভাবে এইচটিটিপি জিইটি পদ্ধতি কাজ করে?


18

আমি টিসিপি / আইপি স্ট্যাকের অ্যাপ্লিকেশন স্তর প্রোটোকল বোঝার চেষ্টা করছি। আমি জানি যে এইচটিটিপি এবং ডিএনএস প্রোটোকল উভয়ই শীর্ষ স্তরে (অ্যাপ্লিকেশন স্তর) থাকে। সুতরাং, যখন কোনও ব্রাউজার কোনও সংস্থান অ্যাক্সেস করতে চায়, HTTP সার্ভারে এটি একটি অনুরোধ পাঠাতে হবে, উদাহরণস্বরূপ:

GET www.pippo.it/hello.htm HTTP/1.1

এইচটিটিপি প্রোটোকলের নিয়ম অনুসরণ করে এই অনুরোধটি করা, এটি পৃষ্ঠার ইউআরএল ব্যবহার করে, আইপি ঠিকানা নয়।

আমি জানি যে ডিএনএস অনুরোধটি আইপিএলতে রূপান্তর করতে প্রয়োজনীয়। সুতরাং আমার প্রশ্নটি হল: এইচটিটিপি কি ডিএনএস প্রোটোকলটির আবেদন করে? আমার পক্ষে এটি অসম্ভব বলে মনে হচ্ছে, যেহেতু উভয়ই শীর্ষ স্তর প্রোটোকল (সুতরাং ডিএনএস এইচটিটিপিতে কোনও পরিষেবা সরবরাহ করতে পারে না)। একইভাবে এমনকি টিসিপি (যা নিম্ন স্তরে থাকে) ডিএনএসের মতো উচ্চ স্তরের প্রোটোকলে কোনও পরিষেবা চাইতে পারে না।

তাহলে ডিএনএসের অনুরোধটি কখন ঘটে? এবং কে এই ধরনের অনুরোধ সম্পাদন করে?


1
এই উত্তরগুলির মধ্যে কোনটি প্রশ্নের উত্তর পরিষ্কার করতে আপনি একটি উত্তর গ্রহণ করতে পারেন?
030

উত্তর:


38

প্রশ্নে থাকা HTTP অনুরোধটি আসলে বৈধ নয় যতক্ষণ না ব্রাউজার কোনও মধ্যস্থতাকারীর (প্রক্সি) সাথে কথা না বলে।

ব্রাউজারটি সরাসরি কোনও ওয়েব সার্ভারের সাথে কথা বললে আপনার উদাহরণটি আরও কিছুটা নীচের মতো দেখাবে:

GET /hello.htm HTTP/1.1
Host: www.pippo.it

এখন, এটিকে পরিপ্রেক্ষিতে রাখার জন্য, ওএসআই মডেলটি বিবেচনা করুন:

ওএসআই মডেল

আমাদের কার্যক্ষম 3 টি সিস্টেম রয়েছে:

  • একজন ক্লায়েন্ট ব্রাউজার চালাচ্ছেন
  • একটি ওয়েব সার্ভার সাইট পরিবেশন করা
  • একটি ডিএনএস সার্ভার সাইটের আইপি ঠিকানা জেনে

জড়িত প্রোটোকলগুলি নীচে থেকে উপরে (ওপিতে ন্যূনতম প্রাসঙ্গিক সেট):

  • আইপি
  • টিসিপি, ইউডিপি
  • এইচটিটিপি, ডিএনএস

এইচটিটিপি যোগাযোগ টিসিপি প্রোটোকলের (টিসিপি আইপি প্রোটোকলের শীর্ষে রয়েছে) উপর সম্পন্ন হয় যখন ডিএনএস যোগাযোগ, ইউডিপি প্রোটোকলের মাধ্যমে করা হয় (ইউডিপি আইপি প্রোটোকলের শীর্ষেও থাকে)।

সংক্ষেপে এখানে যোগাযোগের ক্রমটি রয়েছে:

  1. ক্লায়েন্ট , ব্রাউজার চলমান, জিজ্ঞেস DNS সার্ভার একটি জন্য Aরেকর্ড www.pippo.it, এর ফলে UDP প্রোটোকল ব্যবহার।

    1.1। ক্লায়েন্টে, এটি অপারেটিং সিস্টেম যা সমাধানের অংশটি করে এবং ব্রাউজারে ফিরে কথা বলে --- ব্রাউজার কখনই ডিএনএস সার্ভারের সাথে সরাসরি কথা বলে না, বরং ওএসের মাধ্যমে জিথোস্টবাইনেম () বা নতুন গেটাড্রিনফো () ব্যবহার করে । Windows এ, ক্রমে ওএস সমাধান করা ঠিকানাগুলি সম্ভবত ভালো কিছু দ্বারা সংজ্ঞায়িত করা হয় এই , যখন লিনাক্স সমাধানে প্রাধান্য দ্বারা সংজ্ঞায়িত করা হয়/etc/nsswitch.conf

  2. DNS সার্ভার , এর ফলে UDP প্রোটোকল সাড়া ব্যবহার ক্লায়েন্ট রেকর্ড / IP এর ঠিকানা দিয়ে যদি উপস্থিত থাকে

  3. ক্লায়েন্ট বন্দর 80 এ একটি TCP সংযোগ প্রর্দশিত ওয়েব সার্ভার এবং নিম্নলিখিত টেক্সট লিখেছেন:

    এইচটিটিপি অনুরোধ:

    GET /hello.htm HTTP/1.1
    Host: www.pippo.it
    

    আপনি আপনার কনসোল বা কমান্ড প্রম্পটে এই জাতীয় কিছু করে একই জিনিসটি নকল করতে পারেন:

    > telnet www.pippo.it 80
    Trying 195.128.235.49...
    Connected to www.pippo.it.
    Escape character is '^]'.
    GET /hello.htm HTTP/1.1
    Host: www.pippo.it
    

    দুটি খালি লাইন পরে যদি অনুরোধ করা সামগ্রী উপস্থিত থাকে, ওয়েব সার্ভার এটি স্ক্রিনে মুদ্রণ করবে। অন্যদিকে যদি ব্রাউজার থাকে তবে প্রতিক্রিয়া পাঠ্যটি ব্রাউজারটি বিশ্লেষণ করে এবং সমস্ত ট্যাগ, লিঙ্ক, স্ক্রিপ্ট এবং চিত্রগুলি আমরা একটি ওয়েব পৃষ্ঠা বলে থাকি।

বাস্তবে আরও কিছু বিশদ রয়েছে, যেমন ব্রাউজারগুলি যদি আপনি ইতিমধ্যে কিছু ডোমেন পরিদর্শন করেছেন তবে আইপি অ্যাড্রেসগুলি ক্যাশে করতে পারে, যাতে ডিএনএস সমাধান করা অপ্রয়োজনীয় হয়ে যায়। এছাড়াও, আধুনিক ব্রাউজারগুলি আপনার ব্রাউজিংকে গতি বাড়ানোর জন্য এটির প্রয়োজন হওয়ার আগে ( ডিএনএস প্রিফেচিং ) আগে সমাধান করার চেষ্টা করতে পারে ।

অতিরিক্তভাবে, আপনার কম্পিউটারে কোনও hostsফাইলে স্থির রেকর্ড থাকতে পারে । যদি কোনও রেকর্ড অনুরোধের সাথে মেলে, স্থানীয় স্থিতিশীল এন্ট্রিটি প্রথমে ব্যবহৃত হয়ে যায় এবং কোনও ডিএনএস সার্ভারের সাথে যোগাযোগ করা হয় না। এটি কনফিগারযোগ্য, এবং অগত্যা সত্য নয়, তবে আমি অপারেটিং সিস্টেমগুলির সাথে এটি ডিফল্ট familiar


4
@ ট্রিকলি: এটিই 'হোস্ট' শিরোনামের জন্য। এটি ছাড়া আপনার আইপি ঠিকানার জন্য কেবল একটি ওয়েবসাইট থাকতে পারে। এটি HTTP / 1.0 এবং HTTP / 1.1 এর মধ্যে একটি মূল পার্থক্য। ধন্যবাদ এইচটিটিপি / ১.০ ব্রাউজারগুলি এখন বিরল - তবে আপনি যদি সেগুলি যত্ন নিতে চান তবে প্রতিটি সাইটের জন্য আপনার আলাদা আইপি ঠিকানা প্রয়োজন (সেগুলি এখনও একই সার্ভারে হোস্ট করা যেতে পারে)।
এই

1
@ এই ধন্যবাদ আমার মনে হয় আমি আমার প্রশ্নে অস্পষ্ট ছিলাম, আর এই কারণেই হ্রভোজে বুঝতে পারছিলাম না আমি কী বলছিলাম। (ইউআরএল না করে আমার ডোমেন বলা উচিত ছিল)। আপনি এখনও বুঝতে পেরে খুশি।
ট্রিল্কলি

1
আপনি বলছেন " এটি সঠিক এইচটিটিপি অনুরোধ নয় ", এবং এটি বেশিরভাগ ক্ষেত্রেই সত্য, তবে এটি আপনার ইঙ্গিতের চেয়েও নিকটবর্তী: " এইচটিটিপি-র ভবিষ্যতের সংস্করণগুলিতে সমস্ত অনুরোধগুলিতে পরম ইউআরআইতে রূপান্তর করার অনুমতি দেওয়ার জন্য, সমস্ত এইচটিটিপি / ১.১ সার্ভারগুলিতে পরম ইউরি ফর্মটি গ্রহণ করতে হবে অনুরোধ "। (আরএফসি 2616 -5.1.2) সুতরাং GET http://www.pippo.it/hello.htm HTTP/1.1একটি বৈধ, যদি অস্বাভাবিক হয়, অনুরোধ হবে। এটি কোনও এইচটিটিপি প্রক্সিতে একটি বৈধ এবং স্বাভাবিক অনুরোধ হবে।
wfaulk

1
gethostbyname()কিছুটা পুরানো। এক আরও ভাল ব্যবহার করা উচিত getaddrinfo()...
glglgl

1
@ উটকু দুর্ভাগ্যবশত নয় কারণ এসএসএইচ অনুমান করেছে যে অন্য প্রান্তটি এসএসএইচ প্রোটোকল বলছে যখন টেলনেট প্লেইন প্রোটোকল এবং এটি অন্য কোনও সরল প্রোটোকলের সাথে কথা বলতে যেমন পিওপি 3, আইএমএপি ব্যবহার করতে পারে যতক্ষণ তারা এসএসএল / টিএলএস ব্যবহার না করে তবে আপনি এই ক্ষেত্রে sllwrap বা অনুরূপ কিছু এর সাহায্যকারী দিয়ে টেলনেট সেশন মোড়ানো প্রয়োজন।
হ্রভোয়েপোলজার

12

এইচটিটিপি টিসিপি-র মাধ্যমে পরিবহন করা হয় যা একটি আইপি প্রোটোকল। এইচটিটিপি অনুরোধ করার জন্য, ব্রাউজারকে একটি টিসিপি সংযোগটি খুলতে হবে এবং এটি করতে তার গন্তব্য আইপি ঠিকানা (যেমন সার্ভারের আইপি ঠিকানা) প্রয়োজন। সার্ভারের হোস্টনামটি সমাধান করার জন্য , এটি একটি ডিএনএস অনুরোধ জারি করতে হবে (সাধারণত ডিএনএস অনুরোধ নিজেই অপারেটিং সিস্টেম দ্বারা প্রেরণ করা হয় যখন কোনও প্রোগ্রাম তার নাম রেজোলিউশনকে ডাকে; তবে, কোনও প্রোগ্রামই ডিএনএসের কাছে নিজেই ডিএনএস অনুরোধগুলি প্রেরণে বাধা দেয় না) সার্ভার)। কবার সংযোগটি প্রতিষ্ঠিত হয়, এটা তার HTTP অনুরোধ, যা অনুরোধকৃত রিসোর্চ পাথ ধারণ করে, এবং একটি পাঠাতে পারেন হোস্ট সার্ভার (যেমন, হোস্টনেম ক্ষেত্র Host: www.pippo.it)। হোস্ট-নেম নেই না অনুরোধ লাইনে যেতে (এটা আসলে হবেGET /hello.htm HTTP/1.1), যদি এইচটিটিপি প্রক্সিটিতে অনুরোধটি প্রেরণ করা হয় (তবে এই ক্ষেত্রে, প্রোটোকল অংশ সহ পুরো URL উপস্থিত থাকে, যেমন GET http://www.pippo.it/hello.htm HTTP/1.1),


ধন্যবাদ, এখন এটি পরিষ্কার হয়ে গেছে, তবে সম্পূর্ণ নয়। আপনি লিখেছেন যে ব্রাউজারকে একটি ডিএনএস অনুরোধ জারি করতে হবে। ঠিক আছে, তবে ডিএনএস সার্ভার থেকে আইপি পাওয়ার পরে এটি কীভাবে এটি ব্যবহার করবে? মানে, এই জাতীয় আইপি এইচটিটিপি অনুরোধে উপস্থিত হয় না। সুতরাং আমি ধরে নিচ্ছি HTTP অনুরোধ জারির আগে আরও একটি পদক্ষেপ রয়েছে এবং আমি মনে করি এটি সংযোগের উদ্বোধন। এই বিষয়টি আমার কাছে খুব পরিষ্কার নয় ... আরও একবার ধন্যবাদ!
জিয়ানকার্লো পারলো

5
প্রকৃতপক্ষে, টিসিপি সংযোগটি খোলার জন্য আইপি দরকার, যার ভিতরে এইচটিটিপি অনুরোধ স্থানান্তরিত হয়। আসলে, ক্লায়েন্ট এবং সার্ভার উভয়ের আইপি ঠিকানা সংযোগের সমস্ত প্যাকেট সহ প্রেরণ করা হয়। এটি কীভাবে কাজ করে তা জানার সর্বোত্তম উপায়টি হ'ল প্যাকেট ক্যাপচার সরঞ্জামটি ইনস্টল করা (ওয়ায়ারশার্ক একটি দুর্দান্ত মাল্টি-প্ল্যাটফর্ম এবং ওপেন সোর্স এক), একটি সাধারণ এইচটিটিপি অনুরোধ ক্যাপচার করে, নেটওয়ার্কের বাকী ক্রিয়াকলাপ থেকে এটিকে ফিল্টার করে, এবং কীভাবে দেখুন সমস্ত প্যাকেটগুলি তারে প্রেরণ করা হয়েছিল। টিসিপি সংযোগের আগে আপনার আসলে ডিএনএস অনুরোধটি দেখতে পারা উচিত।
আলে

1
প্রক্সিযুক্ত অনুরোধগুলি সম্পূর্ণ ইউআরএলটি জিইটি লাইনে না রেখে হোস্ট শিরোনাম ব্যবহার করা উচিত।
অরেঞ্জডোগ

1
@ ওরেঞ্জডগ: না, বিপরীতে। আরএফসি 7230 (বিভাগ 5.3.2) স্পষ্টতই বলেছে যে প্রক্সিটিতে অনুরোধ করা একজন ক্লায়েন্ট অবশ্যই অনুরোধ লাইনে একটি পরম-ইউআরআই ব্যবহার করতে হবে। ( অনুরোধ লাইন থেকে এখনও একটি হোস্ট শিরোনাম নকল তথ্য থাকতে হবে; বিভাগ 5.4)
এইচএমখোলম মনিকা

8

পদ্ধতিটি এরকম হয়:

  1. ব্যবহারকারী (আপনি) ব্রাউজারটির মতো একটি ইউআরএল দেয় http://www.pippo.it/hello.htm
  2. ব্রাউজারটি তিন ভাগে বিভক্ত:

    • প্রোটোকল http
    • হোস্টনাম www.pippo.it
    • ইউআরএল পাথ /hello.htm

    (আরও জটিল ইউআরএলটির অন্যান্য অংশও থাকতে পারে, আমি আপাতত সেই সম্ভাবনাটিকে উপেক্ষা করব)

  3. ব্রাউজারটি জানে যে একটি আইপি সংযোগ তৈরি করতে, এটির একটি আইপি ঠিকানা প্রয়োজন। একটি আইপি ঠিকানা পেতে, এটি ডিএনএস ব্যবহার করতে হবে (যদি না এটি ঠিকানাটি ক্যাশে থাকে)।

    1. ব্রাউজার অপারেটিং সিস্টেমটিকে একটি ডিএনএস সার্ভারের আইপি ঠিকানার জন্য জিজ্ঞাসা করে; এটি পায় অনুমান করা 8.8.8.8
    2. ব্রাউজারটি নিম্নলিখিত বহু-স্তরযুক্ত সংযোগটি তৈরি করে:

      • আইপি স্তর: সাথে সংযুক্ত 8.8.8.8
      • ইউডিপি স্তর: গন্তব্য পোর্ট 53 এর জন্য প্যাকেট সেট করুন
      • ডিএনএস স্তর: Aহোস্টনামের জন্য একটি রেকর্ডের জন্য একটি ডিএনএস অনুরোধ তৈরি করুনwww.pippo.it

      অবশ্যই আমি সম্পর্কিত অনেকগুলি বাদ দিচ্ছি যেমন জড়িত প্যাকেটের সঠিক ফর্ম্যাট।

    3. ব্রাউজারটি একটি ডিএনএস প্রতিক্রিয়া পেয়েছে (আইপি এর উপরে স্তরযুক্ত ইউডিপি শীর্ষে স্তরযুক্ত) যা আইপি ঠিকানা দেয় যার জন্য www.pippo.itএটি বলা যাক10.11.12.13
  4. ব্রাউজারটি জানে যে টিসিপি সংযোগ তৈরি করতে তার একটি পোর্ট নম্বর দরকার। একটি পোর্ট নম্বর পেতে, এটি httpতার অভ্যন্তরীণ সারণীতে প্রোটোকলটি সন্ধান করে এবং শিখেছে যে এটি 80 পোর্ট ব্যবহার করা উচিত।
  5. ব্রাউজারটি নিম্নলিখিত বহু-স্তরযুক্ত সংযোগটি তৈরি করে:

    • আইপি স্তর: সাথে সংযুক্ত 10.11.12.13
    • টিসিপি স্তর: গন্তব্য পোর্ট 80 এ প্যাকেট সেট করুন
    • এইচটিটিপি স্তর: /hello.htmহোস্টে ইউআরএলটির জন্য এইচটিটিপি অনুরোধ তৈরি করুন www.pippo.it(কারণ কম্পিউটারটি 10.11.12.13সম্ভবত বেশ কয়েকটি ডোমেন হোস্ট করছে, তাই এটি কোনটি পছন্দ করছে তা জানতে হবে)

      GET /hello.htm HTTP/1.1
      Host: www.pippo.it
      ...
      

    অবশ্যই আমি টিসিপি হ্যান্ডশেক এর সমস্ত বিবরণ বাদ দিচ্ছি।

  6. ব্রাউজারটি এইচটিটিপি প্রতিক্রিয়া প্রাপ্ত করে (আইসিপির উপরে টিসিপি শীর্ষে স্তরযুক্ত ইত্যাদি) এর সামগ্রীগুলি অন্তর্ভুক্ত করে hello.htm

এবং ভাল পরিমাপের জন্য, আমি উল্লেখ করব যে ব্রাউজারটি এখন সেই প্রতিক্রিয়াটির বিষয়বস্তু পরীক্ষা করে এবং প্রয়োজনীয় অতিরিক্ত সংস্থানগুলি সনাক্ত করে: চিত্র, সিএসএস, জাভাস্ক্রিপ্ট ইত্যাদি etc. তারপরে এটি প্রতিটি সংস্থার জন্য এই পুরো প্রক্রিয়াটি পুনরাবৃত্তি করে।


4
পদক্ষেপ 3 সত্যিই এমন কিছু নয় যা অ্যাপ্লিকেশন নিজেই করে। অ্যাপ্লিকেশনটি সেরকম কিছু ব্যবহার করেgetaddrinfo বা এর gethostbynameজন্য ঠিকানাটি সমাধান করতে ওএসকে জিজ্ঞাসা করে। এছাড়াও, ওএস সাধারণত ডিএনএস নয়, নাম সন্ধান করার চেষ্টা করতে একাধিক প্রক্রিয়া ব্যবহার করে। (সাধারণত কমপক্ষে ডিএনএস ছাড়াও হোস্ট ফাইল করে))
হ্যাঙ্কান লিন্ডকভিস্ট

ধন্যবাদ! এটি একটি সত্যই চিত্তাকর্ষক এবং বিস্তারিত উত্তর এবং খুব দরকারী!
জিয়ানকার্লো পার্লো

এটি সেরা উত্তর।
জিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.