dspam

Установка

# /usr/ports/mail/dspam
# make install clean

 

/usr/local/etc/dspam.conf

Home /var/db/dspam
StorageDriver /usr/local/lib/dspam/libmysql_drv.so
TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
OnFail error
Trust root
Trust dspam
#Trust apache
Trust mail
Trust mailnull
#Trust smmsp
#Trust daemon
TrainingMode teft
TestConditionalTraining on

#включить в заголовок X-DSPAM-Improbability запись о вероятности письма как спама
ImprobabilityDrive on

Feature noise
#Feature whitelist

Algorithm graham burton
Tokenizer chain
PValue bcr
WebStats on

Preference "signatureLocation=headers"
#Preference "showFactors=on"
Preference "spamAction=tag"
Preference "spamSubject=[SPAM]"

Preference "tagSpam=off" # { on | off }
Preference "tagNonspam=off" # { on | off }
Preference "showFactors=off" # { on | off } -> default:off
Preference "optIn=off" # { on | off }
Preference "optOut=off" # { on | off }
#Preference "whitelistThreshold=10" # { Integer } -> default:10
#Preference "makeCorpus=off" # { on | off } -> default:off
#Preference "storeFragments=off" # { on | off } -> default:off
#Preference "localStore=" # { on | off } -> default:username
#Preference "processorBias=on" # { on | off } -> default:on
#Preference "fallbackDomain=off" # { on | off } -> default:off
#Preference "trainPristine=off" # { on | off } -> default:off
#Preference "optOutClamAV=off" # { on | off } -> default:off
#Preference "ignoreRBLLookups=off" # { on | off } -> default:off
#Preference "RBLInoculate=off" # { on | off } -> default:off
#Preference "notifications=off" # { on | off } -> default:off


#какие Preference можно изменять пользователя
AllowOverride enableBNR
#AllowOverride enableWhitelist
AllowOverride fallbackDomain
AllowOverride ignoreGroups
AllowOverride ignoreRBLLookups
AllowOverride localStore
AllowOverride makeCorpus
AllowOverride optIn
AllowOverride optOut
AllowOverride optOutClamAV
AllowOverride processorBias
AllowOverride RBLInoculate
AllowOverride showFactors
AllowOverride signatureLocation
AllowOverride spamAction
AllowOverride spamSubject
AllowOverride statisticalSedation
AllowOverride storeFragments
AllowOverride tagNonspam
AllowOverride tagSpam
AllowOverride trainPristine
AllowOverride trainingMode
AllowOverride whitelistThreshold
AllowOverride dailyQuarantineSummary
AllowOverride notifications

#MySQLServer localhost
MySQLServer /tmp/mysql.sock
#MySQLPort 3306
MySQLUser dspam
MySQLPass SECRET
MySQLDb dspam
MySQLConnectionCache 100

HashRecMax 98317
HashAutoExtend on
HashMaxExtents 0
HashExtentSize 49157
HashMaxSeek 100
HashConnectionCache 100


#не обучаться на следующих заголовках
IgnoreHeader X-Spam-Status
IgnoreHeader X-Spam-Scanned
IgnoreHeader X-Virus-Scanner-Result
IgnoreHeader Date
IgnoreHeader Envelope-to
IgnoreHeader Delivery-date
IgnoreHeader Received
IgnoreHeader User-Agent
IgnoreHeader Content-Type
IgnoreHeader Content-Transfer-Encoding
IgnoreHeader To

Notifications off

PurgeSignatures 14 # Stale signatures
PurgeNeutral 90 # Tokens with neutralish probabilities
PurgeUnused 90 # Unused tokens
PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes)
PurgeHits1S 15 # Tokens with only 1 spam hit
PurgeHits1I 15 # Tokens with only 1 innocent hit

LocalMX 127.0.0.1

#отключить/включить пользовательские и системные логи
SystemLog on
UserLog on
Debug *
#все пользователи подвергаются фильтрации, кроме указанных в /var/spool/dspam/opt-out/user.nodspam
Opt out

MaxMessageSize 4194304
ProcessorURLContext on
ProcessorBias on
StripRcptDomain off
GroupConfig /var/db/dspam/group

 

 

image_pdfimage_print

VLAN

