Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

ПрограммыЖелезоДрайверыХостингЭнциклопедия рекламы

5.Файлы

Сервер имен использует несколько файлов для загрузки своей базы данных. Этот раздел описывает файлы и их форматы, требуемые для named.

5.1. Загрузочный Файл

Это файл, который считывается первым при старте named. Он сообщает серверу, сервер какого он типа, на какие зоны он авторизован, и где ему получить начальные данные. По умолчанию этот файл размещается в /etc/named.boot. Однако это может быть изменено установкой переменной BOOTFILE при компиляции named или путем задания размещения в командной строке при старте named.

5.1.1. Домен

Домен по умолчанию для сервера имен может быть задан путем использования строки вида

domainBerkeley.Edu

Сервер имен использует эту информацию, когда он получает запрос для имени без ``.'', которое не известно. Когда он получает один из таких запросов, он добавляет имя во второе поле к имени запроса. Это устаревшее средство, которое будет удалено из будущих версий.

5.1.2. Каталог

Строка каталога задает каталог, в котором сервер имен должен выполняться, позволяя другим файлам в загрузочном файле использовать имена относительно пути.
directory/usr/local/domain

Если вы имеете более двух поддерживаемых файлов named, вы можете захотеть поместить файлы named в каталог вроде /usr/local/domain и установить соответствующую команду directory. Основное назначение этой команды состoит в том, чтобы гарантировать named, что он находится в соответствующем каталоге при попытке включения файлов по именам относительно пути по $Include, и позволить named выполняться в месте, которое является приемлемым для дампа памяти, если в этом есть необходимость.

5.1.3. Первичный Главный

Строка в загрузочном файле, которая отмечает сервер как первичный сервер для зоны, выглядит следующим образом:
primaryBerkeley.Eduucbhosts

Первое поле задает, что сервер является первичным для зоны, установленной в втором поле. Третье поле есть имя файла, из которого считываются данные.

5.1.4. Вторичный Главный

Строка для вторичного сервера подобна строке для первичного, исключая то, что в ней перечисляются адреса других серверов (обычно первичных серверов), от которых будут приниматься данные для зоны.
secondaryBerkeley.Edu 128.32.0.10128.32.0.4ucbhosts.bak

Первое поле задает, что сервер является вторичным главным сервером для зоны, установленной во втором поле. Два сетевых адреса задают серверы имен, которые являются первичными для зоны. Вторичный сервер получает данные по сети от указанных серверов. Каждый сервер опрашивается в указанном порядке, пока данные не будут успешно получены от заданного сервера. Если после списка первичных серверов стоит имя файла, данные для зоны будет дампироваться в этот файл в качестве резервной копии. Когда сервер стартует первоначально, данные загружаются, если это возможно, из резервного файла, и проводится консультация с первичным сервером, для проверки того, что зона все еще содержит свежие данные.

5.1.5. Только Кэширующий Сервер

Вам не нужно специальной строки для отметки того, что сервер является кэширующим сервером. Кэширование означает только то, что в загрузочном файле сервера отсутствуют строки авторизации, типа вторичный он или первичный.

Все серверы должны иметь следующую строку в загрузочном файле для наполнения кэша серверов имен:
cache.root.cache

Все перечисленные файлы кэша будут считываться во время загрузки named и любые, еще допустимые, значения будут восстановлены в кэше, и в файлах кэша всегда будет использоваться информация корневого сервера имен. Для информации относительно файла кэша смотрите раздел по Инициализации Кэша.

5.1.6. Перенаправители

Любой сервер может использовать перенаправителей. Перенаправитель - это другой сервер, способный обрабатывать рекурсивные запросы, и который согласен попытаться разрешать запросы в интересах других систем. Команда forwaders задает перенаправителей с помощью адресов Internet следующим образом:

Имеются два основных соображения в необходимости поступать таким образом. Во-первых, другие системы могут не иметь полный доступ к сети и могут быть заблокированы от посылки любых IP пакетов в остальную сеть, и, следовательно, должны полагаться на перенаправителя, который имеет доступ к полной сети. Вторая причина состоит в том, что перенаправитель видит множество всех запросов при их прохождении через его сервер, и, следовательно, он создает очень богатый кэш данных по сравнению с кэшем сервера имен типичной рабочей станции. Фактически, перенаправитель становится мета-кэшем, что выгодно всем host'ам, таким образом уменьшая общее число запросов от таких узлов остальной сети.

