Знание Интернета, необходимое для собеседования

внешний интерфейс сервер TCP/IP опрос

Не говорите ерунды, идите прямо к галантерее.

1. Понятие и роль соглашения

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

2. Семиуровневая модель OSI

Прикладной уровень: обеспечивает интерфейсные службы между сетевыми службами и программным обеспечением конечного пользователя.
Уровень представления: представление данных, безопасность, сжатие.
Сеансовый уровень: устанавливать, управлять и завершать сеансы.
Транспортный уровень: определяет номер порта протокола для передачи данных, а также управления потоком и проверки ошибок.
Сетевой уровень: выполнение логической адресации для реализации выбора пути между различными сетями.
Канальный уровень: установка логических соединений, аппаратная адресация, проверка ошибок и другие функции.
Физический уровень: сетевой кабель, коаксиальный кабель и т. д.

3. Эталонная модель TCP/IP

Часто используемые протоколы:
Протокол TCP/IP называется протоколом управления передачей/интернет-протоколом, также известным как протокол сетевой связи.Он состоит из протокола IP на сетевом уровне и протокола TCP на транспортном уровне.Это большой набор протоколов. .
Физический уровень и уровень канала передачи данных не определяют какой-либо конкретный протокол и поддерживают все стандартные и проприетарные протоколы.
Сетевой уровень определяет сетевое взаимодействие, которое представляет собой протокол IP:
(1) Интернет-протокол (IP): отвечает за адресацию и маршрутизацию пакетов между хостами и сетями.
(2) Протокол разрешения адресов (ARP): Получите MAC-адрес аппаратного хоста в той же физической сети.
(3) Протокол управляющих сообщений Интернета (ICMP): отправка сообщений и отчетов об ошибках передачи пакетов данных.
(4) Протокол управления Интернетом (IGMP): хосты IP сообщают о членстве в группе хостов локальному многоадресному маршрутизатору.
Транспортный уровень определяет TCP (протокол управления передачей) и UDP (протокол пользовательских дейтаграмм).
Уровень приложений определяет такие протоколы, как HTTP (протокол передачи гипертекста), FTP (протокол передачи файлов) и DNS (система доменных имен).
Ниже приводится подробное описание назначения вышеперечисленных слоев:
(1) Физический уровень и канальный уровень. Эти два уровня вместе образуют уровень сетевого интерфейса. Это нижний уровень TCP/IP. Этот уровень не имеет определенного протокола. Он отвечает за прием дейтаграмм с предыдущего уровня. дейтаграмму через базовую физическую сеть.
(2) Сетевой уровень, расположенный между транспортным уровнем и канальным уровнем, используется для передачи данных от исходного хоста к целевому хосту через несколько узлов и предоставляет транспортному уровню самые основные услуги по передаче данных. маршрутизация и подбор.адресная работа. Сетевой уровень только передает данные и не заботится об успехе или неудаче.
Среди множества путей, которые можно выбрать, задачей маршрутизации является выбор кратчайшего пути. В сети каждый компьютер имеет уникальный адрес, по которому его удобно найти другим, этот адрес и есть IP-адрес.
(3) Транспортный уровень, расположенный между сетевым уровнем и прикладным уровнем, является ориентированным на соединение и надежным протоколом связи между процессами.TCP обеспечивает полнодуплексные услуги, то есть данные могут передаваться в обоих направлениях в Разделы образуют группу, называемую сегментом.
TCP (протокол управления передачей), надежный протокол, ориентированный на соединение, но с низкой эффективностью передачи.
UDP (протокол пользовательских дейтаграмм), который является ненадежным сервисом без установления соединения, но с высокой эффективностью передачи.
Функция TCP состоит в том, чтобы упаковывать и передавать данные в сегментах, контролировать последовательность номеров каждого пакета данных, обрабатывать потери, повторную передачу и удаление во время транспортировки, а также управлять потоком, чтобы избежать перегрузки.
Инкапсуляция пакетов TCP, принципиальная схема:

