কিভাবে এইচটিটিপি সার্ভার লিখবেন?


17

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

  1. 80 পোর্টে একটি সকেট খুলুন।
  2. একটি ক্লায়েন্ট একটি অনুরোধ করার জন্য অপেক্ষা করুন।
  3. অনুরোধটি পড়ুন (অর্থাত্, এই ব্যক্তিটি "পরিচিতি - us.html" পৃষ্ঠা চায়)।
  4. "যোগাযোগ-us.html" সন্ধান করুন এবং পড়ুন।
  5. এইচটিএমএল শিরোনাম প্রেরণ করুন, তারপরে "যোগাযোগ-us.html" এর সামগ্রীটি প্রেরণ করুন
  6. সম্পন্ন

যেমনটি আমি বলেছিলাম, আমি বিশ্বাস করি এটি প্রক্রিয়া, তবে আমি 100% নিশ্চিত নই। এটি আমার প্রশ্নের হৃদয়ে নিয়ে যায়। কোনও ব্যক্তি এই তথ্য কীভাবে বা কোথায় সন্ধান করতে পারে?

আমি যদি কেবল একটি এইচটিটিপি সার্ভার লিখতে না চাই, তবে আমি যদি কোনও এফটিপি সার্ভার, একটি চ্যাট সার্ভার, একটি চিত্র দর্শক ইত্যাদি লিখতে চাইতাম তবে কী হবে? একজন কর্মক্ষম HTTP সার্ভার তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপগুলি / প্রক্রিয়াটি কীভাবে খুঁজে পাবেন?

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

আমি "এইচটিটিপি সার্ভারটি কীভাবে কাজ করে" গুগল করার চেষ্টা করেছি, তবে আমি যে উত্তরগুলি পেয়েছি কেবল সেগুলিই আপনার গড় জোয়ের দিকে লক্ষ্য করা যায়, এবং এইচটিটিপি সার্ভারে প্রোগ্রামিং করতে ইচ্ছুক ব্যক্তির দিকে নয়।


12
আরএফসি 2616 এ আপনার জন্য এইচটিটিপি প্রোটোকলের সমস্ত কৌতুকপূর্ণ বিবরণ থাকা উচিত। আরএফসি 959 এফটিপি-র জন্য একই জিনিস।
মাইকে

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

মাইকেল বর্গওয়ার্ট - আমি এটি করব তবে আমার অন্যান্য কোডের দিকে তাকানোর পরে আমি যা দেখেছি তা অনুলিপি করার প্রবণতা রয়েছে। আমি এই ক্লিনে যাবার আশা করছিলাম, "প্রতারণা" না করে আমি নিজে থেকে এটি করতে পারি কিনা তা দেখার জন্য।
ব্রায়ান

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

অন্যান্য প্রয়োগগুলি পর্যালোচনা বিবেচনা করুন, উদাহরণস্বরূপ অ্যাপাচি টমক্যাট। এটি সম্ভবত আপনার চেয়ে বেশি কাজ করে তবে সমস্যাটি সমাধান করার জন্য এটি একটি কৌশল প্রদর্শন করবে।
ডিডব্লিউবি

উত্তর:


19

আরএফসি 2616 , লুক ব্যবহার করুন !

আপনি HTTP / 1.1 তে আরএফসি 2616 পড়েছেন এবং আপনি এটির জন্য যান।

প্রকৃতপক্ষে এটি ইঞ্জিনিয়ারিং স্কুলে আমার তৃতীয় বর্ষের একটি প্রকল্প ছিল এবং প্রকল্পের বিবরণটি এটি অনেকটাই।

সরঞ্জামসমূহ

আপনার সরঞ্জামগুলি হ'ল:

  • প্রাথমিক নেটওয়ার্কিং স্টাফ (সকেট পরিচালনা, বাঁধাই, ঠিকানাগুলি বোঝুন),
  • I / O স্ট্রিম সম্পর্কে ভাল বোঝাপড়া,
  • আরএফসির কিছু ছায়াময় অংশ পাওয়ার জন্য অনেক ধৈর্য (মাইম-প্রকারগুলি মজাদার)।

মজা বিবেচনা

অতিরিক্ত মজাদার জন্য বিবেচনা করার বিষয়গুলি:

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

আনন্দ কর. এটি দেখতে খুব দুর্দান্ত জিনিস।

অন্যান্য (সহজ) পরামর্শ

  • এফটিপি ক্লায়েন্ট / সার্ভার (বেশিরভাগ আরএফসি 959 তবে পুরানো সংস্করণ এবং কিছু এক্সটেনশন রয়েছে)
  • আইআরসি ক্লায়েন্ট / সার্ভার (বেশিরভাগ আরএফসি 1459 , তবে এক্সটেনশন রয়েছে)

তারা প্রথমে মোকাবেলা করার উপায় সহজ, এবং তাদের আরএফসি হজম করা খুব সহজ (ভাল, আইআরসি-র একটির কিছু বিজোড় অংশ রয়েছে, তবে এফটিপি একদম পরিষ্কার)।

ভাষা পছন্দ

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


হ্যাঁ, স্কুলেও আমাকে প্রজেক্ট হিসাবে এটি করতে হয়েছিল। এটি আশ্চর্যজনকভাবে মজাদার এবং আপনাকে "শিল্প শক্তি" ওয়েব সার্ভারগুলির জন্য আরও একটি প্রশংসা দেয়।
এভিকাটোস

প্রোটোকল বাস্তবায়ন ডান এক অংশ; সার্ভারকে আর্কিটেকিং করা অন্যটি ...
টিডামাররা

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

@ হাইলেম: হ্যাঁ এবং না চশমাটি প্রয়োগ করা আপনাকে স্বতন্ত্র কর্মী দেয়, তবে আপনাকে এখনও এই শ্রমিককে আরও বড় ছবিতে এম্বেড করতে হবে - আপনি কীভাবে সমবর্তী অনুরোধগুলি পরিচালনা করার যত্ন নেন? আপনি কীভাবে দরকারী সামগ্রী সরবরাহ করবেন? আপনি কোথায় রাষ্ট্র রাখবেন?
টিডামার্স

@tdammers আমাকে: You still have lots of room for your architecture design, but it's a pretty good and directive spec.আপনি: yes and no। আমি মনে করি আমরা ইতিমধ্যে সংকীর্ণ হয়েছি আরএফসি সবকিছু ছিল না। এবং আমি মনে করি যে "অতিরিক্ত বিবেচনা" বিভাগ এবং অন্যান্য বিষয়গুলিতে আমি ইতিমধ্যে যা করেছি তার চেয়ে সরাসরি এগুলিকে নির্দেশ করার চেয়ে এই বিষয়গুলি আবিষ্কার করা ওপি'র উপর নির্ভর করে। এটা মজার অংশ।
হাইলেম

2

ইন্টারনেটে ব্যবহৃত প্রতিটি প্রোটোকল আরএফসি নামক এক বা একাধিক পাবলিক ডকুমেন্টে নির্দিষ্ট করা আছে। সমস্ত বর্তমান আরএফসিগুলি http://www.rfc-editor.org/ এ পাওয়া যাবে , যার একটি শালীন অনুসন্ধান কার্য রয়েছে।

HTTP প্রোটোকলের (সংস্করণ 1.1), উদাহরণস্বরূপ, উল্লেখ করা হয় RFC2616 এবং FTP প্রোটোকল উল্লেখ করা হয় RFC959

স্পেসিফিকেশন হিসাবে, আরএফসিগুলি, আমার মতে, খুব ভাল পাঠযোগ্য।


আমি এই আরএফসিগুলির সাথে সত্যিই বিভ্রান্ত। তারা কি কখনও এইচটিটিপি আরএফসি আপডেট করবে? উপরের উত্তরে, একটি মন্তব্য রয়েছে যা জানিয়েছে In 2014, RFC2616 was replaced by multiple RFCs (7230-7237).। সুতরাং, আপডেট হওয়া আরএফসি উপস্থিত থাকলে কীভাবে তা সন্ধান করবেন? আমি Obsoleted byতালিকার জন্য পরীক্ষা করা উচিত ?
স্ক্রুএভারিথিং

@ স্ক্রুএভারিথিং: আরএফসি আপডেট হয় না তবে তারা নতুন আরএফসি দ্বারা প্রতিস্থাপিত হয়। আপনি "বিসতৃত" লিঙ্কগুলি অনুসরণ করে সত্যই নতুনগুলি খুঁজে পান।
বার্ট ভ্যান ইনজেন শেহেনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.