5.1.7. Подчиненный Режим

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

slave

в загрузочном файле. Если используется подчиненный режим, то вы должны задать перенаправителей. В подчиненном режиме сервер будет переправлять каждый запрос каждому из перенаправителей, пока не получит ответ, или будет исчерпан список перенаправителей.

5.1.8. Удаленный Сервер

Чтобы установить host, который будет использовать удаленный сервер вместо локального сервера для ответа на запросы, требуется создать файл /etc/resolv.conf. Этот файл отмечает серверы имен в сети, которым должны посылаться запросы. Нежелательно создавать этот файл, если у вас запущен локальный сервер. Если этот файл существует, он считывается почти каждый раз при вызове gethostbyname() или gethostbyaddr().

5.2. Инициализация Кэша

5.2.1. root.cache

Серверу имен нужно знать серверы, которые являются авторизованными серверами имен для корневого домена сети. Чтобы сделать это, мы должны наполнить кэш сервера имен адресами этих более высоких хозяев. Расположение этого файла задается в загрузочном файле. Этот файл использует Standard Resource Record Format - Стандартный Формат Записи Ресурса (aka. Masterfile Format), описанный далее в этой статье.

5.3. Файлы Данных Домена

Имеется три стандартных файла для задания данных для домена. Это named.local, hosts и host.rev. Эти файлы используют Стандартный Формат Записи Ресурса, описанный позже в этой статье.

5.3.1. named.local

Этот файл задает адрес для локального петлевого (loopback) интерфейса, лучше известного как localhost с сетевым адресом 127.0.0.1. Положение этого файла задается в загрузочном файле.

5.3.2. hosts

Этот файл содержит все данные о машинах в этой зоне. Положение этого файла задается в загрузочном файле.

5.3.3. hosts.rev

Этот файл задает домен IN-ADDR.ARPA. Это специальный домен, позволяющий отображать адрес в имя. Поскольку host-адреса Internet не пересекаются в пределах границ домена, этот специальный домен был сформирован, чтобы позволить обратное отображение. Домен IN-ADDR.ARPA имеет четыре метки, предваряющие его. Эти метки соответствуют 4 октетам адреса Internet. Все четыре октета должны быть заданы, даже если октеты являются нулевыми. Адрес Internet 128.32.0.4 размещается в домене как 4.0.32.128.IN-ADDR.ARPA. Это реверсирование адреса неудобочитаемо, но позволяет естественным оброазом группировать host'ы в сети.

5.4. Стандартный Формат Записи Ресурса

Записи в файлах данных сервера имен называются записями ресурса. Стандартный Формат Записи Ресурса (RR) определяется в RFC882 и RFC973. Далее следует общее описание этих записей:

{name} {ttl} addr-class Record Type Record Specific data

Записи ресурса имеют стандартный формат, показанный выше. Первое поле всегда является именем записи домена и оно должно всегда начинаться в колонке 1. Для некоторых RR имя может быть пробелом слева; в том случае в качестве имени берется имя предыдущей RR. Второе поле является необязательным полем времени жизни. Оно задает, как долго эти данные будут храниться в базе данных. При оставление этого поля пустым время жизни по умолчанию определяется по записи ресурса Start Of Authority (Начало Полномочий) (смотрите ниже). Третье поле - класс адреса; в настоящее время поддерживается только один класс: IN для адресов Internet и прочей информации. Четвертое поле устанавливает тип записи ресурса. Поля после него зависят от типа RR. Регистр сохраняется в именах и полях данных при загрузке в сервер имен. Все сравнения и поиски в базе данных сервера имен не чувствительны к регистру.

Следующие символы имеют специальные значения:

