Инженеры чаще всего ошибаются в знании предметной области

задняя часть внешний интерфейс TCP/IP
Инженеры чаще всего ошибаются в знании предметной области

Адрес в Интернете — это числовой IP-адрес, такой как61.135.169.125Это один из адресов официального веб-сайта Baidu.Если вам нужно вводить IP-адрес каждый раз, когда вы посещаете Baidu, считается, что Интернет еще не вышел из стадии Hongmeng.

В истории развития сети верно то, что IP-адрес напрямую используется для доступа к удаленному хосту в начале. Если раньше каждый компьютер, подключенный к Интернету, использовал хост-файл (то, что мы обычно называем файлом hosts) для настройки и разрешения адресов. host файл стал большой проблемой. Так, в 1983 году Пол Мокапаихос изобрел службу разрешения доменных имен и систему доменных имен, 1 января 1985 года первое в мире доменное имяnordu.netбыл успешно зарегистрирован.

Доменные имена легче запомнить, чем IP-адреса. По сути, они всего лишь предоставляют легко запоминающиеся псевдонимы для цифровых интернет-ресурсов. 4 Jingshan Qian Street, Dongcheng District». То же, что и двор. Если вы думаете об IP-адресах как о телефонных номерах, то система доменных имен — это адресная книга. Мы храним друзей и семью в нашей адресной книге, и каждый раз, когда мы находим кого-то по имени, чтобы позвонить, адресная книга ищет связанный с ним номер телефона и набирает его. Возможно, мы не сможем вспомнить много полных телефонных номеров, но имена контактов.

Поскольку «доменное имя» — это всего лишь псевдоним, мы не можем получить доступ к правильному адресу только с помощью этого имени. Доступ к сети может быть успешным только в том случае, если доменное имя может быть преобразовано в фактический сетевой адрес. Это разрешение выполняется специализированной системой доменных имен (DNS), которая также является одной из основных базовых служб Интернета.

Как сделано разрешение доменного имени?

Разрешение DNS - это процесс того, как выглядит? Прежде чем приступить к этому вопросу, давайте взглянем на иерархию доменных имен.

Иерархия доменных имен

При обсуждении доменных имен мы часто слышим, как люди говорят о таких понятиях, как «доменное имя верхнего уровня», «доменное имя первого уровня», «доменное имя второго уровня» и т. д. Как делятся уровни доменных имен?

  • корневое доменное имя. Взяв Baidu в качестве примера, с помощью некоторых инструментов разрешения доменных имен мы можем видеть, что доменное имя официального веб-сайта Baidu отображается какwww.baidu.com., внимательный заметит, что есть финал., это не ошибка, но все домены имеют в конце корневой домен.www.baidu.comНастоящее доменное имяwww.baidu.com.rootПростоwww.baidu.com., и потому что имя корневого домена.rootОн одинаков для всех доменных имен, поэтому его обычно опускают, и со временем он становится нашим общим видом.

  • Следующий уровень корневого доменного имени называется доменом верхнего уровня (TLD), также называемым доменным именем первого уровня, например .com / .net / .org / .cn и т. д. доменное имя уровня.

  • Следующий уровень называется доменом второго уровня (сокращенно SLD), например baidu.com. Это самое премиальное доменное имя, которое мы можем приобрести и зарегистрировать.

  • Ниже имени поддомена находится имя хоста (хост), которое также можно назвать доменным именем третьего уровня, например www.baidu.com, С этого момента вниз, в основном, доменное имя N-уровня является дополнительным уровнем. перед доменным именем уровня N-1.

Подводя итог, общая иерархия доменных имен выглядит следующим образом:

主机名.次级域名.顶级域名.根域名
# ie
www.baidu.com.root

Вообще говоря, когда мы покупаем доменное имя, мы покупаем право на управление доменным именем второго уровня (SLD) (например, leancloud.cn). С этим правом управления мы можем настроить домен третьего и четвертого уровня. имена по желанию.

