Middle
Ispričaj mi o sloju za prenos (transport layer) modela TCP/IP.
sobes.tech АИ
Одговор од АИ
Транспортни ниво TCP/IP обезбеђује везу између процеса покренутих на различитим хостовима. Главни задаци:
- Идентификација апликација/процеса на хосту (преко портова).
- Обезбеђивање сервиса преноса података:
- Поуздан, поређан пренос (TCP).
- Непоуздан, без гаранције преноса (UDP).
Два главна протокола:
- Transmission Control Protocol (TCP):
- Везано оријентисано.
- Гарантује испоруку пакета, очување редоследа, контролу тока и управљање пренатрпаношћу.
- Користи се за апликације које захтевају поуздан пренос (HTTP, FTP, SMTP).
- User Datagram Protocol (UDP):
- Без везе.
- Не гарантује испоруку, редослед или контролу тока.
- Низка латенција, погодна за апликације осетљиве на време, где је мала изгуба података прихватљива (DNS, VoIP, стриминг видео).
TCP сегменти укључују поља за: изворне/одредне портове, редне бројеве, бројеве потврде, флагове (SYN, ACK, FIN), контролни збир.
UDP датаграми укључују поља за: изворне/одредне портове, дужину и контролни збир.
Порти (ports): 16-битни бројеви који се користе за мултиплексирање/демултиплексирање података између процеса.
- Well-known ports (0-1023): Резервисани за стандардне сервисе (80 за HTTP, 443 за HTTPS, 22 за SSH).
- Registered ports (1024-49151): Користе се за приватне апликације регистроване у IANA.
- Dynamic/Private ports (49152-65535): Користе их клијенти за излазна повезивања.
Пример успостављања TCP везе (Three-way Handshake):
- Клијент шаље сегмент са флагом SYN и почетним редним бројем.
- Сервер добија SYN, одговара сегментом са флаговима SYN и ACK, својим почетним редним бројем и бројем потврде, једнаким client_seq + 1.
- Клијент добија SYN+ACK, одговара сегментом са флагом ACK и бројем потврде, једнаким server_seq + 1. Веза је успостављена.
// Пример структуре заглавља TCP (поједностављена)
struct tcp_header {
unsigned short src_port; // Изворни порт
unsigned short dest_port; // Циљни порт
unsigned int seq_num; // Редни број
unsigned int ack_num; // Број потврде
unsigned short flags; // Флагови (SYN, ACK, FIN и др.)
// друге поља...
};
// Пример структуре заглавља UDP (поједностављена)
struct udp_header {
unsigned short src_port; // Изворни порт
unsigned short dest_port; // Циљни порт
unsigned short length; // Дужина UDP датаграма
unsigned short checksum; // Контролна сума
};