.
Отдельно стоящая точка в поле имени отсылает к текущему домену.
@
Отдельно стоящий знак @ в поле имени обозначает текущий источник.
..
Две отдельно стоящих точки представляют нулевое имя корневого домена, когда используются в поле имени.
X
Где X - любой символ, отличный от цифры (0-9), экранирование символа, так что специальное значение не применяется. Например, ``.'' может использоваться, чтобы поместить символ точки в метке.
DDD
Где каждое D - цифра, является октетом, соответствующим десятичному номеру, описываемому с помощью DDD. Результирующий октет по предположению является текстом и не проверяется на специальное значение.
( )
Круглые Скобки используются для группировки данных, продолжающихся на других строках. Фактически, разделители строк не распознаются внутри круглых скобок.
;
Точка с запятой начинает комментарий; остаток строки игнорируется.
*
Звездочка означает групповой выбор.

Большинство записей ресурса будут иметь текущий источник, присоединенный к именам, если они не завершаются ``.''. Это полезно для присоединения текущего имени домена к данным, таким как имена машин, но может повлечь проблемы, когда вы не хотите, чтобы это случилось. Хорошее правило, чтобы избежать этого - если имя не находится в домене, для которого вы создаете файл данных, заканчиваете имя ``.''.

5.4.1. $INCLUDE

Включаемая строка состоит из $INCLUDE, начинающегося с колонки 1, и следующего за ним имени файла. Эта возможность особенно полезна для отделения различных типов данных в множественных файлах. Примером может быть:

$INCLUDE /usr/named/data/mailboxes

Строка будет интерпретироваться как запрос на загрузку файла /usr/named/data/mailboxes. Команда $INCLUDE не приводит к тому, что данные загружаются в другую зону или дерево. Это просто способ позволить данным для данной зоны быть организованными в отдельных файлах. Например, данные почтового ящика могут храниться отдельно от host-данных, использующих этот механизм.

5.4.2. $ORIGIN

Это способ изменения источника в файле данных. Строка начинается с колонки 1, и сопровождается доменом-источником. Это полезно для помещения более одного домена в файле данных.

5.4.3. SOA - Start Of Authority (Начало Полномочий)
name {ttl} addr-class SOA     Origin		   Person in charge
@	   IN	      SOA     ucbvax.Berkeley.Edu. kjd.ucbvax.Berkeley.Edu. (
		      1.1     ;	Serial
		      3600    ;	Refresh
		      300     ;	Retry
		      3600000 ;	Expire
		      3600 )  ;	Minimum

Начало Полномочий (Start Of Authority - SOA), запись, отмечающая начало зоны. Поле name - это имя зоны. Origin - имя host'а, на котором этот файл данных размещен. Person in charge - почтовый адрес человека, ответственного за сервер имен. Serial number - номер версии этого файла данных, который должен увеличиваться всякий раз, когда в данные вносятся изменения. Сервер имен не может обрабатывать номера свыше 9999 после десятичной точки. Refresh указывает, как часто, в секундах, вторичные серверы имен сверяются с первичным сервером имен, чтобы увидеть необходимость обновления. Retry указывает промежуток времени, в секундах, после которого вторичный сервер повторят обновление после отказа сверки. Expire - верхний предел, в секундах, до которого вторичный сервер имен использует данные перед тем, как истечет срок их хранения из-за отсутствия обновления. Minimum - число секунд по умолчанию, используемое в качестве поля времени жизни в записи ресурса. Должна быть только одна запись SOA на зону.

5.4.4. NS - Name Server (Сервер Имен)
{name}   {ttl}   addr-class   NS   Name servers name
		 IN           NS   ucbarpa.Berkeley.Edu.

Запись Name Server, NS, определяет ответственность сервера имен за данный домен. Первое поле name указывает домен, который обслуживается данным сервером имен. Должна иметься одна запись NS для каждого Первичного Главного сервера для домена.

5.4.5. A - Address (Адрес)
{name}	  {ttl}	  addr-class   A   address
ucbarpa		  IN	       A   128.32.0.4
		  IN	       A   10.0.0.78

Запись Address, A, определяет адрес для данной машины. Поле name - имя машинны, а address - сетевой адрес. Должна быть одна запись A для каждого адреса машины.

