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; // კონტროლის ჯამი
};