Процесс разрешения доменного имени

В соответствии с иерархической структурой доменных имен система DNS также представляет собой древовидную структуру. Доменные имена на разных уровнях разрешаются разными серверами доменных имен. Весь процесс является «иерархическим».

Первым уровнем иерархической системы разрешения доменных имен является корневой сервер доменных имен.В мире всего 13 корневых серверов доменных имен IPv4 (с именами от A до M), один из которых является основным корневым сервером в Соединенных Штатах, а остальные 12 — это вспомогательные корневые серверы, отвечающие за управление информацией о доменных именах стран по всему миру. Под корневым сервером находится сервер доменных имен верхнего уровня, то есть база данных соответствующих национальных агентств по управлению доменными именами, таких как Китайский информационный центр сети Интернет (CNNIC). Затем на следующем уровне находятся авторитетные серверы имен и кэш-серверы интернет-провайдера.

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

Предположим, что в Пекине создано специальное «Дорожное консультационное бюро», в котором есть несколько уровней государственных служащих, таких как директор, министр, директор отдела и член секции. области. Всех здесь объединяет одно: они верят в философию «хорошая память не так хороша, как плохое письмо», и им нравится записывать выученную информацию в свои тетради. Но жаль, что они используют для письма только один тип чернил, так называемые "волшебные чернила" Надпись сначала густая, потом постепенно тускнеет, и полностью исчезает через 1 час. Также на входе в Дорожно-консультационное бюро стоит дядя-охранник, все, кто хочет спросить дорогу, должны общаться и отвечать через него, граждане не могут войти в административное здание.

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

Примеры иерархических запросов

Теперь давайте рассмотрим практический пример. Если мы введем в браузереhttps://news.qq.com, браузер извлечет поле доменного имени (news.qq.com) из полученного URL-адреса, а затем передаст его DNS-клиенту (предоставляемому операционной системой) для разрешения.

Во-первых, давайте объясним локальную конфигурацию DNS (то есть файл /etc/resolv.conf, в котором указан адрес локального DNS-сервера, системы Windows могут быть другими):

$ cat /etc/resolv.conf 
nameserver 202.106.0.20
nameserver 202.106.196.115

Затем мы используем инструмент dig для проверки результатов синтаксического анализа сайта news.qq.com (китайская часть является пояснением):

$ dig news.qq.com

; <<>> DiG 9.10.6 <<>> news.qq.com
这是 dig 程序的版本号与要查询的域名

;; global options: +cmd
;; Got answer:
以下是要获取的内容。

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47559
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
这个是返回应答的头部信息:
1. opcode:操作码,QUERY 代表查询操作;
2. status: 状态,NOERROR 代表没有错误;
3. id:编号,在 DNS 协议中通过编号匹配返回和查询;
4. flags: 标志,含义如下:
   - qr:query,查询标志,代表是查询操作
   - rd:recursion desired,代表希望进行递归查询操作;
   - ra:recursive available,代表查询的服务器支持递归查询操作;
5. QUERY 查询数,与下面 QUESTION SECTION 的记录数一一对应;
6. ANSWER 结果数,与下面的 ANSWER SECTION 的记录数一一对应;
7. AUTHORITY 权威回复数,如果查询结果由管理域名的域名服务器而不是缓存服务器提供的,则称为权威回复。
             0 表示所有结果都不是权威回复;
8. ADDITIONAL 额外记录数;

;; QUESTION SECTION:
;news.qq.com.			IN	A
查询部分,从左到右部分意义如下:
1、要查询的域名;
2、要查询信息的类别,IN 代表类别为 IP 协议,即 Internet。
3、查询的记录类型,A 记录(Address)代表要查询 IPv4 地址。