5.4.6. HINFO - Host Information (Информация о Host'е)
{name}	 {ttl}	 addr-class   HINFO   Hardware	   OS
		 IN	      HINFO   VAX-11/780   UNIX

Запись ресурса Host Information, HINFO, предназначена для специфических данных host'а. Здесь перечислены аппаратные средства и операционная система, на которых выполняется указанный host. Следует отметить, что только пробел отделяет информацию об аппаратных средствах от информации об операционной системе. Если вы хотите включить пробел в имя машины, вы должны поместить имя в кавычки. Должна иметься одна запись HINFO для каждого host'а.

5.4.7. WKS - Well Known Services (Общеизвестный Сервис)
{name} {ttl} addr-class	WKS Address	Protocol List of services
	     IN		WKS 128.32.0.10	UDP	 who route timed domain
	     IN		WKS 128.32.0.10	TCP	 ( echo	telnet
						 discard sunrpc	sftp
						 uucp-path systat daytime
						 netstat qotd nntp
						 link chargen ftp
						 auth time whois mtp
						 pop rje finger	smtp
						 supdup	hostnames
						 domain
						 nameserver )

Запись Well Known Services, WKS, описывает общеизвестный сервис, поддерживаемый конкретным протоколом по заданному адресу. Список сервиса и номера портов исходят из списка сервиса, заданного /etc/services. Должна быть только одна запись WKS на протокол на адрес.

5.4.8. CNAME - Canonical Name (Каноническиое Имя)
aliases	   {ttl}   addr-class	CNAME	Canonical name
ucbmonet	   IN		CNAME	monet

Запись ресурса Canonical Name, CNAME, задает псевдоним для канонического имени. Псевдоним должен быть единственной записью, связанной с именем псевдонима; все другие записи ресурсов должны связываться с каноническиим именем, а не с псевдонимом. В любых записях ресурсов, включающих имя домена в качестве их значения (например, NS или MX), должно указываться каноническиое имя, не псевдоним.

5.4.9. PTR - Domain Name Pointer (Указатель Имени Домена)
name   {ttl}   addr-class   PTR	  real name
7.0	       IN	    PTR	  monet.Berkeley.Edu.

Запись Domain Name Pointer, PTR, позволяет специальным именам указывать на некоторое другое положение в домене. Вышеупомянутый пример записи PTR используется при установке обратных указателей для специального домена IN-ADDR.ARPA. Эта строка из файла-образца hosts.rev. Имена PTR должны быть уникальны в зоне.

5.4.10. MB - Mailbox (Почтовый Ящик)
name	 {ttl}	 addr-class   MB   Machine
miriam		 IN	      MB   vineyd.DEC.COM.

MB - это запись Mailbox. Она указывает машину, на которой пользователь желает получать почту. Поле name является входным именем пользователя; поле machine указывает машину, на которую почта должна доставляться. Имена Почтовых Ящиков должны быть уникальны в зоне.

5.4.11. MR - Mail Rename Name (Имя Переименования Почты)
name	       {ttl}   addr-class   MR	 corresponding MB
Postmistress	       IN	    MR	 miriam

Mail Rename, MR, может использоваться для указания псевдонимов пользователя. Поле name определяет псевдоним для имени, которое указано в четвертом поле, и которое должно иметь соответствующую запись MB.

5.4.12. MINFO - Mailbox Information (Информация Почтового Ящика)
name {ttl} addr-class MINFO Requests	 Maintainer
BIND	   IN	      MINFO BIND-REQUEST kjd.Berkeley.Edu.

Запись Mail Information, MINFO, создает почтовую группа для списка рассылки. Эта запись ресурса обычно связывается с почтовой группой Mail Group, но может использоваться с записью Mail Box. Поле name задает имя почтового ящика. Поле requests определяет, где почта, такая как запросы, будет добавляться к почтовой группе, которая должна посылаться. Поле maintainer - это почтовый ящик, который должен принимать сообщения об ошибках. Это особенно подходит для списков рассылки, когда ошибки в именах членов должны сообщаться лицу, отличному от отправителя.

5.4.13. MG - Mail Group Member (Член Почтовой Группы)
{mail group name}   {ttl}   addr-class   MG   Member name
			    IN           MG   Bloom

Mail Group, MG, указывает членов почтовой группы.

Пример для установки списка рассылки следующий:

Bind   IN   MINFO   Bind-Request            kjd.Berkeley.Edu.
       IN   MG      Ralph.Berkeley.Edu.
       IN   MG      Zhou.Berkeley.Edu.
       IN   MG      Painter.Berkeley.Edu.
       IN   MG      Riggle.Berkeley.Edu.
       IN   MG      Terry.pa.Xerox.Com.
5.4.14. MX - Mail Exchanger (Почтальон)
name             {ttl}   addr-class  MX  Preference value  Mailer exchanger
Munnari.OZ.AU.           IN          MX  0                 Seismo.CSS.GOV.
*.IL.                    IN          MX  0                 RELAY.CS.NET.

Запись Mail Exchanger, MX, используются для задания машины, которая знает, как доставить почту на машину, не связанную непосредственно с сетью. В первом примере, выше, Seismo.CSS.GOV - это почтовый шлюз, который знает, как доставить почту на Munnari.OZ.AU., но другие машины в сети не могут доставлять почту прямо на Munnari. Эти две машины могут иметь личное соединение или используются в различных транспортных средах. Поле preference value служит для указания того, куда мэйлер должен следовать, когда имеется более одного способа доставки почты на отдельную машину. См. RFC974 для более подробной информации.

Групповые имена, содержащие символ ``*'', могут использоваться в записях MX для маршрутизации почты. Имеются вероятноcть, что в сети существуют серверы, которые просто устанавливают, что любая почта для домена должна маршрутизироваться широковещательно. Второй пример, выше, все отправляющий на host'ы в домене IL, маршрутизируется через RELAY.CS.NET. Это сделано путем создании групповой записи ресурса, который устанавливает, что *.IL имеет MX от RELAY.CS.NET.

5.5. Образцы Файлов

Следующий раздел содержит образцы файлов для сервера имен. Показаны примеры загрузочных файлов для различных типов серверов и примеры файлов базы данных домена.

5.5.1. Загрузочный Файл
5.5.1.1. Первичный Главный Сервер
;
; Boot file for	Primary	Master Name Server
;


; type	    domain		   source file or host
;
directory   /usr/local/domain
primary	    Berkeley.Edu	   ucbhosts
primary	    32.128.in-addr.arpa	   ucbhosts.rev
primary	    0.0.127.in-addr.arpa   named.local
cache	    .			   root.cache
5.5.1.2. Вторичный Главный Сервер
;
; Boot file for	Primary	Master Name Server
;


; type	    domain		   source file or host
;
directory   /usr/local/domain
secondary   Berkeley.Edu	   128.32.0.4 128.32.0.10 ucbhosts.bak
secondary   32.128.in-addr.arpa	   128.32.0.4 128.32.0.10 ucbhosts.rev.bak
primary	    0.0.127.in-addr.arpa   named.local
cache	    .			   root.cache
5.5.1.3. Только Кэширующий Сервер
;
; Boot file for	Caching	Only Name Server
;


; type	    domain		   source file or host
;
directory   /usr/local/domain
cache	    .			   root.cache
primary	    0.0.127.in-addr.arpa   /etc/named.local
5.5.2. Удаленный Сервер
5.5.2.1. /etc/resolv.conf

domain Berkeley.Edu
nameserver 128.32.0.4
nameserver 128.32.0.10

5.5.3. root.cache
;
;
; Initial cache	data for root domain servers.
;


.                 99999999   IN   NS   SRI-NIC.ARPA.
		  99999999   IN   NS   NS.NASA.GOV.
		  99999999   IN   NS   TERP.UMD.EDU.
		  99999999   IN   NS   A.ISI.EDU.
		  99999999   IN   NS   BRL-AOS.ARPA.
		  99999999   IN   NS   GUNTER-ADAM.ARPA.
		  99999999   IN   NS   C.NYSER.NET.

.T&
l s s s	s
l l l l	l.
;  Prep	the cache (hotwire the addresses).
SRI-NIC.ARPA.     99999999   IN   A   10.0.0.51
SRI-NIC.ARPA.     99999999   IN   A   26.0.0.73
NS.NASA.GOV.      99999999   IN   A   128.102.16.10
A.ISI.EDU.        99999999   IN   A   26.3.0.103
BRL-AOS.ARPA.     99999999   IN   A   128.20.1.2
BRL-AOS.ARPA.     99999999   IN   A   192.5.25.82
BRL-AOS.ARPA.     99999999   IN   A   192.5.22.82
GUNTER-ADAM.ARPA. 99999999   IN   A   26.1.0.13
C.NYSER.NET.      99999999   IN   A   128.213.5.17
TERP.UMD.EDU.     99999999   IN   A   10.1.0.17
5.5.4. named.local
@   IN   SOA   ucbvax.Berkeley.Edu.   kjd.ucbvax.Berkeley.Edu.  (
	       1       ; Serial
	       3600    ; Refresh
	       300     ; Retry
	       3600000 ; Expire
	       3600 )  ; Minimum
    IN   NS    ucbvax.Berkeley.Edu.
1   IN   PTR   localhost.
5.5.5. hosts
;
;    @(#)ucb-hosts    1.2    (berkeley)	   88/02/05
;

@            IN   SOA     ucbvax.Berkeley.Edu.   kjd.monet.Berkeley.Edu. (
			  1.2       ; Serial
			  10800     ; Refresh
			  1800      ; Retry
			  3600000   ; Expire
			  86400 )   ; Minimum
	     IN   NS      ucbarpa.Berkeley.Edu.
	     IN   NS      ucbvax.Berkeley.Edu.
localhost    IN   A       127.1
ucbarpa      IN   A       128.32.4
	     IN   A       10.0.0.78
	     IN   HINFO   VAX-11/780   UNIX
arpa         IN   CNAME   ucbarpa
ernie        IN   A       128.32.6
	     IN   HINFO   VAX-11/780   UNIX
ucbernie     IN   CNAME   ernie
monet        IN   A       128.32.7
	     IN   A       128.32.130.6
	     IN   HINFO   VAX-11/750   UNIX
ucbmonet     IN   CNAME   monet
ucbvax       IN   A       10.2.0.78
	     IN   A       128.32.10
	     IN   HINFO   VAX-11/750   UNIX
	     IN   WKS     128.32.0.10  UDP syslog route timed domain
	     IN   WKS     128.32.0.10  TCP ( echo telnet
					     discard sunrpc sftp
					     uucp-path systat daytime
					     netstat qotd nntp
					     link chargen ftp
					     auth time whois mtp
					     pop rje finger smtp
					     supdup hostnames
					     domain
					     nameserver )
vax          IN   CNAME   ucbvax
toybox       IN   A       128.32.131.119
	     IN   HINFO   Pro350   RT11
toybox       IN   MX      0   monet.Berkeley.Edu
miriam       IN   MB      vineyd.DEC.COM.
postmistress IN   MR      Miriam
Bind         IN   MINFO   Bind-Request   kjd.Berkeley.Edu.
	     IN   MG      Ralph.Berkeley.Edu.
	     IN   MG      Zhou.Berkeley.Edu.
	     IN   MG      Painter.Berkeley.Edu.
	     IN   MG      Riggle.Berkeley.Edu.
	     IN   MG      Terry.pa.Xerox.Com.
5.5.6. host.rev
;
;    @(#)ucb-hosts.rev	  1.1	 (Berkeley)    86/02/05
;

@       IN   SOA   ucbvax.Berkeley.Edu.   kjd.monet.Berkeley.Edu. (
		   1.1     ; Serial
		   10800     ; Refresh
		   1800      ; Retry
		   3600000   ; Expire
		   86400 )   ; Minimum
	IN   NS    ucbarpa.Berkeley.Edu.
	IN   NS    ucbvax.Berkeley.Edu.
4.0     IN   PTR   ucbarpa.Berkeley.Edu.
6.0     IN   PTR   ernie.Berkeley.Edu.
7.0     IN   PTR   monet.Berkeley.Edu.
10.0    IN   PTR   ucbvax.Berkeley.Edu.
6.130   IN   PTR   monet.Berkeley.Edu.

forwarders128.32.0.10128.32.0.4
RLE Banner NetworkRLE Banner Network


  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте