آموزشآموزش شبکه به زبان ساده

درس ۳۳ از ۹۹، شبکه و اینترنت، حدود ۱۳ دقیقه خواندن

TCP و UDP

جواب کوتاه

TCP و UDP دو تا روش فرستادن داده توی لایه‌ی انتقال هستن. TCP مطمئن و مرتبه: قبل از فرستادن اتصال برقرار می‌کنه، به هر تیکه شماره می‌زنه، رسید می‌گیره و هر چی گم شد رو دوباره می‌فرسته؛ برای وب، ایمیل و فایل. UDP سبک و تنده: بی اتصال و بی رسید می‌فرسته و قول نمی‌ده همه‌چیز برسه؛ برای DNS و تماس زنده، که دیر رسیدن بدتر از گم شدنه.

سه تا کلمه

  • TCPکوتاه‌شده‌ی Transmission Control Protocol: روش فرستادن مطمئن و مرتب؛ قبل از فرستادن اتصال برقرار می‌کنه و برای هر چیزی رسید می‌گیره.
  • UDPکوتاه‌شده‌ی User Datagram Protocol: روش فرستادن سبک و تند؛ بی اتصال و بی رسید، و قول نمی‌ده همه‌چیز برسه یا به ترتیب برسه.
  • رسیدپیام کوتاهی که گیرنده‌ی TCP برمی‌گردونه و می‌گه تا کجا رسیده. انگلیسیش acknowledgment یا ACK هست.

دو جور رسوندن

مثلا فرض کنید یه دانشنامه‌ی ده‌جلدی سفارش دادید. پیک جلدها رو یکی‌یکی میاره، شماره‌ی هر جلد روشه، برای هر کدوم رسید امضا می‌کنید، و اگه یه جلد توی راه گم بشه، دوباره میاره. آخر کار قفسه کامل و به ترتیبه، حتی اگه یه کم طول کشیده باشه.

حالا فرض کنید دارید گزارش زنده‌ی یه مسابقه رو از رادیو گوش می‌دید. اگه یه جمله رو نشنوید، گزارشگر برنمی‌گرده تکرارش کنه؛ بازی رفته جلو. ولی هر چی می‌شنوید، مال همین الانه.

اینترنت هم دو تا روش فرستادن داره که هر دو روی IP کار می‌کنن، توی لایه‌ی انتقال (درس مدل TCP/IP). TCP همون پیک دانشنامه‌ست و UDP همون رادیو. هر برنامه بسته به کارش یکی رو انتخاب می‌کنه.

TCP، قدم‌به‌قدم

TCP داده رو تیکه‌تیکه می‌فرسته و به هر تیکه یه شماره‌ی ترتیب می‌زنه. گیرنده رسید برمی‌گردونه و می‌گه تا کجا رو کامل گرفته:

هر جلد شماره داره و جدا میاد. جلد ۱ و ۲ رسیدن و سر جاشونن؛ ۳ و ۴ توی راهن.
برای هر جلدی که می‌رسه، یه رسید برمی‌گرده: «تا جلد ۲ رسید». جلد ۳ توی راه گم شده.
جلد ۴ رسید ولی جای ۳ خالیه؛ رسید هنوز می‌گه «تا ۲». پیک می‌فهمه ۳ نرسیده و دوباره میارتش.
جلد ۳ رسید و ۵ هم. حالا قفسه کامل و به ترتیبه، و رسید آخر می‌گه «تا ۵ رسید».

TCP گم شدن رو از روی شماره‌ها می‌فهمه، خراب شدن رو با یه عدد چک (checksum)، و هر دو رو با دوباره فرستادن درست می‌کنه. اگه یه تیکه چند بار پشت سر هم نرسید، اتصال رو می‌بنده. TCP سرعت فرستادن رو هم با گیرنده و با شلوغی راه تنظیم می‌کنه تا نه گیرنده غرق بشه، نه شبکه. قبل از همه‌ی این‌ها، دو طرف با سه تا پیام کوتاه اتصال رو برقرار می‌کنن، که درس بعده: «دست‌دادن سه‌مرحله‌ای TCP».

UDP: گزارش زنده

UDP هر پیام رو جدا و بی مقدمه می‌فرسته. نمی‌پرسه گیرنده آماده‌ست یا نه، رسید نمی‌خواد، و اگه یه پیام گم شد، کسی خبردار نمی‌شه. دو تا پیام ممکنه جابه‌جا برسن.

خب چرا کسی همچین چیزی می‌خواد؟ چون توی تماس تصویری، صدایی که یه ثانیه دیر برسه، دیگه به کاری نمیاد. اگه یه تیکه گم بشه، فقط کیفیت یه لحظه یه کم میاد پایین. ولی اگه قرار بود صبر کنیم تا دوباره بیاد، کل گفت‌وگو عقب میفتاد. برنامه‌هایی که از UDP استفاده می‌کنن، اگه اطمینان یا کنترل شلوغی لازم داشته باشن، خودشون می‌سازنش.

سربرگ‌ها از نزدیک

هر دو تا، پورت مبدأ و مقصد رو توی سربرگشون دارن (درس پورت). ولی TCP جای خیلی چیزهای دیگه رو هم لازم داره. هر ردیف توی تصویر ۳۲ بیته:

سربرگ UDP فقط چهار تا خونه داره: دو تا پورت، طول، و یه عدد چک.
سربرگ TCP جای شماره‌ی ترتیب، شماره‌ی رسید و پنجره رو هم داره؛ همین‌هان که رسوندن رو مطمئن می‌کنن.

کدوم برنامه، کدوم

کارروشچرا
صفحه‌ی وب (HTTP و HTTPS)TCPیه بایت جا بیفته، صفحه خراب می‌شه
ایمیلTCPنامه باید کامل برسه
انتقال فایلTCPفایل باید درست و کامل برسه
کار با سرور از دور (مثل SSH)TCPهر فرمان باید دقیق برسه
DNSUDP، و TCP همسوال کوتاهه و سرعت مهمه؛ برای جواب‌های بزرگ TCP
DHCPUDPدستگاه هنوز آدرس نداره و سوال کوتاهه
تماس صوتی و تصویری زندهمعمولا UDPدیر رسیدن بدتر از گم شدنه
HTTP/3QUIC روی UDPسرعت UDP، اطمینان مثل TCP

DNS بیشتر وقت‌ها UDP هست، چون سوال و جوابش کوتاهه (درس DNS)؛ ولی سرورهای DNS باید TCP رو هم بلد باشن، برای جواب‌هایی که بزرگن. DHCP هم UDP هست (درس DHCP).

QUIC: مطمئن روی UDP

QUIC یه روش تازه‌تره که روی UDP ساخته شده، ولی خودش همه‌ی کارهای TCP رو می‌کنه: اتصال، اطمینان، ترتیب، و رمزگذاری هم. مثل پیکی که تقریبا به تندی رادیو می‌رسه، ولی رسید هم می‌گیره. نسخه‌ی سوم HTTP، یعنی HTTP/3، روی QUIC کار می‌کنه، و برقرار کردن اتصال توش کوتاه‌تره، چون اتصال و رمزگذاری با هم برقرار می‌شن.

فرق‌ها در یک نگاه

TCPUDP
اتصالقبل از فرستادن برقرار می‌شهنداره
رسیدنقول می‌ده؛ گم‌شده دوباره فرستاده می‌شهقول نمی‌ده
ترتیبمرتب به برنامه می‌رسهممکنه جابه‌جا برسه
سربرگدست‌کم ۲۰ بایت۸ بایت
کم و زیاد کردن سرعت با شلوغیدارهنداره؛ با خود برنامه‌ست
به درد چی می‌خورهوب، ایمیل، فایلDNS، تماس زنده، QUIC

سه تا اشتباه رایج

  • «UDP بده، چون مطمئن نیست.»نه. برای کارهای زنده، دیر رسیدن بدتر از گم شدنه. UDP برای همین ساخته شده، و برنامه هر اطمینانی لازم داشته باشه، خودش اضافه می‌کنه.
  • «TCP یعنی هیچ بسته‌ای توی راه گم نمی‌شه.»نه. بسته‌ها توی راه گم می‌شن؛ TCP می‌فهمه گم شده و دوباره می‌فرسته. اطمینانش از همین دوباره فرستادنه.
  • «همه‌ی سایت‌ها فقط روی TCP کار می‌کنن.»نه. HTTP/3 روی QUIC هست و QUIC روی UDP؛ اطمینان رو خود QUIC می‌ده.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • TCP: اتصال، شماره‌ی ترتیب، رسید، دوباره فرستادن؛ مطمئن و مرتب.
  • UDP: بی اتصال و بی رسید؛ سبک و تند، بی قول رسیدن و ترتیب.
  • سربرگ UDP ۸ بایته و سربرگ TCP دست‌کم ۲۰ بایت.
  • وب، ایمیل و فایل روی TCP هستن؛ DNS، DHCP و تماس زنده معمولا روی UDP.
  • QUIC روی UDP هست ولی خودش اطمینان می‌ده؛ HTTP/3 روی QUIC هست.

خودتان را بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را می‌بینید: چند درست، چند نادرست.

خودتان را بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها تازه است.
  • تا آخر، درست یا نادرست بودن جواب‌ها گفته نمی‌شود؛ می‌توانید برگردید و جوابی را عوض کنید.
  • آخرش کارنامه می‌گیرید: چند پرسش درست و چند نادرست.
  • هر وقت بستید، دوباره که باز کنید از همان‌جا ادامه می‌دهید.

فصل‌های این درس

درس بعد