Аннотация: Структура полного адреса в протоколе UDP. Понятие UDP-портов. Структура UDP-пакета. Распространенные UDP-сервисы. DNS. Bind.
Ход занятия
1. UDP (User Datagram Protocol , протокол передачи блоков данных пользователя) – протокол транспортного уровня, не требующий
подтверждения соединения, принадлежащий семейству протоколов интернет TCP/IP.
По сути, протокол UDP является прослойкой между IP и протоколами верхнего уровня, предоставляя возможность нескольким приложениям работать на одном компьютере с помощью системы портов.
Порты представляют собой программные интерфейсы, которые можно описать на примере работы почтового отделения.
Каждое почтовое отделение имеет индекс – в нашем примере IP-адрес , а каждый конкретный получатель – улицу, квартиру и дом – это порт. Если представить пересылку письма, то сначала письмо доставляется от отправителя в почтовое отделение (инкапсулируется, т.е. встраивается в пакет IP ). После этого письмо доставляется на почтовое отделение получателя по индексу (доставляется IP-пакет на хост-получатель ). Почтальон разносит письма в почтовые ящики и доставляет наше письмо получателю (подсистема UDP хоста-получателя декапсулирует UDP-пакет из IP и отправляет приложению-получателю).
2. UDP – транспортный протокол для нескольких известных служб, таких как:
NFS (Network FileSystem – сетевая файловая система) – протокол уровня приложений для передачи файлов по локальной IP-сети . Каталоги NFS , открытые для общего доступа могут быть смонтированы (как в UNIX системах, так и в системах на базе Windows NT/2000/XP/2003) как локальные каталоги, с которыми можно работать.
SMB (Server Message Block – блок сообщений сервера) – протокол уровня приложений для передачи файлов в сетях Windows.
SNMP (Simple Network Managment Protocol – простой протокол управления сетью) – протокол уровня приложений, использующийся для сбора информации о состоянии и управлении активными сетевыми устройствами, такими как маршрутизаторы, программируемые коммутаторы, серверы и др.
TFTP (Trivial File Transfer Protocol – простейший протокол передачи файлов) – протокол уровня приложений, использующийся, чаще всего, для приема/передачи конфигурационной и другой информации с активных сетевых устройств.
3. DNS (Domain Name Service – служба доменных имен) – протокол уровня приложений, позволяющий преобразовывать символьные имена интернет-хостов в IP-адреса .
Наиболее распространенным DNS-сервером на сегодняшний день признан BIND (Berkley Internet Name Daemon – Демон интернет-имен университета Беркли). Демон предоставляет стандартный DNS-сервис на портах UDP-53 (обработка запросов клиентов), TCP-53 (пересылка информации о зонах между серверами имен).
Служба имен – это распределенная иерархическая (поделенная на уровни) база данных в интернет.
Имена DNS подразделяются на имена хостов и имена доменов разного уровня:
www.volnet.ru – здесь www – имя компьютера, volnet – домен второго уровня, ru – домен первого уровня.
Домен – обозначение условной группы компьютеров, объединенных по признакам принадлежности к организации, сети, географическому положению или сфере деятельности.
Существуют несколько международных доменов первого уровня:
- com – коммерческие организации
- edu – образовательные учреждения
- org – некоммерческие организации
- mil – военные организации
- gov – государственные организации
- biz – бизнес
- int – международные организации и проекты.
Рассмотрим работу DNS на примере поиска доменного имени http://www.volnet.ru .
Клиент сервера Dialup.mtu.com отправляет запрос на поиск вышеуказанного сервера. Сервер DNS , принимает запрос и ищет соответствие имени и ip-адреса у себя в кэше. Если не находит, то отправляет запрос в головной сервер домена верхнего уровня (в данном случае – серверу домена com ). И в этом случае сервер пытается сначала найти соответствие у себя в кэше. Если не найдено, то сервер пересылает запрос головному вверх по иерархии, пока не дойдет до домена первого уровня. Там возможна пересылка между разными доменами первого уровня, между com и ru и потом происходит спуск вниз по иерархии вплоть до сервера запрашиваемого домена. На всех уровнях результат запроса запоминается в кэше, чтобы в следующий раз не перезапрашивать его заново.
За настройку DNS отвечают в системе несколько файлов.
/etc/hosts – файл, в котором прописываюся статические имена хостов. Эти имена не передаются по сети и действуют только в пределах данного хоста.
[root@ns root]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 80.92.3.2 ns.edu.vologda.ru ns 80.92.3.3 meson-vol-c0.volnet.ru 192.168.2.4 email.edu.vologda.ru 192.168.2.4 server.schoolm.edu.vologda.ru 192.168.2.130 server-2003 192.168.2.31 webmedia
/etc/resolv.conf – файл конфигурации клиентов DNS . Именно в этом файле прописываются адреса серверов DNS , с которыми работают сетевые клиенты.
[root@ns root]# cat /etc/resolv.conf search volnet.ru edu.vologda.ru nameserver 80.92.3.2 nameserver 192.168.2.2 nameserver 80.92.0.10
/etc/named.conf – файл конфигурации сервера BIND . В нем описываются основные параметры сервера, такие как каталоги хранения файлов зон, каталоги журналирования, а также определяются сами зоны DNS и узлы, имеющие право на получение и изменение зон.
[root@ns root]# cat /etc/named.conf options { directory "/var/named"; allow-transfer{ 213.24.34.4; 213.24.35.193; 213.24.34.14; 213.247.150.121; 213.158.26.84; 192.168.2.4; }; }; logging{ channel a_main{ file "/var/log/named/named.log"; print-time yes; print-category yes; print-severity yes; }; category default{ a_main; default_debug; }; }; zone "." { type hint; file "named.ca"; }; zone "edu.vologda.ru"{ type master; file "edu.vologda.ru"; allow-transfer{ 213.24.34.4; 213.24.34.14; 80.92.0.10; 213.158.26.84; 213.247.150.119; 192.168.2.4; }; }; zone "volnet.ru"{ type master; file "volnet.ru"; allow-transfer{ 213.24.35.193; 213.158.26.84; 80.92.0.10; 192.168.2.4; }; allow-update{ 213.24.35.193; }; };
Файлы зон выглядят следующим образом:
@ IN SOA ns.edu.vologda.ru. hostmaster.edu.vologda.ru. ( 2002031128 ; serial 14400 ; refresh 900 ; retry 1209600 ; expire 86400 ; default_ttl ) @ IN MX 5 ns.edu.vologda.ru. @ IN NS ns.edu.vologda.ru. @ IN NS ns.icb.vologda.ru. mail IN CNAME ns.edu.vologda.ru. proxy IN CNAME ns.edu.vologda.ru. proxy2 IN A 80.92.3.134 meson IN CNAME ns.edu.vologda.ru. www IN CNAME ns.edu.vologda.ru. meson-vol-c0 IN A 80.92.3.131
From Wikipedia, the free encyclopedia
User Datagram Protocol
Communication protocol | |
Abbreviation | UDP |
---|---|
Developer(s) | David P. Reed |
Introduction | 1980 |
Influenced | QUIC, UDP-Lite |
OSI layer | Transport layer (4) |
RFC(s) | RFC 768 |
In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages (transported as datagrams in packets) to other hosts on an Internet Protocol (IP) network. Within an IP network, UDP does not require prior communication to set up communication channels or data paths.
UDP is a connectionless protocol, meaning that messages are sent without negotiating a connection and that UDP does not keep track of what it has sent.[1][2] UDP provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram. It has no handshaking dialogues and thus exposes the user’s program to any unreliability of the underlying network; there is no guarantee of delivery, ordering, or duplicate protection. If error-correction facilities are needed at the network interface level, an application may instead use Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP) which are designed for this purpose.
UDP is suitable for purposes where error checking and correction are either not necessary or are performed in the application; UDP avoids the overhead of such processing in the protocol stack. Time-sensitive applications often use UDP because dropping packets is preferable to waiting for packets delayed due to retransmission, which may not be an option in a real-time system.[3]
The protocol was designed by David P. Reed in 1980 and formally defined in RFC 768.
UDP is a simple message-oriented transport layer protocol that is documented in RFC 768. Although UDP provides integrity verification (via checksum) of the header and payload,[4] it provides no guarantees to the upper layer protocol for message delivery and the UDP layer retains no state of UDP messages once sent. For this reason, UDP sometimes is referred to as Unreliable Datagram Protocol.[5] If transmission reliability is desired, it must be implemented in the user’s application.
A number of UDP’s attributes make it especially suited for certain applications.
- It is transaction-oriented, suitable for simple query-response protocols such as the Domain Name System or the Network Time Protocol.
- It provides datagrams, suitable for modeling other protocols such as IP tunneling or remote procedure call and the Network File System.
- It is simple, suitable for bootstrapping or other purposes without a full protocol stack, such as the DHCP and Trivial File Transfer Protocol.
- It is stateless, suitable for very large numbers of clients, such as in streaming media applications like IPTV.
- The lack of retransmission delays makes it suitable for real-time applications such as Voice over IP, online games, and many protocols using Real Time Streaming Protocol.
- Because it supports multicast, it is suitable for broadcast information such as in many kinds of service discovery and shared information such as Precision Time Protocol and Routing Information Protocol.
Applications can use datagram sockets to establish host-to-host communications. An application binds a socket to its endpoint of data transmission, which is a combination of an IP address and a port. In this way, UDP provides application multiplexing. A port is a software structure that is identified by the port number, a 16-bit integer value, allowing for port numbers between 0 and 65535. Port 0 is reserved but is a permissible source port value if the sending process does not expect messages in response.
The Internet Assigned Numbers Authority (IANA) has divided port numbers into three ranges.[6] Port numbers 0 through 1023 are used for common, well-known services. On Unix-like operating systems, using one of these ports requires superuser operating permission. Port numbers 1024 through 49151 are the registered ports used for IANA-registered services. Ports 49152 through 65535 are dynamic ports that are not officially designated for any specific service and may be used for any purpose. These may also be used as ephemeral ports, which software running on the host may use to dynamically create communications endpoints as needed.[6]
UDP datagram structure
[edit]
A UDP datagram consists of a datagram header followed by a data section (the payload data for the application). The UDP datagram header consists of 4 fields, each of which is 2 bytes (16 bits):[3]
UDP header format[7]
Offset | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Source Port | Destination Port | ||||||||||||||||||||||||||||||
4 | 32 | Length | Checksum | ||||||||||||||||||||||||||||||
8 | 64 | Data | |||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
⋮ | ⋮ |
The use of the Checksum and Source Port fields is optional in IPv4 (light purple background in table). In IPv6 only the Source Port field is optional. If not used, these fields should be set to zero.[7]
- Source Port: 16 bits
- This field identifies the sender’s port, when used, and should be assumed to be the port to reply to if needed. If the source host is the client, the port number is likely to be an ephemeral port. If the source host is the server, the port number is likely to be a well-known port number from 0 to 1023.[6]
- Destination Port: 16 bits
- This field identifies the receiver’s port and is required. Similar to source port number, if the client is the destination host then the port number will likely be an ephemeral port number and if the destination host is the server then the port number will likely be a well-known port number.[6]
- Length: 16 bits
- This field specifies the length in bytes of the UDP datagram (the header fields and Data field) in octets. The minimum length is 8 bytes, the length of the header. The field size sets a theoretical limit of 65,535 bytes (8-byte header + 65,527 bytes of data) for a UDP datagram. However, the actual limit for the data length, which is imposed by the underlying IPv4 protocol, is 65,507 bytes (65,535 bytes − 8-byte UDP header − 20-byte IP header).[8]
- Using IPv6 jumbograms it is possible to have UDP datagrams of size greater than 65,535 bytes. The length field is set to zero if the length of the UDP header plus UDP data is greater than 65,535.[9]
- Checksum: 16 bits
- The checksum field may be used for error-checking of the header and data. This field is optional in IPv4, and mandatory in most cases in IPv6.[10]
- Data: Variable
- The payload of the UDP packet.
Checksum computation
[edit]
The method used to compute the checksum is defined in RFC 768, and efficient calculation is discussed in RFC 1071:
Checksum is the 16-bit ones’ complement of the ones’ complement sum of a pseudo header of information from the IP header, the UDP header, and the data, padded with zero octets at the end (if necessary) to make a multiple of two octets.[7]
In other words, all 16-bit words are summed using ones’ complement arithmetic. Add the 16-bit values up. On each addition, if a carry-out (17th bit) is produced, swing that 17th carry bit around and add it to the least significant bit of the running total.[11] Finally, the sum is then ones’ complemented to yield the value of the UDP checksum field.
If the checksum calculation results in the value zero (all 16 bits 0) it should be sent as the ones’ complement (all 1s) as a zero-value checksum indicates no checksum has been calculated.[7] In this case, any specific processing is not required at the receiver, because all 0s and all 1s are equal to zero in 1’s complement arithmetic.
The differences between IPv4 and IPv6 are in the pseudo header used to compute the checksum, and that the checksum is not optional in IPv6.[12] Under specific conditions, a UDP application using IPv6 is allowed to use a zero UDP zero-checksum mode with a tunnel protocol.[13]
When UDP runs over IPv4, the checksum is computed using a pseudo header that contains some of the same information from the real IPv4 header.[7]: 2 The pseudo header is not the real IPv4 header used to send an IP packet, it is used only for the checksum calculation.
UDP checksum computation is optional for IPv4. If a checksum is not used it should be set to the value zero.
UDP pseudo-header for checksum computation (IPv4)
Offset | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Source Address | |||||||||||||||||||||||||||||||
4 | 32 | Destination Address | |||||||||||||||||||||||||||||||
8 | 64 | Zeroes | Protocol | UDP Length | |||||||||||||||||||||||||||||
12 | 96 | Source Port | Destination Port | ||||||||||||||||||||||||||||||
16 | 128 | Length | Checksum | ||||||||||||||||||||||||||||||
20 | 160 | Data | |||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
⋮ | ⋮ |
The checksum is calculated over the following fields:
- Source Address: 32 bits
- The source address from the IPv4 header.
- Destination Address: 32 bits
- The destination address from the IPv4 header.
- Zeroes: 8 bits; Zeroes == 0
- All zeroes.
- Protocol: 8 bits
- The protocol value for UDP: 17 (or 0x11).
- UDP length: 16 bits
- The length of the UDP header and data (measured in octets).
As IPv6 has larger addresses and a different header layout, the method used to compute the checksum is changed accordingly:[10]: §8.1
Any transport or other upper-layer protocol that includes the addresses from the IP header in its checksum computation must be modified for use over IPv6, to include the 128-bit IPv6 addresses instead of 32-bit IPv4 addresses.
When computing the checksum, again a pseudo header is used that mimics the real IPv6 header:
UDP pseudo-header for checksum computation (IPv6)
Offset | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Source address | |||||||||||||||||||||||||||||||
4 | 32 | ||||||||||||||||||||||||||||||||
8 | 64 | ||||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
16 | 128 | Destination address | |||||||||||||||||||||||||||||||
20 | 160 | ||||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 | UDP length | |||||||||||||||||||||||||||||||
36 | 288 | Zeroes (0) | Next Header (17) | ||||||||||||||||||||||||||||||
40 | 320 | Source port | Destination port | ||||||||||||||||||||||||||||||
44 | 352 | Length | Checksum | ||||||||||||||||||||||||||||||
48 | 384 | Data | |||||||||||||||||||||||||||||||
52 | 416 | ||||||||||||||||||||||||||||||||
⋮ | ⋮ |
The checksum is computed over the following fields:
- Source address: 128 bits
- The address in the IPv6 header.
- Destination address: 128 bits
- The final destination; if the IPv6 packet does not contain a Routing header, TCP uses the destination address in the IPv6 header, otherwise, at the originating node, it uses the address in the last element of the Routing header, and, at the receiving node, it uses the destination address in the IPv6 header.
- UDP length: 32 bits
- The length of the UDP header and data (measured in octets).
- Zeroes: 24 bits; Zeroes == 0
- All zeroes.
- Next Header: 8 bits
- The transport layer protocol value for UDP: 17.
Reliability and congestion control
[edit]
Lacking reliability, UDP applications may encounter some packet loss, reordering, errors or duplication. If using UDP, the end-user applications must provide any necessary handshaking such as real-time confirmation that the message has been received. Applications, such as TFTP, may add rudimentary reliability mechanisms into the application layer as needed.[6] If an application requires a high degree of reliability, a protocol such as the Transmission Control Protocol may be used instead.
Most often, UDP applications do not employ reliability mechanisms and may even be hindered by them. Streaming media, real-time multiplayer games and voice over IP (VoIP) are examples of applications that often use UDP. In these particular applications, loss of packets is not usually a fatal problem. In VoIP, for example, latency and jitter are the primary concerns. The use of TCP would cause jitter if any packets were lost as TCP does not provide subsequent data to the application while it is requesting a re-send of the missing data.
Numerous key Internet applications use UDP, including: the Domain Name System (DNS), the Simple Network Management Protocol (SNMP), the Routing Information Protocol (RIP)[3] and the Dynamic Host Configuration Protocol (DHCP).
Voice and video traffic is generally transmitted using UDP. Real-time video and audio streaming protocols are designed to handle occasional lost packets, so only slight degradation in quality occurs, rather than large delays if lost packets were retransmitted. Because both TCP and UDP run over the same network, in the mid-2000s a few businesses found that an increase in UDP traffic from these real-time applications slightly hindered the performance of applications using TCP such as point of sale, accounting, and database systems (when TCP detects packet loss, it will throttle back its data rate usage).[14]
Some VPN systems such as OpenVPN may use UDP and perform error checking at the application level while implementing reliable connections. WireGuard uses UDP and performs error checking, but does not provide any reliability guarantees, leaving it for the encapsulated protocols to deal with.
QUIC is a transport protocol built on top of UDP. QUIC provides a reliable and secure connection. HTTP/3 uses QUIC as opposed to earlier versions of HTTPS which use a combination of TCP and TLS to ensure reliability and security respectively. This means that HTTP/3 uses a single handshake to set up a connection, rather than having two separate handshakes for TCP and TLS, meaning the overall time to establish a connection is reduced.[15]
Comparison of UDP and TCP
[edit]
Transmission Control Protocol is a connection-oriented protocol and requires handshaking to set up end-to-end communications. Once a connection is set up, user data may be sent bi-directionally over the connection.
- Reliable – TCP manages message acknowledgment, retransmission and timeouts. Multiple attempts to deliver the message are made. If data gets lost along the way, data will be re-sent. In TCP, there’s either no missing data, or, in case of multiple timeouts, the connection is dropped.
- Ordered – If two messages are sent over a connection in sequence, the first message will reach the receiving application first. When data segments arrive in the wrong order, TCP buffers the out-of-order data until all data can be properly re-ordered and delivered to the application.
- Heavyweight – TCP requires three packets to set up a socket connection before any user data can be sent. TCP handles reliability and congestion control.
- Streaming – Data is read as a byte stream, no distinguishing indications are transmitted to signal message (segment) boundaries.
User Datagram Protocol is a simpler message-based connectionless protocol. Connectionless protocols do not set up a dedicated end-to-end connection. Communication is achieved by transmitting information in one direction from source to destination without verifying the readiness or state of the receiver.
- Unreliable – When a UDP message is sent, it cannot be known if it will reach its destination; it could get lost along the way. There is no concept of acknowledgment, retransmission, or timeout.
- Not ordered – If two messages are sent to the same recipient, the order in which they arrive cannot be guaranteed.
- Lightweight – There is no ordering of messages, no tracking connections, etc. It is a very simple transport layer designed on top of IP.
- Datagrams – Packets are sent individually and are checked for integrity on arrival. Packets have definite boundaries which are honored upon receipt; a read operation at the receiver socket will yield an entire message as it was originally sent.
- No congestion control – UDP itself does not avoid congestion. Congestion control measures must be implemented at the application level or in the network.
- Broadcasts – being connectionless, UDP can broadcast — sent packets can be addressed to be receivable by all devices on the subnet.
- Multicast – a multicast mode of operation is supported whereby a single datagram packet can be automatically routed without duplication to a group of subscribers.
- RFC 768 – User Datagram Protocol
- RFC 2460 – Internet Protocol, Version 6 (IPv6) Specification
- RFC 2675 – IPv6 Jumbograms
- RFC 4113 – Management Information Base for the UDP
- RFC 8085 – UDP Usage Guidelines
- Comparison of transport layer protocols
- Datagram Transport Layer Security (DTLS)
- List of TCP and UDP port numbers
- Micro Transport Protocol (μTP)
- Reliable Data Protocol (RDP)
- Reliable User Datagram Protocol (RUDP)
- UDP-based Data Transfer Protocol
- UDP flood attack
- UDP Helper Address
- UDP hole punching
- UDP-Lite – a variant that delivers packets even if they are malformed
- ^ Castelli, Matthew J. (2003). Network Sales and Services Handbook. Cisco Press. ISBN 9781587050909.
- ^ Stanek, William (2015). Windows Command Line: The Personal Trainer for Windows 8.1 Windows Server 2012 and Windows Server 2012 R2. Stanek & Associates. ISBN 9781627164139.
- ^ a b c
Kurose, J. F.; Ross, K. W. (2010). Computer Networking: A Top-Down Approach (5th ed.). Boston, MA: Pearson Education. ISBN 978-0-13-136548-3. - ^ Clark, M.P. (2003). Data Networks IP and the Internet, 1st ed. West Sussex, England: John Wiley & Sons Ltd.
- ^ content@ipv6.com (15 August 2006). «UDP Protocol Overview». Ipv6.com. Retrieved 17 August 2011.
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ a b c d e Forouzan, B.A. (2000). TCP/IP: Protocol Suite, 1st ed. New Delhi, India: Tata McGraw-Hill Publishing Company Limited.
- ^ a b c d e J. Postel, ed. (28 August 1980). User Datagram Protocol. IETF. doi:10.17487/RFC0768. STD 6. RFC 768. Internet Standard 6.
- ^ Stevens, W. Richard (1994). TCP/IP Illustrated: The protocols. Vol. 1 (2 ed.). Addison-Wesley. ISBN 978-0-20-163346-7.
- ^ D. Borman; S. Deering; R. Hinden (August 1999). IPv6 Jumbograms. Network Working Group. doi:10.17487/RFC2675. RFC 2675. Proposed Standard. Obsoletes RFC 2147.
- ^ a b S. Deering; R. Hinden (July 2017). Internet Protocol, Version 6 (IPv6) Specification. Internet Engineering Task Force. doi:10.17487/RFC8200. STD 86. RFC 8200. Internet Standard 86. Obsoletes RFC 2460.
- ^ «Compute 16-bit Ones’ Complement Sum». mathforum.org. John. 20 March 2002. Archived from the original (email) on 17 November 2020. Retrieved 5 November 2014.
- ^ Internet Protocol, Version 6 (IPv6) Specification. p. 27-28. doi:10.17487/RFC8200. RFC 8200.
- ^ Internet Protocol, Version 6 (IPv6) Specification. p. 23. doi:10.17487/RFC8085. RFC 8085.
- ^ «The impact of UDP on Data Applications». Networkperformancedaily.com. Archived from the original on 31 July 2007. Retrieved 17 August 2011.
- ^ «QUIC, a multiplexed stream transport over UDP». chromium.org. Retrieved 17 February 2021.
- IANA Port Assignments
- The Trouble with UDP Scanning (PDF)
- Breakdown of UDP frame
- UDP on MSDN Magazine Sockets and WCF
В мире существует более 7 000 протоколов, и их число продолжает расти. Рассказываем о самых часто используемых правилах взаимодействия устройств в сети.
Понятие протокола сети
Сетевой протокол — это набор правил, определяющий принципы взаимодействия устройств в сети. Чтобы отправка и получение информации прошли успешно, все устройства-участники процесса должны принимать условия протокола и следовать им. В сети их поддержка встраивается или в аппаратную часть (в «железо»), или в программную часть (в код системы), или и туда, и туда.
Для взаимодействия протоколов между собой существует модель OSI, или Open Systems Interconnection. Дословно название переводится как «взаимодействие открытых систем».
OSI — эталонная модель взаимодействия устройств в сети
Модель OSI — это модель, позволяющая разным системам связи коммуницировать между собой по общепринятым стандартам. Ее можно сравнить с английским, то есть глобальным, универсальным языком в мире сетей.
Модель основана на принципе разделения коммуникационной системы на семь отдельных уровней. Подробнее о ней вы можете прочитать в статье «Простое пособие по сетевой модели OSI для начинающих».
Если в передачи информации случаются сбои, модель помогает быстрее и легче локализовать проблему на конкретном уровне и значительно ускорить процесс восстановления работоспособности системы.
Модель OSI является эталонным стандартом, но на данный момент она устарела, поскольку современные протоколы работают сразу на нескольких уровнях модели OSI. На смену модели OSI пришла модель TCP/IP, на основе которой работает большая часть устройств в современном мире.
TCP/IP — модель, на которой работает сеть Интернет
Модель TCP/IP помогает понять принцип работы и взаимодействия узлов в сети Интернет. Ее название включает в себя два основных протокола, на которых построен интернет. TCP/IP расшифровывается как Transmission Control Protocol/Internet Protocol, или протокол управления передачей (данных)/интернет-протокол.
Модель используется во всем современном интернете, новые сетевые протоколы разрабатываются с опорой на модель TCP/IP. Например, подключаясь к сайту Selectel, вы используете протоколы IP, TCP и HTTPS, которые работают в рамках упомянутой модели.
Подробнее о модели TCP/IP можно прочитать в блоге.
Далее мы рассмотрим основные протоколы межсетевого, транспортного уровней, а также уровня приложений. Именно с ними мы сталкиваемся чаще всего, анализируя какие-либо проблемы в сети или на сервере.
Протоколы транспортного уровня: краткое описание
TCP — протокол обмена сообщениями в сети Интернет
TCP помогает устройствам в сети обмениваться сообщениями. Он работает на четвертом, транспортном, уровне модели OSI.
Для передачи информации происходит дробление исходного файла на части, которые передаются получателю, а далее собираются обратно. Например, человек запрашивает веб-страницу, далее сервер обрабатывает запрос и высылает в ответ HTML-страницу при помощи протокола HTTP. Он, в свою очередь, запрашивает уровень TCP для установки требуемого соединения и отправки HTML-файла. TCP конвертирует данные в блоки, передавая их на уровень TCP пользователя, где происходит подтверждение передачи.
Свойства протокола TCP:
- Система нумерации сегментов (Segment Numbering System). TCP отслеживает передаваемые или принимаемые сегменты, присваивая номера каждому из них. Байтам данных, которые должны быть переданы, присваивается определенный номер байта, в то время как сегментам присваиваются порядковые номера.
- Управление потоком. Эта функция ограничивает скорость, с которой отправитель передает данные. Это делается для обеспечения надежности доставки. Получатель постоянно сообщает отправителю о том, какой объем данных может быть получен.
- Контроль ошибок. Данная функция реализуется для повышения надежности путем проверки байтов на целостность.
- Порт источника и порт назначения. Протокол TCP использует специальные порты для связи различных протоколов. Например протокол SSH использует 22й порт, HTTP — 80, HTTPS — 443, Gopher — 70. Все порты делятся на три диапазона — общеизвестные (0—1023), зарегистрированные (1024—49151) и динамические (49152—65535).
UDP — аналог TCP: описание отличий в поведении протокола в сети
В отличие от протокола ТСР User Datagram Protocol обеспечивает передачу данных без получения подтверждения от пользователя о результате действия. Благодаря этому достигается большая скорость работы и передачи данных в ущерб надежности и безопасности.
Особенности протокола диктуют специфику его применения. Так, он подходит для приложений, например, Skype, Discord и другие, которые работают в реальном времени и где задержка передачи данных может быть проблемой. Также его предпочтительно использовать в приложениях с большим количеством подключенных клиентов — например, в играх, голосовых или видеоконференциях, а также при потоковой передаче мультимедиа.
UDP работает путем сбора данных в UDP-пакете и добавления в пакет собственной информации заголовка. Заголовок UDP включает четыре поля, объем которых составляет 2 байта каждый: номер порта источника, номер порта назначения, длина заголовка и контрольная сумма блока.
Протокол UDP любят злоумышленники при организации DDOS — или DOS-атак. Из-за того, что данный протокол не требует подтверждения от сервера, открывается возможность просто «залить» сервер запросами. Стандартная атака подразумевает отправку большого количества дейтаграмм. Это заставляет сервер отвечать на каждый из них, расходуя вычислительные мощности.
SCTP — протокол передачи управления потоком
Еще один протокол, который относится к транспортному уровню. SCTP обеспечивает надежную последовательную передачу данных. Поддерживает многоадресное соединение, когда один или оба конечных узла могут состоять из более чем одного IP-адреса. Это обеспечивает прозрачное переключение между резервными сетевыми путями.
SCTP аналогичен протоколам UDP и TCP, которые обеспечивают функции транспортного уровня для некоторых интернет-приложений. Так как преимущество протокола SCTP — в быстром переключении между интерфейсами, на него переходят только компании, для которых критична недоступность приложений. SCTP работает поверх бесконтактной пакетной сети, такой как IP, и поддерживает передачу данных в случаях с одним или несколькими IP.
RTP — транспортный протокол реального времени
Real-time Transfer Protocol — это протокол, который используется при передаче потокового аудио и видео и применяется при передаче голоса преимущественно в IP-телефонии. RTP применяется в совокупности с протоколом управления RTCP. Когда RTP транслирует медиа, RTCP применяется при анализе статистик QoS (Quality of Service) и обеспечивает синхронизацию разных потоков. RTP отправляется и принимается с помощью четных номеров портов, а RTCP использует нечетные номера.
Также протокол считают главным стандартом, применяемым при передаче аудио и видео по IP-сети. Поскольку RTP может осуществлять ее нескольким конечным адресатам одновременно при помощи многоадресной IP-рассылки.
Протоколы межсетевого уровня: краткое описание
Интернет-протокол и IP-адреса
Internet Protocol (IP) — это наиболее простой протокол, объединивший отдельные компьютеры в глобальную сеть. Главной его задачей является маршрутизация дейтаграмм — определение маршрута следования пакетов по узлам сети. Каждое устройство — ваш ПК, принтер и т.д. — имеет IP-адрес, чтобы данные попадали к нужному адресату. Так, например, отправленный на печать файл не окажется вместо принтера в личном ПК вашего коллеги.
В качестве минусов протокола можно отметить низкую надежность. Он не определяет факт передачи пакета и не контролирует целостность данных. IP просто осуществляет пересылку.
Для пересылки пакетов необходимо определить, на какой порт отправить пакет. Для этого протокол имеет свою систему адресации. В качестве адресов выступает 32-битные (IPv4) или 128-битные (IPv6) адреса. Перед отправкой пакета в него добавляются header (заголовок) и payload (данные для доставки).
IPv4 является 32-разрядной системой, состоящей из четырех разделов (123.123.123.123). Он поддерживает до 4 294 967 296 адресов и является протоколом по умолчанию. Основным его преимуществом является простота. В недостатках — ограниченное адресное пространство, также называемое «исчерпанием адресов».
IPv6, напротив, — 128-битное адресное пространство, которое обеспечивает приблизительно 2^128 степени адресов. Формат записи состоит из восьми разделов, в каждый из которых записывается четыре 16-ричных цифры. Недостаток протокола — в сложности сетевого администрирования. При аренде сервера или виртуальной машины в Selectel выдается IPv4, однако можно запросить и IPv6-адреса, в облаке на базе VMware выдаются только IPv4-адреса.
Один из основных протоколов, который работает поверх IP, — это протокол TCP, из-за чего его часто обозначают как TCP/IP. Но это не единственный протокол, который является частью интернет-протокола.
ICMP — протокол управляющих сообщений в сети
Задача протокола — диагностика проблем при взаимодействии устройств. Он определяет, достигли ли данные места назначения или нет.
Основная цель ICMP — сообщать об ошибках. Если какие-либо данные не попали по назначению, ICMP генерирует ошибки для обмена с отправляющим устройством. Например, если объем передаваемых данных слишком велик для маршрутизатора, маршрутизатор отбросит пакет и отправит ICMP-сообщение исходному источнику данных.
Как и в случае UDP, протокол ICMP можно использовать для сетевых атак, таких как ICMP flood и ping of death, где главный прием — генерация большого количества ICMP-сообщений.
OSPF — протокол маршрутизации состояния канала сети
Open Shortest Path First используется для поиска наилучшего пути между исходным и конечным маршрутизатором. Работает на межсетевом уровне модели OSI.
После настройки OSPF будет анализировать соседние маршрутизаторы и собирать все доступные данные о состоянии канала для построения топологической карты всех доступных путей в своей сети. Затем он сохранит информацию в своей базе данных топологии, также известной как База данных состояния канала (LSDB).
На основе собранной информации он вычислит наилучший кратчайший путь к каждой доступной подсети/сети, используя алгоритм под названием Shortest Path First (SFP).
Протоколы прикладного уровня: краткое описание
FTP — протокол передачи данных в сети
FTP — это клиент-серверный протокол, который использует два канала для передачи данных: командный, управляющий процессом передачи, и транспортный, непосредственно передающий информацию. Для FTP-протокола устройство конечного пользователя называется локальным хостом, а второй компьютер — удаленным хостом, играющим роль сервера. Для работы протокола требуется его правильная настройка со стороны хоста и специальный клиент на локальном хосте.
Описание работы протокола в сети Интернет
Пользователю нужно войти на FTP-сервер. Здесь нужно учитывать, что некоторые серверы разрешают доступ к части или всем своим данным без авторизации. Это называется «анонимным FTP». При этом файлы с сервера можно будет только передавать на компьютер клиента.
Далее клиент начинает диалог с сервером — запрашивает разрешение на изменение файлов на сервере. Использую авторизованный FTP-клиент, можно скачивать файлы с сервера, отгружать их на него и выполнять другие манипуляции.
FTP-сессии работают в двух режимах — активном и пассивном:
- При активном режиме сервер после инициализации, путем вызова командного канала, открывает транспортный канал и начинает передачу данных.
- При пассивном режиме сервер при помощи командного канала отправляет клиенту данные, требующиеся для открытия канала передачи данных.
Из-за того, что клиент создает все подключения в пассивном режиме, этот протокол хорошо подходит для работы с брандмауэрами.
DNS — справочник сети Интернет
Браузеры взаимодействуют между собой через IP-адреса. Люди, пытаясь подключиться к сайту, используют его доменное имя — например, https://selectel.ru/. Domain Name System преобразует домены в IP-адреса, чтобы сделать возможной загрузку интернет-ресурса через браузер. Каждому устройству в сети назначается свой IP-адрес, который используется другими устройствами для подключения к нему, а DNS-сервер позволяет людям не запоминать их.
На данный момент существуют четыре основных DNS-сервера, которые участвуют в загрузке веб-страниц:
- DNS recursor — своеобразный справочник, отвечающий за прием запросов от компьютеров пользователей, например, приложений браузеров;
- Root nameserver, или корневой сервер, является первым в процессе конвертации имени хоста в IP-адрес и позволяет получить список DNS-серверов.
- TLD nameserver — следующий шаг при поиске IP; хранит информацию про все доменные имена с общим расширением (.ru, .com и т.д.);
- Authoritative nameserver дает окончательные ответы на запросы о DNS.
HTTP(S) — протокол передачи гипертекста
HTTP является основой интернета и используется для загрузки веб-страниц с использованием гипертекстовых ссылок. Относится к прикладным протоколам и работает поверх других уровней стека сетевых протоколов.
Обычно принцип передачи данных по протоколу HTTP включает в себя компьютер клиента (например, ваш ПК), отправляющий запрос на сервер, который затем возвращает ответ. Каждый HTTP-запрос включает в себя ряд закодированных данных, содержащих различную информацию, в том числе:
- версию HTTP,
- URL-адрес,
- метод HTTP-запроса — указание на ожидание запроса от сервера (например, PUT- и GET-запросы),
- заголовок — он передает основную информацию о запросе и содержит пары ключ-значение,
- тело запроса (опционально, это любая отправляющаяся информация).
После получения запроса сервер должен дать ответ. В его стандартную структуру входят: код состояния, заголовок и тело ответа.
Код состояния HTTP-запроса — это трехзначные коды, которые, как правило, указывают на успешность его выполнения. Они разбиваются на пять основных блоков:
- 1xx* Информация (Informational),
- 2хх Успешность выполнения (Success),
- 3хх Перенаправление (Redirection),
- 4xx Ошибка клиента (Client Error),
- 5xx Ошибка сервера (Server Error),
*ХХ обозначают цифры от 00 до 99.
Аналогично запросу, ответ имеет заголовок, который содержит различную информацию — например, язык отправляемых данных. В большинстве случаев там содержатся HTML-данные, которые веб-браузер клиента преобразует в страницу.
При разговоре про HTTP нельзя не упомянуть важный аспект — незащищенность протокола. При передаче данных все происходит открыто, в результате чего злоумышленник может перехватить данные. Для исключения этой проблемы был разработан протокол HTTPS. Подробное сравнение этих протоколов есть в нашем блоге.
SSH — основное средство подключения к серверам
SSH, или Secure Shell, — это защищенный протокол, который используется как основное средство подключения к серверам. С помощью него при подключении к серверу пользователь входит в уже существующую учетную запись, где выполняются все отправленные команды.
Данное соединение реализовано по схеме «клиент-сервер». Для его создания на удаленном устройстве должна быть запущена программа, называемая демоном. Демон выполняет подключение к определенному сетевому порту, проверяет подлинность запросов на подключение и создает соответствующую среду, если пользователь вводит правильные учетные данные. Также со стороны клиента должно быть установлено соответствующее ПО.
В панели управления Selectel пользователь может загрузить собственный SSH-ключ для повышения надежности и безопасности подключения или сгенерировать его на месте. Подробнее — в документации Selectel.
Устаревшие протоколы: Telnet, Gopher, FTP
На сегодняшний день существует более 7 000 тысяч различных протоколов. Сеть постоянно развивается, поэтому некоторые протоколы устаревают — например, Gopher, FTP, Telnet. Последний рассмотрим подробнее.
Telnet — это старый, но очень надежный протокол связи. Первоначально он был разработан как символьно-ориентированный протокол эмуляции терминала, используемый в среде UNIX. Сегодня Telnet широко используется для системного администрирования маршрутизаторов, коммутаторов и удаленных серверов, а также для базовой текстовой связи, в которой графика не требуется.
Заключение
В данной статье мы рассмотрели популярные протоколы взаимодействия устройств и программ в сети. В реальной жизни на одном только вашем ПК используются сотни протоколов, поскольку каждый выполняет определенные задачи. Узнать о задачах и принципах работы протокола можно в специальном документе, который называется RFC-стандартом.
Больше материалов о протоколах
Протоколы уровня приложений: примеры и использование
Пройдите тест, узнайте какой профессии подходите
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы
Введение в протоколы уровня приложений
Протоколы уровня приложений играют ключевую роль в сетевом взаимодействии, обеспечивая стандарты для обмена данными между различными приложениями и сервисами. Эти протоколы определяют, как данные форматируются, передаются и обрабатываются на уровне приложений, что позволяет пользователям и устройствам эффективно взаимодействовать друг с другом. В этой статье мы рассмотрим основные протоколы уровня приложений, их принципы работы и примеры использования.
Протоколы уровня приложений являются неотъемлемой частью современной сети, обеспечивая взаимодействие между различными системами и устройствами. Они позволяют приложениям обмениваться данными и выполнять задачи, такие как передача файлов, отправка электронной почты и доступ к веб-страницам. Понимание этих протоколов важно для всех, кто работает в сфере информационных технологий, так как они являются основой для создания и поддержки сетевых сервисов.