;; ANSWER SECTION:
news.qq.com.		136	IN	CNAME	https.qq.com.
https.qq.com.		476	IN	A	125.39.52.26
回应部分,从左到右各部分意义:
1、对应的域名
2、TTL,time to live,缓存时间,单位秒,代表缓存域名服务器可以在缓存中保存的期限。
3、查询信息的类别
4、查询的记录类型,CNAME 表示别名记录,A 记录(Address)代表 IPv4 地址。
5、域名对应的 ip 地址。

;; Query time: 56 msec
;; SERVER: 202.106.0.20#53(202.106.0.20)
查询使用的服务器地址和端口,其实就是本地 DNS 域名服务器
;; WHEN: Thu Jul 11 15:59:37 CST 2019
;; MSG SIZE  rcvd: 65
查询的时间与回应的大小,收到 65 字节的应答数据。

Как видно из этого ответа, мы получаем не авторитетный ответ, а просто ответ от локального DNS-сервера из кеша.

Далее мы добавляем параметр в команду dig+traceчтобы увидеть полный процесс запроса рейтинга:

$ dig +trace news.qq.com

; <<>> DiG 9.10.6 <<>> +trace news.qq.com
;; global options: +cmd
.			432944	IN	NS	g.root-servers.net.
.			432944	IN	NS	k.root-servers.net.
.			432944	IN	NS	b.root-servers.net.
.			432944	IN	NS	h.root-servers.net.
.			432944	IN	NS	i.root-servers.net.
.			432944	IN	NS	f.root-servers.net.
.			432944	IN	NS	d.root-servers.net.
.			432944	IN	NS	e.root-servers.net.
.			432944	IN	NS	j.root-servers.net.
.			432944	IN	NS	l.root-servers.net.
.			432944	IN	NS	c.root-servers.net.
.			432944	IN	NS	m.root-servers.net.
.			432944	IN	NS	a.root-servers.net.
;; Received 228 bytes from 202.106.0.20#53(202.106.0.20) in 45 ms
这些就是神秘的根域名服务器,由本地 DNS 服务器返回了所有根域名服务器地址。

com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
;; Received 1171 bytes from 192.36.148.17#53(i.root-servers.net) in 57 ms
这里显示的是 .com 域名的 13 条 NS 记录,本地 DNS 服务器向这些顶级域名服务器发出查询请求,
询问 qq.com 的 NS 记录。

qq.com.			172800	IN	NS	ns1.qq.com.
qq.com.			172800	IN	NS	ns2.qq.com.
qq.com.			172800	IN	NS	ns3.qq.com.
qq.com.			172800	IN	NS	ns4.qq.com.
;; Received 805 bytes from 192.48.79.30#53(j.gtld-servers.net) in 331 ms
这里显示的是 qq.com 的 4 条 NS 记录,由 j.gtld-servers.net 这台服务器最先返回。
然后本地 DNS 服务器向这四台服务器查询下一级域名 news.qq.com 的 NS 记录。

news.qq.com.		86400	IN	NS	ns-cnc1.qq.com.
news.qq.com.		86400	IN	NS	ns-cnc2.qq.com.
;; Received 180 bytes from 58.144.154.100#53(ns4.qq.com) in 37 ms
这里显示的是 news.qq.com 的 NS 记录,它们是由上面的 ns4.qq.com 域名服务器返回的。
然后本地 DNS 服务器向这两台机器查询 news.qq.com 的主机名。

news.qq.com.		600	IN	CNAME	https.qq.com.
https.qq.com.		600	IN	A	125.39.52.26
;; Received 76 bytes from 223.167.83.104#53(ns-cnc2.qq.com) in 29 ms
这是上面的 ns-cnc2.qq.com 返回的最终查询结果:
news.qq.com 是 https.qq.com 的别名,而 https.qq.com 的 A 记录地址是 125.39.52.26

В реальном процессе локальный DNS-сервер эквивалентен Uncle Gatekeeper, корневой сервер доменных имен эквивалентен Comrade Director и так далее. Запрос между клиентом и локальным DNS-сервером называется рекурсивным запросом, а запрос между локальным DNS-сервером и другими серверами доменных имен называется итеративным запросом.

