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 جای خیلی چیزهای دیگه رو هم لازم داره. هر ردیف توی تصویر ۳۲ بیته:
کدوم برنامه، کدوم
| کار | روش | چرا |
|---|---|---|
| صفحهی وب (HTTP و HTTPS) | TCP | یه بایت جا بیفته، صفحه خراب میشه |
| ایمیل | TCP | نامه باید کامل برسه |
| انتقال فایل | TCP | فایل باید درست و کامل برسه |
| کار با سرور از دور (مثل SSH) | TCP | هر فرمان باید دقیق برسه |
| DNS | UDP، و TCP هم | سوال کوتاهه و سرعت مهمه؛ برای جوابهای بزرگ TCP |
| DHCP | UDP | دستگاه هنوز آدرس نداره و سوال کوتاهه |
| تماس صوتی و تصویری زنده | معمولا UDP | دیر رسیدن بدتر از گم شدنه |
| HTTP/3 | QUIC روی UDP | سرعت UDP، اطمینان مثل TCP |
QUIC: مطمئن روی UDP
QUIC یه روش تازهتره که روی UDP ساخته شده، ولی خودش همهی کارهای TCP رو میکنه: اتصال، اطمینان، ترتیب، و رمزگذاری هم. مثل پیکی که تقریبا به تندی رادیو میرسه، ولی رسید هم میگیره. نسخهی سوم HTTP، یعنی HTTP/3، روی QUIC کار میکنه، و برقرار کردن اتصال توش کوتاهتره، چون اتصال و رمزگذاری با هم برقرار میشن.
فرقها در یک نگاه
| TCP | UDP | |
|---|---|---|
| اتصال | قبل از فرستادن برقرار میشه | نداره |
| رسیدن | قول میده؛ گمشده دوباره فرستاده میشه | قول نمیده |
| ترتیب | مرتب به برنامه میرسه | ممکنه جابهجا برسه |
| سربرگ | دستکم ۲۰ بایت | ۸ بایت |
| کم و زیاد کردن سرعت با شلوغی | داره | نداره؛ با خود برنامهست |
| به درد چی میخوره | وب، ایمیل، فایل | 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 هست.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.