টিসিপি সংযোগের জন্য সর্বাধিক প্যাকেটের আকার


196

টিসিপি সংযোগের জন্য সর্বোচ্চ প্যাকেটের আকারটি কীভাবে বা আমি কীভাবে সর্বোচ্চ প্যাকেটের আকার পেতে পারি?


24
টিসিপি স্ট্রিম ভিত্তিক। আপনি পৃথক প্যাকেট সম্পর্কে উদ্বিগ্ন একটি নির্দিষ্ট কারণ আছে?
মট্টি ভির্ককুনেন

27
কারণ এর নীচে স্তরগুলি প্যাকেট ভিত্তিক ... সাধারণ বাস্তবায়ন -> স্তর 1 - ইথারনেট PHY, স্তর 2 - ইথারনেট ম্যাক (ম্যাক প্যাকেট সংজ্ঞা, স্তর 3 - ইন্টারনেট প্রোটোকল (আইপি প্যাকেট সংজ্ঞা), স্তর 4 - টিসিপি (সংক্রমণ নিয়ন্ত্রণ প্রোটোকল ) - এর নীচে প্যাকেট ভিত্তিক পরিষেবা ব্যবহার করে

2
'টিসিপি প্যাকেট' বলে কোনও জিনিস নেই। এখানে টিসিপি বিভাগ রয়েছে , যার দৈর্ঘ্য 32-বিট শব্দের দ্বারা বর্ণিত হয়েছে এবং সেগুলি আইপি প্যাকেটের ভিতরে বা এর মধ্যে রয়েছে , যার দৈর্ঘ্য 16 বিটে বর্ণিত। এছাড়াও ইথারনেট ফ্রেম রয়েছে, যা এই সমস্ত জিনিস ধারণ করে। এইগুলির মধ্যে কোনটি সম্পর্কে আপনি জিজ্ঞাসা করছেন? যে কোনও ক্ষেত্রে আপনি যদি টিসিপি ব্যবহার করে থাকেন তবে সেগুলির কোনও বিষয়েই আপনাকে কোনওভাবেই উদ্বিগ্ন হওয়ার দরকার নেই: টিসিপি এবং আইপি আপনার জন্য সমস্ত যত্ন করে।
লার্নের মারকুইস

উত্তর:


178

টিসিপি প্যাকেটের আকারের নিখুঁত সীমাবদ্ধতা 5৪ কে (5 65৫৩৩ বাইট), তবে ব্যবহারিকতায় এটি যে কোনও প্যাকেট আপনি দেখতে পাবেন তার চেয়ে অনেক বড়, কারণ নীচের স্তরগুলিতে (যেমন ইথারনেট) কম প্যাকেটের আকার রয়েছে।

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


15
"তবে মান প্রতিটি শারীরিক প্রযুক্তির জন্য স্থির থাকে" - এটি সত্য নয়। ইথারনেটের সর্বাধিক 1500 এমটিইউ থাকত তবে আপনি কম ব্যবহার করতে পারেন। জাম্বো ফ্রেমের আবির্ভাবের সাথে, কোনও সুনির্দিষ্টভাবে সর্বাধিক নির্দিষ্ট নেই এবং হার্ডওয়্যার এবং ড্রাইভারের উপর নির্ভর করে সর্বাধিক পরিবর্তিত হয়।
হোয়াইটওয়াইন্ড

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

3
@ হিরোপ্রোটোগোনজিস্ট: ১৫০০ সর্বোচ্চ, সুতরাং so০০ থাকা অবাক করার মতো কিছু নয়।
নিকোলাস রাউল

28
এটি কেন সীমাবদ্ধতা 64 কে (65535 বাইট)? কারণ টিসিপি শিরোলেখের উইন্ডো আকারের বৈশিষ্ট্যটি কেবলমাত্র 16 বিট। আমি কেবল উল্লেখ করতে চেয়েছিলাম, কাউকে কাউকে সাহায্য করতে পারে ..... দুর্দান্ত উত্তর বিটিডব্লিউ @ অন্য!
কচো সান্তা

2
এছাড়াও, উইন্ডো স্কেলিং ব্যবহার করে এটি বাড়ানো সম্ভব। সেক্ষেত্রে সর্বাধিক 1 জিআইবি
মার্টিন মেলকা

86

এটি একটি দুর্দান্ত প্রশ্ন এবং আমি আসলে এটি অনেক কাজ করে চলেছি। 65k এবং 1500 এর মতো অনেকগুলি "প্রযুক্তিগতভাবে সঠিক" উত্তর রয়েছে network আমি নেটওয়ার্ক ইন্টারফেস লেখার জন্য অনেক কাজ করেছি এবং 65k ব্যবহার করা নির্বোধ, এবং 1500 আপনাকে বড় সমস্যায় ফেলতে পারে। আমার কাজটি বিভিন্ন হার্ডওয়্যার / প্ল্যাটফর্ম / রাউটারগুলিতে প্রচুর পরিমাণে যায় এবং আমি যে জায়গাটি শুরু করি তার সত্য কথা বলতে 1400 বাইট হয়। যদি আপনার 1400 এরও বেশি প্রয়োজন হয় তবে আপনি নিজের পথটি ইঞ্চি করতে শুরু করতে পারেন, আপনি সম্ভবত 1450 এবং কখনও কখনও 1480'ish যেতে পারেন? আপনার যদি এর চেয়ে বেশি প্রয়োজন হয় তবে অবশ্যই আপনাকে 2 টি প্যাকেটে বিভক্ত করতে হবে, যার মধ্যে বেশ কয়েকটি সুস্পষ্ট উপায় রয়েছে ..

সমস্যাটি হ'ল আপনি একটি ডেটা প্যাকেট তৈরি করার কথা বলছেন এবং এটি টিসিপির মাধ্যমে লিখে রাখছেন, তবে অবশ্যই এখানে শিরোনামের ডেটা রয়েছে এবং আরও অনেক কিছু আছে, সুতরাং আপনার কাছে "ব্যাগেজ" রয়েছে যা আপনাকে 1500 বা তারও বেশি রাখে .. এবং এটিও হার্ডওয়্যার অনেক কম সীমাবদ্ধতা আছে।

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


জিইটি অনুরোধগুলি প্রায় 600 বাইটের গড় কেন?

10
আপনার অর্থ 64 কে, 65 কে নয়। 'আমি যে জায়গাটি শুরু করি তা 1400 বাইট' বলতে কী বোঝায় তা আমি জানি না। টিসিপি এপিআইতে প্যাকেটের আকার সম্পর্কে আপনার চিন্তা করার দরকার নেই। এটি এমটিইউ পথটি নির্ধারণ ও পর্যবেক্ষণের যত্ন নেয়। send()সুবিধাজনক হলে আপনি কোনওটিতে 2 জি লিখতে পারবেন না তার কোনও কারণ নেই ।
লার্নের মারকুইস 5'13

19
আপনার 1480'ishহওয়া উচিত 1460। আইপি শিরোনাম এবং টিসিপি শিরোনাম কমপক্ষে প্রতিটি 20 বাইট নেয় (unlessচ্ছিক শিরোনাম ক্ষেত্রগুলি ব্যবহার না করা হয়) এবং সুতরাং (নন-জাম্বো ফ্রেম) ইথারনেটের সর্বোচ্চ হয় 1500 - 20 -20 = 1460
ইউজিন বেরেসভস্কি

2
আমি ওয়্যারশার্কের মাধ্যমে দেখেছি যে কোনও সার্ভার বড় প্যাকেটগুলি (1400 বাইটের বেশি) প্রেরণ করে এবং ক্লায়েন্ট এটি সর্বোচ্চ 1400 বাইটের কয়েকটি প্যাকেট হিসাবে বিচ্ছিন্ন করে receives প্যাকেট বিচ্ছিন্ন করার জন্য দায়ী কে? @ নেখতারিও ...?
ইনবালি

2
@ ইউজেনবিরেসভস্কি ভাল theচ্ছিক শিরোনামগুলি সহ আরও 40 বাইট বর্ধন করতে পারেন তবে এটি পরিবর্তনশীল তাই 1420 এর সীমা মনে হবে। 1400 এর পরামর্শ নিয়ে আপনি কিছুটা প্যাডিং পান। আমি 1408 এর সাথে যাব যেহেতু এটি 128 দ্বারা বিভাজ্য
গ্যারেট ক্লারোনের

22

অ্যাপ্লিকেশন স্তরে, অ্যাপ্লিকেশনটি টিসিপিটিকে একটি স্ট্রিম ওরিয়েন্টেড প্রোটোকল হিসাবে ব্যবহার করে। পরিবর্তে টিসিপিতে অবিশ্বস্ত আইপি প্যাকেটগুলির সাথে কাজ করার বিশদগুলি বিভক্ত করে এবং বিমূর্ত করে তোলে।

টিসিপি প্যাকেটের পরিবর্তে বিভাগগুলি নিয়ে কাজ করে। প্রতিটি টিসিপি বিভাগে একটি সিকোয়েন্স নম্বর থাকে যা একটি টিসিপি শিরোনামের ভিতরে থাকে। টিসিপি বিভাগে প্রেরিত আসল ডেটা পরিবর্তনশীল।

গেসকোপ্টের জন্য একটি মান রয়েছে যা কিছু ওএসে সমর্থিত যা আপনি টিসিপি_এমএক্সএসইজি নামে ব্যবহার করতে পারেন যা সর্বাধিক টিসিপি বিভাগের আকার (এমএসএস) পুনরুদ্ধার করে। যদিও এটি সমস্ত ওএসে সমর্থিত নয়।

আপনি ঠিক কী করার চেষ্টা করছেন তা আমি নিশ্চিত নই তবে আপনি যে বাফার আকারটি ব্যবহার করেছেন তা হ্রাস করতে চাইলে আপনি এটিও দেখতে পারেন: SO_SNDBUF এবং SO_RCVBUF।


আমি ভাবছি আপনি যদি একটি বড় টিসিপি প্যাকেটের ভিতরে আপনার সমস্ত বার্তা ফিট করতে পারেন তবে আপনি যদি একটি বার্তা সারি হিসাবে টিসিপি ব্যবহার করতে পারেন?
সিএমসিডিগ্রাগনকাই


4

টিসিপি এপিআইতে কোনও প্যাকেট নেই।

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

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


8
টিসিপিতে প্যাকেটগুলির পাশাপাশি প্যাকেট শিরোলেখ রয়েছে যার একটি অংশ আইপি শিরোনামকে ওভারল্যাপ করে। আপনার দেখার কথা না বলে কেবল এটির উপস্থিতি নেই doesn't টিসিপি সর্বদা আইপি দিয়ে করা হয়। আপনি আইপি ছাড়া এটি করতে পারবেন না কারণ শিরোনামগুলি ওভারল্যাপ করে।
ঘূর্ণিবায়ু

23
@ হোয়ারওয়াইন্ড টিসিপিতে অংশ রয়েছে। আইপিতে প্যাকেট রয়েছে।
মার্নুইস অফ লর্ন

1
টিসিপিতে বিভাগ রয়েছে (বা তাদের প্যাকেটগুলি বলুন, এটি ঠিক আছে)। টিসিপি এপিআইয়ের কোনও প্যাকেট নেই।
পাভেল রদজিভিলভস্কি

13
@ নাথানলং- এর ক্ষতি হ'ল আপনি অযথা বিভ্রান্তির সৃষ্টি করছেন। বিভিন্ন TCP অংশ আছে, এর ফলে UDP datagrams হয়েছে, আইপি প্যাকেট আছে, ইথারনেট হয়েছে ফ্রেম, ...
Lorne এর মার্কুইস

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

3

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

এটি কেবলমাত্র যদি এমটিইউ কমপক্ষে পুরো নেটওয়ার্ক জুড়ে থাকে। টিসিপি আপনার কার্যকর এমটিইউ হ্রাস করতে পাথ এমটিইউ আবিষ্কার ব্যবহার করতে পারে।

প্রশ্নটি হচ্ছে, আপনি যত্ন কেন?


6
এটি কেবলমাত্র প্রথম লিঙ্কটিতে সর্বাধিক প্যাকেটের আকার পাবে। আমি যতদূর জানি, রুটের পাশের অন্য কোনও নোডকে বড় প্যাকেট পছন্দ না করার অনুমতি দেওয়া হয়েছে এবং এটি পথের পাশে যে কোনও জায়গায় বিভক্ত হয়ে যেতে পারে।
মট্টি ভির্ককুনেন

হ্যাঁ, এটা সত্য ... সুতরাং আপনার প্রশ্নটি ভাল - আপনি এটি কেন চান?
ঘূর্ণিবায়ু

আমি ল্যান সংযোগে ভিডিও / চিত্রগুলি প্রেরণ করতে চাই
আলেক্সা

1
যেহেতু টিসিপি স্ট্রিম-ওরিয়েন্টড, তাই কেন এই বিষয়টি গুরুত্বপূর্ণ?
ঘূর্ণিবায়ু

3

আপনি যদি লিনাক্স মেশিনগুলির সাথে থাকেন তবে "ifconfig eth0 mtu 9000 up" হ'ল একটি ইন্টারফেসের জন্য এমটিইউ সেট করার আদেশ। তবে, আমার বলতে হবে, বড় ট্রান্সমিশন যদি স্থিতিশীল না হয় তবে বড় এমটিইউর কিছুটা ডাউনসাইড রয়েছে এবং এটি আরও কার্নেল স্পেস স্মৃতি ব্যবহার করতে পারে।


3

মনে হচ্ছে ইন্টারনেটে বেশিরভাগ ওয়েব সাইট এমটিইউর মানটির জন্য 1460 বাইট ব্যবহার করে। কখনও কখনও এটি 1452 হয় এবং আপনি কোনও ভিপিএন এ থাকলে এটি আইপিসেক শিরোলেখগুলির জন্য আরও বেশি নামবে।

ডিফল্ট উইন্ডো আকারটি সর্বাধিক 65535 বাইটের চেয়ে কিছুটা পরিবর্তিত হয়। আমি আমার নিজস্ব উত্সের আইপি মানগুলি দেখতে এবং অন্যান্য ইন্টারনেট বিক্রেতারা কী ব্যবহার করছে তা পরীক্ষা করতে http://tcpcheck.com ব্যবহার করি।


2

একটি সমাধান সকেট বিকল্প টিসিপি_এমএক্সএসইজি ( http://linux.die.net/man/7/tcp ) অন্তর্নিহিত নেটওয়ার্ক (যেমন ইথারনেটে নিরাপদ থাকতে 1400 সেট করুন) এর সাথে "নিরাপদ" মান হিসাবে সেট করতে পারেন এবং তারপরে সিস্টেম কলটিতে একটি বড় বাফার ব্যবহার করুন। এই পদ্ধতিতে ব্যয়বহুল কম সিস্টেমে কল আসতে পারে। কার্নেল এমএসএসের সাথে ম্যাচ করার জন্য ডেটা বিভক্ত করবে।

এইভাবে আপনি ছাঁটা ডেটা এড়াতে পারবেন এবং আপনার অ্যাপ্লিকেশনটিকে ছোট বাফার সম্পর্কে চিন্তা করতে হবে না।


2

আইপি প্রোটোকল (আইপি 4) এ টিসিপি সেটিংয়ের জন্য প্যাকেটের আকার। এই ক্ষেত্রটির জন্য (টিএল), 16 টি বিট বরাদ্দ করা হয়েছে, তদনুসারে প্যাকেটের সর্বোচ্চ আকার 65535 বাইট: আইপি প্রোটোকল বিশদ

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