Типы записей доменных имен

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

При настройке записей доменных имен вы столкнетесь с различными типами, такими как «записи A», «CNAME» и т. д. Это результат, с которым мы столкнулись, когда ранее выполняли разрешение доменных имен. Что означают эти типы и в чем разница между ними? Далее мы рассмотрим распространенные типы записей.

  • Запись. Запись A (Address) используется для прямого указания IP-адреса, соответствующего имени хоста (или имени домена). Имя хоста является префиксом доменного имени, и общие из них следующие:

    www: разрешенное доменное имяwww.yourdomain.com, обычно используемый для адресов веб-сайтов.

    @: Прямое разрешение основного доменного имени.

    *: Разрешение панорамы означает преобразование *.yourdomain.com в один и тот же IP-адрес.

  • CNAME-запись. Полное имя CNAME:Canonical Name, обычно называемые записями псевдонимов. Если вам нужно указать доменное имя на другое доменное имя, которое, в свою очередь, предоставляет IP-адрес, вам необходимо добавить запись CNAME.

  • МХ записи. Запись почтового обмена используется для направления сообщений электронной почты, оканчивающихся на это доменное имя, на соответствующий почтовый сервер для обработки.

  • записи НС. Записи сервера доменных имен.Если вам нужно передать имя поддомена другим DNS-серверам для разрешения, вам необходимо добавить записи NS.

  • Рекорды АААА. Используется для указания адреса IPv6, соответствующего имени хоста (или имени домена), обычно не используется.

  • ТХТ записи. Заполнять можно что угодно, длина ограничена 255. Подавляющее большинство записей TXT используются для записей SPF (анти-спам), а роль записей MX заключается в том, чтобы указать отправителям, какие почтовые серверы для определенного доменного имени. Роль SPF противоположна MX.Он указывает получателям, какие почтовые серверы одобрены определенным доменным именем для отправки почты.

  • Явный URL. Явные записи URL-адресов необходимо добавлять при переадресации 301 (также называемой «постоянной передачей») с одного адреса на другой.

  • Неявный URL. Переход с одного адреса 302 (также называемый «временным переходом») на другой адрес требует добавления неявной записи URL. Он похож на явный URL-адрес, за исключением того, что неявный URL-адрес не изменяет доменное имя в адресной строке.

При заполнении различных записей мы также столкнемся со специальным пунктом настройки —TTL, Время жить.

TTLУказывает время кэширования записи разрешения на DNS-сервере.Единица времени — секунды, обычно 3600 секунд. Например: при посещенииnews.qq.comЕсли запись отсутствует в кеше DNS-сервера, будет сделан запрос к NS-серверу, и после получения записи запись будет сохранена на DNS-сервере.TTLпродолжительность времени, вTTLДоступ в течение срока действияnews.qq.comDNS-сервер сразу перейдет к предыдущей записи.

Интеллектуальное разрешение DNS

Основная задача DNS состоит в том, чтобы завершить доменное имя для IP, но это не просто в размере изображения. При настройке DNS Parsing у нас есть дополнительные потребности, такие как:

  • Преобразовать доменное имя в несколько IP-адресов

Например, на нашем веб-сайте есть несколько интерфейсных компьютеров, и мы надеемся, что при посещении пользователями они могут быть случайным образом распределены по этим компьютерам, чтобы увеличить пропускную способность веб-сайта. Одним из решений является установка нескольких записей A для одного и того же доменного имени и назначение их разным IP-адресам.

  • Анализировать разные запросы к разным IP-адресам на основе различий в функциях (интеллектуальный анализ)