HTTP: Основы и примеры использования
Основы HTTP
HTTP (HyperText Transfer Protocol) — это основной протокол, используемый для передачи данных в интернете. Он позволяет браузерам запрашивать ресурсы (например, веб-страницы) с серверов и отображать их пользователям. HTTP работает по принципу «запрос-ответ», где клиент (обычно браузер) отправляет запрос серверу, а сервер отвечает соответствующим ресурсом.
HTTP был разработан в начале 1990-х годов и с тех пор стал основным протоколом для передачи данных в интернете. Он поддерживает различные методы запросов, такие как GET, POST, PUT и DELETE, которые позволяют выполнять различные операции с ресурсами. Например, метод GET используется для запроса данных, а метод POST — для отправки данных на сервер.
Примеры использования HTTP
- Запрос веб-страницы: Когда вы вводите URL в адресной строке браузера, он отправляет HTTP-запрос на сервер, который возвращает HTML-код страницы. Этот процесс включает несколько шагов, таких как разрешение доменного имени через DNS, установление соединения с сервером и передача данных.
- Отправка данных формы: При заполнении и отправке формы на веб-сайте данные передаются на сервер с помощью HTTP-запроса. Например, при регистрации на сайте ваши данные (имя, адрес электронной почты и т.д.) отправляются на сервер для обработки и сохранения.
- API-запросы: Многие веб-приложения используют HTTP для взаимодействия с API, отправляя запросы и получая ответы в формате JSON или XML. Это позволяет приложениям обмениваться данными и выполнять различные функции, такие как получение информации о пользователях или обновление данных в базе данных.
HTTP также поддерживает шифрование данных с помощью HTTPS (HTTP Secure), что обеспечивает безопасность передачи данных между клиентом и сервером. Это особенно важно для веб-сайтов, которые обрабатывают конфиденциальную информацию, такую как пароли и данные кредитных карт.
FTP: Принципы работы и практические примеры
Принципы работы FTP
FTP (File Transfer Protocol) — это протокол, используемый для передачи файлов между клиентом и сервером. Он позволяет пользователям загружать и скачивать файлы с удаленных серверов. FTP работает по модели клиент-сервер и использует два канала связи: один для команд и другой для передачи данных.
FTP был разработан в 1970-х годах и с тех пор остается одним из основных протоколов для передачи файлов. Он поддерживает различные команды, такие как LIST (для получения списка файлов на сервере), RETR (для загрузки файла) и STOR (для отправки файла на сервер). FTP также поддерживает аутентификацию пользователей с помощью имени пользователя и пароля.
Практические примеры использования FTP
- Загрузка веб-сайта на хостинг: Веб-разработчики часто используют FTP для загрузки файлов веб-сайта на сервер хостинга. Это позволяет им обновлять содержимое сайта и управлять файлами на сервере.
- Обмен большими файлами: Компании могут использовать FTP для обмена большими файлами, такими как базы данных или архивы, между различными офисами. Это особенно полезно для передачи данных, которые не могут быть отправлены по электронной почте из-за ограничений на размер вложений.
- Резервное копирование данных: FTP может быть использован для создания резервных копий данных на удаленных серверах. Это позволяет защитить данные от потери в случае сбоя оборудования или других проблем.
FTP также поддерживает различные режимы передачи данных, такие как активный и пассивный режим. В активном режиме клиент устанавливает соединение с сервером для передачи данных, а в пассивном режиме сервер устанавливает соединение с клиентом. Это позволяет обходить ограничения межсетевых экранов и маршрутизаторов.
SMTP и IMAP: Протоколы для электронной почты
Основы SMTP
SMTP (Simple Mail Transfer Protocol) — это протокол, используемый для отправки электронной почты. Он определяет, как сообщения передаются от клиента к серверу и между серверами. SMTP работает по модели «клиент-сервер», где клиент отправляет сообщение на сервер, который затем передает его получателю.
SMTP был разработан в 1980-х годах и с тех пор стал основным протоколом для отправки электронной почты. Он поддерживает различные команды, такие как HELO (для идентификации клиента), MAIL FROM (для указания отправителя) и RCPT TO (для указания получателя). SMTP также поддерживает аутентификацию пользователей и шифрование данных с помощью TLS (Transport Layer Security).
Основы IMAP
IMAP (Internet Message Access Protocol) — это протокол, используемый для доступа к электронной почте на сервере. В отличие от POP3, который загружает сообщения на локальное устройство, IMAP позволяет пользователям работать с почтой непосредственно на сервере, обеспечивая синхронизацию между различными устройствами.
IMAP был разработан в 1980-х годах и с тех пор стал основным протоколом для доступа к электронной почте. Он поддерживает различные команды, такие как SELECT (для выбора почтового ящика), FETCH (для получения сообщений) и STORE (для изменения флагов сообщений). IMAP также поддерживает аутентификацию пользователей и шифрование данных с помощью TLS.
Примеры использования SMTP и IMAP
- Отправка электронной почты: Когда вы отправляете письмо через почтовый клиент (например, Outlook или Gmail), используется SMTP для передачи сообщения на почтовый сервер. Сервер затем передает сообщение получателю с помощью SMTP или другого протокола.
- Чтение электронной почты: При доступе к почтовому ящику через IMAP вы можете просматривать и управлять сообщениями на сервере, что удобно для использования на нескольких устройствах. Например, вы можете читать и удалять сообщения на компьютере, а затем видеть те же изменения на смартфоне.
- Организация почтовых ящиков: IMAP позволяет создавать папки и метки для организации сообщений, что облегчает управление почтой. Например, вы можете создавать папки для различных проектов или клиентов и перемещать сообщения между ними.
SMTP и IMAP являются основными протоколами для работы с электронной почтой, обеспечивая отправку, получение и управление сообщениями. Они поддерживают различные функции, такие как аутентификация пользователей, шифрование данных и синхронизация между устройствами, что делает их важными инструментами для всех, кто работает с электронной почтой.
Примеры других протоколов уровня приложений (DNS, DHCP, SNMP)
DNS: Система доменных имен
DNS (Domain Name System) — это протокол, который переводит доменные имена (например, www.example.com) в IP-адреса, необходимые для маршрутизации трафика в интернете. DNS работает по принципу распределенной базы данных, где запросы на перевод имен обрабатываются различными серверами.
DNS был разработан в 1980-х годах и с тех пор стал основным протоколом для разрешения доменных имен. Он поддерживает различные типы записей, такие как A (для указания IP-адреса), MX (для указания почтовых серверов) и CNAME (для указания канонических имен). DNS также поддерживает кэширование запросов, что позволяет уменьшить нагрузку на серверы и ускорить разрешение имен.
DHCP: Протокол динамической конфигурации хоста
DHCP (Dynamic Host Configuration Protocol) — это протокол, используемый для автоматической конфигурации сетевых параметров устройств. Он позволяет устройствам получать IP-адреса и другие параметры сети (например, адреса DNS-серверов) без необходимости ручной настройки.
DHCP был разработан в 1990-х годах и с тех пор стал основным протоколом для автоматической конфигурации сетевых устройств. Он поддерживает различные сообщения, такие как DHCPDISCOVER (для обнаружения серверов), DHCPOFFER (для предложения параметров) и DHCPREQUEST (для запроса параметров). DHCP также поддерживает аренду IP-адресов, что позволяет временно назначать адреса устройствам и освобождать их по истечении срока аренды.
SNMP: Протокол управления сетью
SNMP (Simple Network Management Protocol) — это протокол, используемый для управления и мониторинга сетевых устройств. Он позволяет администраторам собирать данные о состоянии устройств, настраивать параметры и получать уведомления о проблемах.
SNMP был разработан в 1980-х годах и с тех пор стал основным протоколом для управления сетевыми устройствами. Он поддерживает различные команды, такие как GET (для получения данных), SET (для изменения параметров) и TRAP (для отправки уведомлений). SNMP также поддерживает аутентификацию пользователей и шифрование данных с помощью различных версий протокола.
Примеры использования DNS, DHCP и SNMP
- DNS: Когда вы вводите URL в браузере, DNS переводит доменное имя в IP-адрес, чтобы браузер мог подключиться к нужному серверу. Этот процесс включает несколько шагов, таких как отправка запроса на локальный DNS-сервер, который затем передает запрос на корневой сервер и другие серверы, пока не будет найден нужный IP-адрес.
- DHCP: При подключении нового устройства к сети (например, ноутбука к Wi-Fi), DHCP автоматически назначает ему IP-адрес и другие параметры. Это позволяет устройству сразу же начать работу в сети без необходимости ручной настройки.
- SNMP: Администраторы сети используют SNMP для мониторинга состояния серверов, маршрутизаторов и других устройств, а также для управления их настройками. Например, они могут получать данные о загрузке процессора, использовании памяти и состоянии интерфейсов, а также изменять параметры конфигурации и получать уведомления о проблемах.
Протоколы уровня приложений являются основой для множества сетевых сервисов и приложений. Понимание их принципов работы и примеров использования поможет вам лучше ориентироваться в мире сетевых технологий и эффективно использовать их в своей работе. Эти протоколы обеспечивают взаимодействие между различными системами и устройствами, что делает их важными инструментами для всех, кто работает в сфере информационных технологий.
Читайте также
Разбирая устройство сети и сетевые термины, невозможно обойти стороной ключевую концепцию — эталонную модель OSI. Она описывает, как передаются данные между устройствами в локальных и глобальных сетях. Углубляться в модель не будем, лишь напомним читателю, что она включает 7 уровней, на каждом из которых действует свой протокол. Эти протоколы обеспечивают преобразование условных электрических сигналов в конечный результат — условное изображение на экране устройства.
Вернемся к транспортным протоколам — UDP, которому посвящен этот материал, и TCP, о котором поговорим в следующих. Оба работают на четвертом уровне (L4) модели OSI, но решают похожие задачи разными способами.
UDP передает данные в виде отдельных датаграмм, не устанавливая соединение и не используя «трехстороннее рукопожатие», как TCP. Благодаря этому он быстрее и проще: заголовок у него короче, а контроль доставки отсутствует.
TCP, напротив, требует подтверждения установки соединения перед передачей данных. Если говорить упрощенно, TCP — это про надежность и порядок, а UDP — про скорость и минимальные задержки. О том, как это влияет на пользовательский опыт и в каких сферах применяется, поговорим далее.
Датаграммы — самостоятельные пакеты информации, передаваемые протоколом через сеть связи без предварительного установления соединения.
IP-датаграмма — это основная единица передачи данных в сети. UDP использует их для доставки своих пакетов. Каждая IP-датаграмма содержит: заголовок с адресами отправителя и получателя, управляющую информацию и полезную нагрузку, в которой может быть UDP-пакет.
UDP использует IP для передачи данных от одного устройства к другому, что позволяет сокращать задержки между отправкой и получением пакетов. IP-пакеты содержат информацию о порте назначения, источнике и длине самого пакета. Когда IP-пакеты достигают места назначения, UDP не отправляет сигнал, чтобы показать, что пакет прибыл на место назначения, а останавливает их отправку.
Важно также отметить, что в сетях операторов связи максимальный размер пакета (MTU) составляет 1500 байт. Все, что превышает этот размер, будет фрагментироваться (если такая возможность предусмотрена в протоколе). Поэтому при передаче данных по UDP пакеты формируются таким образом, чтобы их итоговый размер, включая служебные заголовки, не превышал 1500 байт.
Если в поисковой строке браузера вбить запрос о размере UDP-пакета, то ответ будет следующий — 64 КБ или 65 535 байт. Максимальный размер UDP-датаграммы действительно составляет 65 535 байт (8 байт заголовка и 65 527 байт данных). Однако при отправке через сетевую карту пакет будет фрагментирован, так как максимальный размер блока данных в одном пакете (MTU) обычно составляет 1500 байт.
Из чего состоит UDP-протокол
Заголовок UDP имеет фиксированную длину в 64 бита (8 байт) и состоит из следующих полей:
Порт отправителя — указывает номер порта приложения отправителя.
- Порт получателя — определяет номер порта получателя, на который должно быть доставлено сообщение.
- Длина — обозначает общую длину датаграммы UDP, включая заголовок и данные. Минимальное значение этого поля — 8 байт, что соответствует длине только заголовка без данных.
- Контрольная сумма — используется для проверки целостности данных.
- Полезная нагрузка — содержит данные, передаваемые с использованием протокола UDP.
Как работает UDP
DNS-сервер — «телефонная книга» интернета, которая помогает находить нужные сайты пользователям. Когда вы вводите домен, например, ddos-guard.ru, DNS сверяется со своей информацией, которая представлена в виде уникальных номеров — IP-адресов. Они выглядят как набор цифр с точками — 123.123.123.123. Таким образом каждое доменное имя соответствует своему уникальному набору цифр.
1. Запрос DNS через UDP
Вы хотите перейти на сайт, например, ddos-guard.ru, и ваш компьютер должен узнать его IP-адрес. Для этого он отправляет DNS-запрос.
2. DNS-запрос
Ваш компьютер создает DNS-запрос с использованием UDP. Запрос указывает доменное имя (например, ddos-guard.ru) и запрашивает его разрешение в IP-адрес.
3. Передача через интернет
Запрос отправляется по сети через маршрутизаторы, проходя через различные хосты, такие как локальные DNS-серверы. Если ваш компьютер не может сразу найти нужный IP, то пакет UDP с запросом направляется к DNS-серверу, DNS-сервер получает запрос, извлекает имя домена, ищет его в базе данных и формирует ответ с соответствующим IP-адресом.
4. Ответ от DNS-сервера
Ответный пакет также будет использовать UDP, структура останется аналогичной.
В ответном пакете указано имя домена и его соответствующий IP-адрес (например, 185.178.210.88 для ddos-guard.ru).
5. Получатель (ваше устройство)
Вы получаете ответ от DNS-сервера, который извлекает IP-адрес из полезной нагрузки и может использовать его для установления соединения с веб-сервером. Для обычного пользователя весь этот процесс занимает несколько секунд и выглядит как загрузка нужного сайта.
Что такое UDP-трафик
UDP-трафик — это поток данных, передаваемых по UDP-протоколу. Такой трафик характерен для приложений, где важна скорость передачи, а не гарантированная доставка. Например:
- Стриминговые сервисы
- Онлайн-игры
- Видеозвонки
- DNS-запросы
Некоторые приложения, такие как веб-браузеры или протоколы маршрутизации (например, BGP), полагаются на TCP как на гарантированный протокол передачи данных. На уровне L7 модели OSI они не контролируют, была ли информация доставлена, но полностью доверяют механизму надежной передачи TCP.
Если пакет не был доставлен, протокол TCP автоматически выполняет его повторную отправку. Однако если повторные попытки также не увенчались успехом, сессия TCP разрывается.
В отличие от этого, в UDP, например в при передаче голосовой информации, пакет отправляется, и его успешная доставка – это уже забота получателя. В результате, если часть пакетов теряется, связь может «квакать», но не зависать на 10 секунд в ожидании повторной отправки данных. Это критично для сервисов реального времени, где важнее поддерживать поток информации, чем гарантировать ее 100% доставку.
Хороший пример – банковская транзакция: при переводе денег между банками необходимо удостовериться, что удаленная сторона получила данные и подтвердила операцию. Без этого деньги не спишутся – это TCP.
UDP же можно сравнить с передачей денег за проезд водителю через пассажиров в автобусе: отправил – и надеешься, что они дойдут, но гарантии нет.
Для чего нужен UDP
Как правило, UDP-протокол применяется в ситуациях, где особенно важна скорость передачи, а не надежная доставка данных.
Гарантированная доставка важна, когда:
- Потеря информации может привести к сбоям, ошибкам или поломке системы.
- Приложение зависит от того, чтобы вся информация была доставлена в правильном порядке, без потерь.
- Задержка в обработке пакетов неприемлема — каждый пакет должен быть доставлен, и потеря одного может повлиять на всю работу.
Отсутствие гарантии доставки важно, когда:
- Важна скорость и минимизация задержек: приложения, которые обрабатывают данные в реальном времени, не могут позволить себе ждать подтверждения доставки каждого пакета.
- Потеря некоторых пакетов не влияет существенно на конечный результат, и качество воспринимаемой информации не нарушается.
- Приложение или сервис могут адаптироваться к потерянным пакетам (например, восстановление звука или видео с потерей качества, но без остановки передачи).
Заключение
UDP — это быстрый транспортный протокол, который используется в приложениях, критичных к задержкам. Он не обеспечивает контроль доставки, но за счет простоты и скорости остается незаменимым в мультимедийных сервисах, онлайн-играх и сетевых сервисах.
UDP не гарантирует:
- Доставку пакетов до получателя.
- Сохранение порядка пакетов.
- Контроль потерь.
Но зато он обеспечивает:
- Минимальные задержки.
- Простоту и скорость реализации.