Создаем vlan

Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface g0/1
Switch(config-if)#switchport access vlan 122
% Access VLAN does not exist. Creating vlan 122
Switch(config-if)#
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface vlan 122
Switch(config-if)#
%LINK-5-CHANGED: Interface Vlan122, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan122, changed state to up

Назначаем IP

Switch(config-if)#no sh
Switch(config-if)#no shutdown 
Switch(config-if)#ip address 192.168.0.2 255.255.255.0
Switch(config-if)#ip default-gateway 192.168.0.1
Switch#

Настройка VLAN 5 как native:

sw1(config-if)# switchport trunk native vlan 5

Убрать native:

sw1(config-if)# switchport nonegotiate

VLAN (Virtual Local Area Network) — группа устройств, имеющих возможность взаимодействовать между собой напрямую на канальном уровне, хотя физически при этом они могут быть подключены к разным сетевым коммутаторам. И наоборот, устройства, находящиеся в разных VLAN’ах, невидимы друг для друга на канальном уровне, даже если они подключены к одному коммутатору, и связь между этими устройствами возможна только на сетевом и более высоких уровнях.

В современных сетях VLAN — главный механизм для создания логической топологии сети, не зависящей от её физической топологии. VLAN’ы используются для сокращения широковещательного трафика в сети. Имеют большое значение с точки зрения безопасности, в частности как средство борьбы с ARP-spoofing‘ом.

Зачем нужен VLAN?

Гибкое разделение устройств на группы
Как правило, одному VLAN соответствует одна подсеть. Устройства, находящиеся в разных VLAN, будут находиться в разных подсетях. Но в то же время VLAN не привязан к местоположению устройств и поэтому устройства, находящиеся на расстоянии друг от друга, все равно могут быть в одном VLAN независимо от местоположения
Уменьшение количества широковещательного трафика в сети
Каждый VLAN — это отдельный широковещательный домен. Например, коммутатор — это устройство 2 уровня модели OSI. Все порты на коммутаторе с лишь одним VLAN находятся в одном широковещательном домене. Создание дополнительных VLAN на коммутаторе означает разбиение коммутатора на несколько широковещательных доменов. Если один и тот же VLAN настроен на разных коммутаторах, то порты разных коммутаторов будут образовывать один широковещательный домен.
Увеличение безопасности и управляемости сети
Когда сеть разбита на VLAN, упрощается задача применения политик и правил безопасности. С VLAN политики можно применять к целым подсетям, а не к отдельному устройству. Кроме того, переход из одного VLAN в другой предполагает прохождение через устройство 3 уровня, на котором, как правило, применяются политики, разрешающие или запрещающие доступ из VLAN в VLAN.

Тегирование трафика VLAN

Компьютер при отправке трафика в сеть даже не догадывается,в каком VLAN’е он размещён. Об этом думает коммутатор. Коммутатор знает, что компьютер, который подключен к определённому порту,находится в соответствующем VLAN’e. Трафик, приходящий на порт определённого VLAN’а, ничем особенным не отличается от трафика другого VLAN’а. Другими словами, никакой информации о принадлежности трафика определённому VLAN’у в нём нет.

Однако, если через порт может прийти трафик разных VLAN’ов, коммутатор должен его как-то различать. Для этого каждый кадр (frame) трафика должен быть помечен каким-то особым образом. Пометка должна говорить о том, какому VLAN’у трафик принадлежит.

Наиболее распространённый сейчас способ ставить такую пометку описан в открытом стандарте IEEE 802.1Q. Существуют проприетарные протоколы, решающие похожие задачи, например, протокол ISL от Cisco Systems, но их популярность значительно ниже (и снижается).

Коммутатор и VLAN’ы

VLAN’ы могут быть настроены на коммутаторах, маршрутизаторах, других сетевых устройствах и на хостах. Однако, для объяснения VLAN лучше всего подойдет коммутатор.

Коммутатор — устройство 2го уровня и изначально все порты коммутатора находятся, как правило, в VLAN 1 и, следовательно, в одном широковещательном сегменте.

Это значит, что если одно из устройств, которое подключено к порту коммутатора, отправит широковещательный фрейм, то коммутатор перенаправит этот фрейм на все остальные порты, к которым подключены устройства, и они получат этот фрейм.