Структура отечественного Интернета на самом деле гораздо сложнее, чем мы представляли. В основном он разделен на несколько параллельных сетей в соответствии с различными операторами. Только на нескольких фиксированных узлах будут пересекать эти параллельные сети. Например, взаимосвязь между China Telecom и China Unicom осуществляется через «Доступ к тому, что« Backbone Интернета на национальном уровне прямой связи ». В настоящее время мы построили в общей сложности три партии на национальном уровне в Интернете прямые точки соединения:

1. Первая партия была введена в эксплуатацию в 2001 году: Пекин, Шанхай, Гуанчжоу.

2. Вторая партия была введена в эксплуатацию в 2014 году: Чэнду, Чжэнчжоу, Ухань, Сиань, Шэньян, Нанкин, Чунцин.

3. Третья партия будет введена в эксплуатацию в 2017 году: Ханчжоу, Гуйян/Гуйань, Фучжоу.

В настоящее время образовательная сеть может быть подключена только через три точки в Пекине, Шанхае и Гуанчжоу. Такая топология сети создает новые проблемы для разрешения DNS.

Традиционное разрешение DNS не определяет источник посетителя, а случайным образом выбирает один из IP-адресов и возвращает его посетителю. Если телекоммуникационные пользователи используют China Unicom IP для доступа к веб-сайту, результат, естественно, не такой быстрый, как при использовании телекоммуникационного IP-доступа. С другой стороны, интеллектуальное разрешение DNS будет определять исходные характеристики посетителей и возвращать разные IP-адреса для разных посетителей, что может уменьшить задержку разрешения и повысить скорость доступа к сети. Например, известный отечественный поставщик услуг DNS может не только различать сетевых операторов, но и устанавливать разные строки разрешения в зависимости от географического положения посетителей и даже устанавливать конкретные адреса разрешения для поисковых систем.

  • Разница между CNAME и записью A

Согласно предыдущему объяснению, запись A предназначена для преобразования доменного имени в IP-адрес, а запись CNAME — для преобразования доменного имени в другое доменное имя, и их функции аналогичны. Но CNAME добавляют промежуточный уровень между доменными именами и IP-адресами, что может обеспечить большую гибкость, особенно когда вы хотите использовать эти доменные имена, но не являетесь их владельцем.

Например, когда мы используем услуги CDN, поставщик услуг предоставляет нам адрес CNAME, и мы можем привязать к этому адресу собственное доменное имя, чтобы, если в будущем IP-адрес поставщика услуг изменится, наш собственный домен разрешение имени не будет разрешено. Если необходимо внести какие-либо изменения, пока поставщик услуг корректирует результат разрешения адреса CNAME, все пользователи могут переключаться без ведома.

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

Загрязнение DNS и проблемы безопасности

DNS — это самая ранняя коммерческая крупномасштабная распределенная система.Хотя сейчас она кажется очень полной, при ее фактическом использовании, особенно в сложной домашней сетевой среде, мы все еще сталкиваемся со многими проблемами.

Будучи ранним продуктом Интернета, DNS использует неподключенные протоколы UDP, сокращающие накладные расходы для обеспечения эффективной связи, но при этом не учитываются вопросы безопасности. Поскольку он использует открытый текст UDP, который использует порт назначения 53, синтаксический анализатор DNS идентифицирует единственный критерий пакета, выданного самостоятельно, и если номер порта совпадает, ответ считается правильным без проверки источника. Следовательно, существуют также такие проблемы, как обман DNS, загрязнение кэша DNS, атака масштабирования DNS, а также предоставление «бизнес-возможностей» некоторым региональным операторам.

С этой целью в отрасли предлагается механизм DNSSec (расширения безопасности системы доменных имен, также известный как «расширения безопасности DNS»), который использует криптографические методы, позволяющие клиенту проверить подлинность источника доменного имени и проверить целостность. записи ответа от DNS-сервера доменных имен, а также проверить, не было ли оно подделано во время передачи, и принять ряд мер для обеспечения безопасности передачи данных. Читатели, интересующиеся этой областью, могут следить за нашими последующими статьями.