Middle
TCP/IP моделинин ташуу катмары (transport layer) жөнүндө айтып бер.
sobes.tech AI
AIден жооп
Транспорттук катмар 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; // Контроль суммасы
};