Native VLAN

В стандарте 802.1Q существует понятие native VLAN. Трафик этого VLAN передается нетегированным. По умолчанию это VLAN 1. Однако можно изменить это и указать другой VLAN как native.

 

Настройка VLAN 5 как native:

sw1(config-if)# switchport trunk native vlan 5

Теперь весь трафик принадлежащий VLAN’у 5 будет передаваться через транковый интерфейс нетегированным, а весь пришедший на транковый интерфейс нетегированный трафик будет промаркирован как принадлежащий VLAN’у 5 (по умолчанию VLAN 1).

image_pdfimage_print

OpenSSL – проверка POP3, IMAP, SMTP, WEB сервера с TLS/SSL/SASL

Использование OpenSSL для тестирования POP3, IMAP, SMTP, WEB сервера с TLS/SSL/SASL

POP3

Для тестирования работы TLS/SSL на POP3 сервере можно использовать входящий в
состав OpenSSL клиент s_client (для тестирования SSL-клиентов по аналогии можно
использовать s_server):

openssl s_client -connect имя_хоста:995

после чего можно сэмулировать типичную POP3-сессию:

 +OK Dovecot ready.
 user логин
 +OK
 pass пароль
 +OK Logged in.

выводим список сообщений на сервере и их размер:

 list
 +OK 2 messages:
 1 1759
 2 12422

читаем первое сообщение:

 retr 1
 +OK 1759 octets
 заголовки и текст

IMAP

Тестирование IMAP проводится в соответствии с теми же принципами:

 openssl s_client -connect imap_хост:993
 CONNECTED(00000003)
 ....
 * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
 login логин пароль
 a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR ... CONTEXT=SEARCH LIST-STATUS QUOTA] Logged in

выводим список папок:

 a002 list "" "*"
 * LIST (\HasChildren) "." "INBOX"
 * LIST (\HasNoChildren) "." "INBOX.INBOX_Trash"
 * LIST (\HasNoChildren) "." "INBOX.Trash"
 * LIST (\HasNoChildren) "." "INBOX.read"
 * LIST (\HasNoChildren) "." "INBOX.Queue"
 * LIST (\HasNoChildren) "." "INBOX.INBOX_Drafts"

посмотрим содержимое папки Inbox:

 a003 examine inbox
 * FLAGS (\Answered \Flagged \Deleted \Seen \Draft Junk NonJunk)
 * OK [PERMANENTFLAGS ()] Read-only mailbox.
 * 10 EXISTS
 * 0 RECENT
 * OK [UNSEEN 1] First unseen.
 * OK [UIDVALIDITY 1291459647] UIDs valid
 * OK [UIDNEXT 8026] Predicted next UID
 * OK [HIGHESTMODSEQ 2710] Highest
 a003 OK [READ-ONLY] Select completed.