Номер исходного порта и номер порта назначения, компьютер определяет, к какой службе получить доступ через номер порта, например, службу http или службу ftp, номер порта отправителя является случайным портом, а порт назначения определяет, какую программу получит получатель. .
32-битный порядковый номер, TCP помечает пакет данных порядковым номером, чтобы его можно было повторно собрать после достижения пункта назначения.Предполагая, что текущий порядковый номер равен s, а длина отправленных данных равна l, данные отправляются в следующий раз, когда s + l. При установлении соединения компьютер обычно генерирует случайное число в качестве начального значения серийного номера.
Подтверждающий ответ, равный порядковому номеру данных, которые должны быть получены следующими. Если предположить, что серийный номер отправителя равен s, а длина отправленных данных равна l, то номер подтверждения, возвращаемый получателем, также равен s+l. После того, как отправитель получит это подтверждение, можно считать, что все данные до этой позиции были получены нормально.
Длина заголовка, длина заголовка TCP, единица измерения 4 байта.
Управляющий бит, который управляет подключением, передачей и отключением TCP:
Буфер PSH будет заполнен, скорость передачи будет немедленной
RST-соединение разорвано, переподключиться
Аварийный сигнал УРГ
ACK равен 1, чтобы указать номер подтверждения
Когда SYN TCP устанавливает соединение, установите это значение равным 1.
FIN Отправитель завершает бит, и сторона, предлагающая разъединение, устанавливает FIN в 1, указывая на то, что соединение должно быть разорвано.
Срочный указатель, действительный только тогда, когда управляющий бит URG равен 1. Указывает позицию конца срочных данных в разделе данных TCP. Обычно используется при временном прерывании связи (например: ctrl + c)
Значение окна указывает количество сегментов данных, которые могут быть получены локально.Это значение является переменным. Когда сеть нормальная, увеличьте это значение окна, чтобы увеличить скорость передачи; когда сеть нестабильна, уменьшите это значение, чтобы обеспечить надежную передачу сетевых данных. Он управляет потоком в TCP-транспорте.
Размер окна, используемый для указания того, сколько октетов может быть получено с начала ответа. Если размер окна равен 0, может быть отправлен оконный зонд.
Контрольная сумма, вычисление контрольной суммы TCP включает заголовок TCP, данные и другие байты заполнения. При отправке сегмента данных TCP отправитель вычисляет контрольную сумму, а когда он достигает адресата, снова вычисляет контрольную сумму. Если две контрольные суммы согласуются, данные верны, в противном случае данные будут считаться поврежденными, и принимающая сторона отбросит данные.

3. Трехстороннее рукопожатие TCP, известное всем на земле

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

Для удобства мы называем хост 172.16.50.72:65076, который инициирует запрос, как клиент, а хост 172.16.17.94:8080, который возвращает данные, как сервер.
Первое рукопожатие: установление соединения. Клиент отправляет запрос на подключение, отправляет сообщение SYN и устанавливает для seq значение 0. Затем клиент переходит в состояние SYN_SEND и ожидает подтверждения от сервера.
Второе рукопожатие: сервер получает сегмент SYN клиента. Этот сегмент SYN должен быть подтвержден, отправлено сообщение ACK, и для подтверждения установлено значение 1. В то же время вы должны отправить информацию запроса SYN и установить seq на 0. Сервер отправляет всю вышеуказанную информацию клиенту, и сервер переходит в состояние SYN_RECV.
Третье рукопожатие: после того, как клиент получает сообщения ACK и SYN от сервера, он подтверждает их, затем устанавливает ack=1 и seq в 1 и отправляет сегмент ACK на сервер. клиент и сервер переходят в состояние ESTABLISHED и завершают трехэтапное рукопожатие TCP.

4. ПТС махнул четыре раза, чего люди на земле не знают

Первая волна: клиент отправляет сегмент FIN на сервер, устанавливает seq на 160 и ack на 112, в это время клиент входит в состояние FIN_WAIT_1, что означает, что у клиента нет данных для отправки на сервер, и просит закрыть соединение.
Вторая волна: после того, как сервер получит сообщение FIN, отправленное клиентом, он вернет клиенту сегмент ACK.Подтверждение установлено на 1, а последовательность установлена ​​на 112, сервер входит в состояние CLOSE_WAIT, а клиент получает ответ от сервера.После получения сообщения ACK он переходит в состояние FIN_WAIT_2.
Третья волна: сервер будет наблюдать, есть ли у него еще данные для отправки клиенту, если да, то он сначала отправит данные клиенту, а затем отправит сообщение FIN, если нет, то сервер отправит сообщение FIN напрямую. клиенту. Соединение запрошено закрыть, и сервер переходит в состояние LAST_ACK.
Четвертая волна: клиент получает сегмент FIN, отправленный сервером, отправляет сегмент ACK на сервер, устанавливает seq на 161 и ack на 113, после чего клиент переходит в состояние TIME_WAIT; сервер получает сообщение ACK от клиента После текстового сегмента соединение закрывается.В это время, после того, как клиент ждет 2MSL и все еще не получает ответа, это доказывает, что сервер был закрыт нормально, и клиент также может закрыть соединение.

(1) Зачем нужно трехстороннее рукопожатие?

Для того, чтобы гарантировать, что и передача, и прием в норме.

(2) Зачем нужно махать четыре раза?

После завершения передачи данных обе стороны считают, что их можно разъединить.

(3) Почему нам нужно ждать?

FIN, отправленный A B, может быть утерян.

(4) Почему рукопожатие 3 раза, а волна 4 раза?

Когда сервер получает сообщение FIN, скорее всего, он не сразу закроет SOCKET.

5. Что произошло со всем процессом от ввода URL-адреса до отображения веб-страницы?

(1) Введите URL-адрес в браузере клиента;
(2) отправить в DNS (сервер доменных имен) для получения IP-адреса веб-сервера, соответствующего доменному имени;
(3) Браузер клиента устанавливает соединение TCP (протокол управления передачей) с веб-сервером;
(4) Браузер клиента отправляет соответствующий запрос HTTP или HTTPS на веб-сервер с соответствующим IP-адресом;
(5) Веб-сервер отвечает на запрос и возвращает указанные данные URL-адреса или информацию об ошибке.Если установлено перенаправление, он перенаправляет на новый URL-адрес;
(6) Клиентский браузер загружает данные, анализирует исходный HTML-файл, осуществляет верстку страницы в процессе анализа и отображает базовую страницу в браузере после завершения анализа.