В папке 10 сообщений, выведем содержимое текста четвертого сообщения, без заголовков:

 a004 4 rfc822.text
 * 4 FETCH (RFC822.TEXT {857}
 текст
 a005 OK Fetch completed.

выходим

 a005 logout
 * BYE Logging out
 a005 OK Logout completed.

Тестируем сайт по SHTTP:

openssl s_client -connect www.test.com:443
GET / HTTP/1.1
Host: test.com

SASL

Проверяем SASL-аутентификацию при отправке почты:

openssl s_client -connect smtp_хост:25 -starttls smtp

 220 mail.test.com ESMTP Postfix
 EHLO test.test.com
 250-mail.test.com
 250-PIPELINING
 250-SIZE 10240000
 250-ETRN
 250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
 250 8BITMIME
 AUTH PLAIN пароль_в_base64_нотации
 235 Authentication successful

BASE64

Перекодировать файл с паролем в base64-представление можно командой:

openssl enc -base64 -in file.txt -out mfile.b64

декодировать:

openssl enc -d -base64 -in file.b64 -out file.txt

Другие полезные команды:

Шифруем файл симметричным шифром blowfish (если необходимо сохранение в
base64-представлении добавляем опцию “-a”):

 openssl enc -e -salt -bf -in file.txt -out file.blowfish
 enter bf-cbc encryption password: пароль

расшифровываем:

 openssl enc -d -bf -in file.blowfish -out file.txt
 enter bf-cbc decryption password: пароль

Рассчитываем SHA1-хэш для файла:

 openssl dgst -sha1 -c file.txt
 SHA1(test.txt)= 15:85:f1:af:a7:ca:1c:1c:5a:8b:c3:a7:1e:7f:4b:bd:3c:d4:22:ca

Для перехвата и расшифровки SSL/TLS трафика в отладочных целях можно использовать утилиту ssldump:

наблюдение за активностью внутри SSL-сессии:

ssldump -a -A -H -i eth0

со служебными данными для полной отладки SSL-сессии:

ssldump -a -A -H -k server.pem -i eth0

для расшифровки содержимого сессии:

ssldump -d -k server.pem -i eth0

Для успешной расшифровки SSL-сессия должна быть перехвачена с самого начала,
включая момент обмена ключами на стадии инициирования сессии.

image_pdfimage_print

SSH

Включаем доступ по ssh, для этого нужно проделать некоторые шаги:

 (conf)# hostname R1 => задать имя устройства
 (conf)# ip domain-name cisco.com => задать доменное имя
 (conf)# username user1 secret c1sco => создать пользователя
 (conf)# crypto key generate rsa modulus 1024 => сгенерировать ключ
 (conf )# line vty 0 15 => выбрать линию для настройки, или делать для всех
 (conf-line)# login local => проверять имя/пароль и сверять их с БД
 # transport input ssh => включаем
 # exit
 # ip ssh version 2 => версия протокола
 # show ip ssh => посмотреть состояние ssh и его версию
 # show ssh => кто подключен

 

image_pdfimage_print

Telnet

Включаем telnet на устройстве

(conf)# line vty 0 15 => линии управления с 0 по 15
(conf-line)# password c1sco
(conf-line)# login
# sh line => какие линии можно настроить
(conf-line)# exec-timeout 5 => разлогинивание через 5 мин

 

 

 

 

image_pdfimage_print

NAT

Типы адресов NAT

  • inside local
  • inside global
  • outside global

20170302212248[1]

Типы NAT

  • Static NAT:
  • Dynamic NAT:
  • PAT:

20170302214347

20170302214857

20170302220903

20170302220934

20170302221536

 

Не все протоколы работают за NAT, например – FTP, для этого есть ALG (Application Level Gateways) – специальная функция – трансляция адресов на уровне приложений, называемая также NAT ALG. При задействованной функции ALG маршрутизатор отслеживает и модифицирует данные уровня приложений некоторых сетевых протоколов.

Функция ALG в маршрутизаторах Cisco позволяет осуществлять трансляцию адресов уровня приложений не только для протокола FTP, но также и для протоколов SIP, H.323, Skinny и некоторых других (благодаря этому можно, например, размещать в локальной сети серверы DNS). Для большего удобства функция ALG в маршрутизаторах Cisco включена по умолчанию.

Аналогичную ALG функциональность в маршрутизаторах на основе ОС Linux обеспечивают дополнительные загружаемые модули и патчи к ядру (такие, как ip_masq_ftp, ip_masq_irc и т. п.).

NAT выполняется после маршрутизации.

Способ 1.

Внутрений интерфейс

Router>enable
Router#conf t
Router(config)#interface g0/1
Router(config-if)#no shutdown 
Router(config-if)#ip address 192.168.0.1 255.255.255.0
Router(config-if)#ip nat inside

Внешний интерфейс

Router#conf t
Router(config)#interface g0/0
Router(config-if)#ip address 10.100.10.101 255.255.255.0
Router(config-if)#no sh
Router(config-if)#no shutdown
Router(config-if)#ip nat outside

Прописываем дефолтный маршрут и добавляем ACL

Router(config)#interface g0/0
Router(config-if)#ip route 0.0.0.0 0.0.0.0 10.100.10.100
Router(config)#access
Router(config)#access-list 2 permit 192.168.0.0 0.0.0.255
Router(config)#inter
Router(config)#interface g0/0
Router(config-if)#ip nat inside source list 2 inter
Router#conf t
Router(config)#ip nat inside source list 2 interface g0/0 overload
#show ip nat statistic => проверка
#debug ip nat => включить
#u a => выключить debug
# undebug all => выключить debug
#no debug all => выключить debug

 

 

image_pdfimage_print

ACL

Стандартные ACL имеют номера 1-99 и 1300-1999

R1(config)#access-list 1 permit 172.16.0.0 0.0.255.255

Правила работают до первого совпадения. Если ни одно условие не попало – действует “негласный” deny => access-list 1 deny any

#show access-lists => посмотреть ACL
(conf)#no access-list 1 => отменить
(conf)#no access-list 1 permit host 172.16.0.173 => отменить запись
(conf)#interface g0/0 => выбрать интерфейс на котором будет работать ACL
(conf-if)#ip access-group 1 in => применить ACL для входящего (in) трафика

 

 

 

 

image_pdfimage_print

RIP – Routing Information Protocol

Протокол маршрутной информации — один из самых простых протоколов маршрутизации. Применяется в небольших компьютерных сетях, позволяет маршрутизаторам динамически обновлять маршрутную информацию (направление и дальность в хопах), получая ее от соседних маршрутизаторов.

RIP — так называемый протокол дистанционно-векторной маршрутизации, который оперирует транзитными участками в качестве метрики маршрутизации. Максимальное количество хопов, разрешенное в RIP — 15 (метрика 16 означает «бесконечно большую метрику»). Каждый RIP-маршрутизатор по умолчанию вещает в сеть свою полную таблицу маршрутизации раз в 30 секунд, довольно сильно нагружая низкоскоростные линии связи. RIP работает на 3 уровне (сетевой) стека TCP/IP, используя UDP порт 520.

В современных сетевых средах RIP — не самое лучшее решение для выбора в качестве протокола маршрутизации, так как его возможности уступают более современным протоколам, таким как EIGRP, OSPF. Ограничение на 15 хопов не дает применять его в больших сетях. Преимущество этого протокола — простота конфигурирования.

Приступаем.

image_1

Положительным результатом будем считать наличие нужных маршрутов в таблице маршрутизации и Ping между хостами.

Начнем настройку. Запускаем наши роутеры, настраиваем интерфейсы и IP – адреса, согласно схеме.

Router_1>en
Router_1#conf t
Router_1(config)#int fa 0/0
Router_1(config-if)#ip address 172.16.10.1 255.255.255.0
Router_1(config-if)#description To_host
Router_1(config-if)#no sh
Router_1(config-if)#int ser 0/0
Router_1(config-if)#ip address 172.16.20.1 255.255.255.252
Router_1(config-if)#description To_Router_2
Router_1(config-if)#no sh
Router_1(config-if)#exit
Router_1(config)#^Z
Router_1#wr

R2>en
R2#conf t
R2(config)#hostname Router_2
Router_2(config)#int fa 0/0
Router_2(config-if)#ip address 172.16.30.1 255.255.255.0
Router_2(config-if)#description To_host
Router_2(config-if)#no sh
Router_2(config-if)#int ser 0/0
Router_2(config-if)#ip address 172.16.20.2 255.255.255.252
Router_2(config-if)#no sh
Router_2(config-if)#description To_Router_2
Router_2(config-if)#int ser 0/1
Router_2(config-if)#ip address 172.16.40.1 255.255.255.252
Router_2(config-if)#no sh
Router_2(config-if)#description To_Router_3
Router_2(config-if)#exit
Router_2(config)#^Z
Router_2#wr
R3>en

R3#conf t
R3(config)#hostname Router_3
Router_3(config)#int fa 0/0
Router_3(config-if)#ip address 172.16.50.1 255.255.255.0
Router_3(config-if)#no sh
Router_3(config-if)#description To_host
Router_3(config-if)#int ser 0/1
Router_3(config-if)#ip address 172.16.40.2 255.255.255.252
Router_3(config-if)#description To_Router_2
Router_3(config-if)#no sh
Router_3(config-if)#exit
Router_3(config)#^Z
Router_3#wr

Проверим сетевую доступность между роутерами ping-ом – все работает.

Теперь, проверим доступность роутеров с конечных хостов и отсутствие (на данный момент) сетевой доступности между хостами. Как видно, роутеры пингуются, а вот между хостами связи нет. Давайте, это исправим.

Заходим по очереди на роутеры и делаем следующие настройки:

Router_1#conf t
Router_1(config)#router rip – заходим в режим настройки RIP
Router_1(config-router)#version 2 – выбираем версию 2
Router_1(config-router)#network 172.16.0.0 – добавляем сеть
Router_1(config-router)#no auto-summary - отключаем автосуммаризацию
Router_1(config-router)#exit
Router_1(config)#exit
Router_1#wr

Router_2#conf t
Router_2(config)#router rip
Router_2(config-router)#version 2
Router_2(config-router)#network 172.16.0.0
Router_2(config-router)#no auto-summary
Router_2(config-router)#exit
Router_2(config)#exit
Router_2#wr

Router_3#conf t
Router_3(config)#router rip
Router_3(config-router)#version 2
Router_3(config-router)#network 172.16.0.0
Router_3(config-router)#no auto-summary
Router_3(config-router)#exit
Router_3(config)#exit
Router_3#

Надо помнить, что добавление сетей в процесс RIP осуществляется заданием classful network, а не подсетью. То есть правильно 172.16.0.0, а не 172.16.10.0.

Для детальных настроек RIP существуют еще команды. Вот некоторые из них:

Router(config-router)#no network w.x.y.z – удаляет сеть из процесса PIR;
Router(config-router)#version 1 – включает RIP версии 1;
Router(config-router)#passive-interface s0/0/0 – выключает посылку обновлений RIP на заданном интерфейсе (по умолчанию, рассылка обновлений включается на всех интерфейсах);
Router(config-router)#timers basic <> - позволяет задавать таймеры обновлений, время отклика и так далее…;
Router#debug ip rip – отображает всю информацию о работе протокола RIP в реальном времени;
Router#show ip rip database – отображает содержимое базы данных ( информации о маршрутах);
image_pdfimage_print

ARP – Address Resolution Protocol

ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по известному IP-адресу.

Рассмотрим суть функционирования ARP на простом примере. Компьютер А (IP-адрес 10.0.0.1) и компьютер Б (IP-адрес 10.22.22.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Однако сеть Ethernet, которой они соединены, не работает с IP-адресами. Поэтому компьютеру А для осуществления передачи через Ethernet требуется узнать адрес компьютера Б в сети Ethernet (MAC-адрес в терминах Ethernet). Для этой задачи и используется протокол ARP. По этому протоколу компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 10.22.22.2, сообщите свой MAC-адрес компьютеру с МАС-адресом (напр. a0:ea:d1:11:f1:01)». Сеть Ethernet доставляет этот запрос всем устройствам в том же сегменте Ethernet, в том числе и компьютеру Б. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес (напр. 00:ea:d1:11:f1:11) Теперь, получив MAC-адрес компьютера Б, компьютер А может передавать ему любые данные через сеть Ethernet.

Наибольшее распространение ARP получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку практически в 100 % случаев при таком сочетании используется ARP. В семействе протоколов IPv6 ARP не существует, его функции возложены на ICMPv6.

 

image_pdfimage_print

UDP — User Datagram Protocol (протокол пользовательских датаграмм)

UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении. Чувствительные ко времени приложения часто используют UDP, так как предпочтительнее сбросить пакеты, чем ждать задержавшиеся пакеты, что может оказаться невозможным в системах реального времени. При необходимости исправления ошибок на сетевом уровне интерфейса приложение может задействовать TCP или SCTP, разработанные для этой цели.

Природа UDP как протокола без сохранения состояния также полезна для серверов, отвечающих на небольшие запросы от огромного числа клиентов, например DNS и потоковые мультимедийные приложения вроде IPTV, Voice over IP, протоколы туннелирования IP и многие онлайн-игры.

Заголовок UDP состоит из четырёх полей, каждое по 2 байта (16 бит). Два из них необязательны к использованию в IPv4 (розовые ячейки в таблице), в то время как в IPv6 необязателен только порт отправителя.

16 bit Порт отправителя (Source port)
16 bit Порт получателя (Destination port)
16 bit Длина датаграммы (Length)
16 bit Контрольная сумма (Checksum)
Data

 

image_pdfimage_print