вопросы на собеседовании в компьютерной сети

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

Это первый раз, когда я участвую в Gengwen Challenge.30День, подробности о событии уточняйте:Обновить вызов

вопросы на собеседовании в компьютерной сети

Давайте рассмотрим то, что мы поделились в прошлый разmongodbустановка и использование

  • mongodbвведение
  • mongodbКак установить
  • mongodbКак это использовать просто
  • Как работает ГОmongodb

если дляmongodbЕсли вы заинтересованы, вы можете проверить статьюОдна статья, чтобы узнать об установке и использовании mongodb в GO

Давайте посмотрим на вопросы интервью сегодня

вопросы на собеседовании в компьютерной сети

Сетевой порядок байтов:

Режим с прямым порядком байтов, младший адрес сохраняет старший байт

Собственный порядок байтов:

Режим Little endian, низкий адрес сохраняет младший байт

трехстороннее рукопожатие

  • Активно инициировать завершение соединения, отправить флаг SYN как запрос на установление соединения. Серийный номер переноса, размер байта данных (0), размер скользящего окна
  • Пассивный приемник, отправкаACKОтвет, флаг SYN. Серийный номер переноса, размер байта данных (0), серийный номер подтверждения, размер скользящего окна
  • Активно инициировать соединение, отправитьACKОтвет с серийным номером подтверждения

помахал четыре раза

  • Активно закрыть соединение, отправить FIN,
  • Пассивный конец, отправитьACK. -- наполовину закрытый
  • Пассивно закрыть терминал, отправить FIN
  • Активно закрыть конец, отправитьACKОтвет -- все соединения закрыты

Что происходит, когда третье рукопожатие TCP терпит неудачу

если в это времяACKПотерян в сети, по истечении таймера тайм-аута сервер повторно отправитSYN+ACKСумка

Количество повторных передач зависит от/proc/sys/net/ipv4/tcp_synack_retriesуказать, по умолчанию5второсортный

Если указанное количество повторных передач истекло, оно все еще не полученоACKОтветьте, затем через некоторое время Сервер автоматически закроет соединение

Но Клиент считает, что это соединение установлено, еслиClientконецServerЗапишите данные, серверная сторона будет использоватьRSTпакетный ответ, может быть воспринятServerошибка.

Сервер не выполняет повторную передачу при сбоеackсообщение, но отправлено напрямуюRTSсегмент, введитеCLOSEDусловие

цель сделать этосостоит в том, чтобы предотвратитьSYNнаводнение

Разница и преимущества и недостатки длинного соединения и короткого соединения

Длинное соединение: подключиться -> передать данные -> сохранить соединение -> передать данные -> …………..-> пока одна сторона не закроет соединение, в основном клиент закрывает соединение

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

  • преимущество

Длинные соединения могут сэкономить большеtcp建立/关闭Это может сократить потери и сэкономить время.Для клиентов, которые часто запрашивают ресурсы, это больше подходит для длинных подключений;

  • недостаток

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

короткое соединение

подключить -> передать данные -> закрыть соединение

Например, HTTP — это короткая ссылка без сохранения состояния.Каждый раз, когда браузер и сервер выполняют операцию HTTP, соединение устанавливается, но соединение разрывается, когда задача завершается.

  • преимущество:

Короткие соединения проще для сервера, все существующие соединения являются полезными соединениями, и дополнительный контроль не требуется.

  • недостаток:

Клиент часто подключается и будетtcpтрата времени на настройку и отключение.

раздвижное окно

Отправьте на одноранговое соединение размер буфера этого сегмента в реальном времени, чтобы гарантировать, что данные не будут потеряны.

Возвращаемое значение функции чтения при сетевой связи:

  • = 0

Указывает, что партнер закрыл соединение

  • = -1

судитьerrnoСлучай

  • errno == EAGAIN|EWOULDBLOCK

Установлен неблокирующий режим.При чтении данные еще не пришли.

  • errno == EINTR

прерван сигналом

  • ошибочно == иначе

аномальный

Посмотреть номер порта

netstat -antp

Настройки мультиплексирования портов

int opt = 1; 
setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,(void *)&opt,sizeof(opt));

Половинная скидка (FIN_WAIT_2)

Завершить соединение через4 разаПожать руки

Это делается полузакрытием TCP.(half-close)Вызванный

CLOSE_WAITпроблема со статусом

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

Клиент отправляетFINКогда это происходит, чтение дочернего процесса, обрабатывающего бизнес, возвращает 0, дочерний процесс обнаруживает, что одноранговый узел был закрыт, и напрямую вызывает close(), чтобы закрыть локальный конец.

На самом деле просто сделатьsocketСчетчик ссылок уменьшается на 1,socketне закрывался. в результате чего появляется дополнительныйCLOSE_WAITразъем. . .

Как избежать описанной выше ситуации?

Обработка завершения дочернего процесса должна быть такой:

shutdown(sockfd, SHUT_RDWR);

close(sockfd);

Таким образом будет отправлен FIN сервера, и сокет войдетLAST_ACKстатус, ожидание последнегоACKПриходите, вы можете войти в исходное состояниеCLOSED

Описание функции shutdown()

linuxИспользовать под системуshutdownСистемные вызовы для управления закрытием сокетов

int shutdown(int sockfd,int how);

параметрhowразрешено какshutdownВыберите один из следующих вариантов:

  • SHUT_RD

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

  • SHUT_WR

Закройте сторону записи соединения.

  • SHUT_RDWR

эквивалентно вызовуshutdownдважды: сначала с помощью SHUT_RD, затем с помощьюSHUT_WR

Уведомление:

В многопроцессном, если один процессshutdown(sfd, SHUT_RDWR)Ведь другие процессы не смогут взаимодействовать, если процессclose(sfd)не повлияет на другие процессы

2MSLпродолжительность TIME_WAIT

Он должен появиться в конце активного выключения, чтобы гарантировать, что последнийACKПартнер может его получить.

1.TTLчто это?

TTL — это сокращение от Time To Live.

В этом поле указывается **IPМаксимальное количество сегментов сети, через которые может пройти пакет, прежде чем он будет отброшен маршрутизатором**.

TTLIPv4один из заголовков8 bitполе.

2. Роль ТТЛ

Роль TTL заключается в ограниченииIPПродолжительность существования пакета в компьютерной сети.

Максимальное значение TTL — 255, рекомендуемое значение TTL — 64.

3.TTLпринцип

Несмотря на то чтоTTLВ буквальном переводе, это время, чтобы выжить, ноНа самом деле TTLIPМаксимальное количество прыжков, которое пакет может быть перенаправлен в компьютерной сети..

TTLполе поIPнастройки отправителя пакета, вIPПолный путь пересылки пакета от источника к получателю.

Каждый раз, когда вы проходите через маршрутизатор, маршрутизатор изменяет этоTTLЗначение поля, конкретный метод заключается в уменьшении значения TTL на 1, а затемIPПакет переадресован.

если вIPпосылка прибыла в пункт назначенияIPРаньше значение TTL было уменьшено до 0, и маршрутизатор отбрасывал полученное значение TTL=0.IP``包и кIPОтправитель пакета посылаетICMPОтправка сообщений об истечении времени ожидания.

Преимущества и недостатки модели c/s и модели b/s

к/с модель

преимущество:

Самым большим преимуществом C/S является то, что он может реализовать сложную структуру приложения, высокую безопасность и высокую скорость передачи данных.

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

недостаток:

  • Его непросто развернуть (клиенты устанавливаются один за другим, выбирают платформу)
  • Обслуживание сложно (клиенты должны обратить внимание на обновление)
  • Тяжелая работа по развитию

процесс работы

  • Откройте канал связи, чтобы сообщить хосту, где находится серверный процесс, будет принимать клиентские запросы на порту.
  • Подождите, пока запрос клиента прибудет в порт
  • Сервер получает запрос на обслуживание, обрабатывает запрос и отправляет ответ
  • Вернуться к шагу 2, дождаться и обработать запрос другого клиента
  • выключить сервер

b/sМодель

преимущество:

B/S Самым большим преимуществом является то, что его можно использовать в любом месте без установки специального программного обеспечения, если есть компьютер с доступом в Интернет.

Клиент не требует установки и обслуживания. Расширить систему очень просто.

Распределенная, легко расширяемая, надежный обмен

по сравнению с традиционнымC/SПреимущества:

  • 1. Простота развертывания (каждая платформа поставляется с общим браузером)
  • 2. Простота обслуживания (изменения содержимого веб-страницы на стороне сервера могут обеспечить синхронное обновление для всех пользователей).
  • 3. Страница динамически обновляется, а скорость отклика значительно снижается.
  • Небольшие усилия по разработке

недостаток:

  • Не удается кэшировать большие объемы данных

процесс работы

  • пользователь через браузерWebСервер предлагаетHTTPпросить.
  • WebСервер вызывает соответствующий файл по запросу браузера, и после того, как соответствующий файл не обработан или не интерпретирован, чистый клиентHTMLРезультат кода возвращается в браузер.
  • Браузер получаетWebСодержимое страницы, отправленное обратно сервером (чистыйHTMLкод), отображаемый пользователю.

процесс пинга иICMPпротокол

Пример процесса

  • Компьютер A (192.168.2.135) инициирует ping-запрос и пингует 192.168.2.179.
  • Инициирована компьютерная трансляцияARPЗапросить, запросить MAC-адрес 192.168.2.179.
  • Б компьютерный ответARPзапрос, отправить односторонний ответ на компьютер A и сообщить компьютеру A, что его собственный MAC-адрес90:A4:DE:C2:DF:FE
  • Узнав MAC-адрес, запустите настоящий запрос ping.Поскольку компьютер B может знать MAC-адрес источника в соответствии с запросом, отправленным компьютером A, все могут ответить в соответствии с MAC-адресом источника.

Команда ping основана наICMPсоглашение,ICMPНаличие протокола для более эффективной пересылкиIPдейтаграммы и повысить шансы на успешную доставку.

В дополнение к использованию команды pingICMP, в локальной сети, но и с помощьюARPпротокол,ARPсоглашение может быть основано наIPАдрес Определяет MAC-адрес компьютера.

ARPкэшируется, чтобы обеспечитьARPточность, компьютер обновитARPкеш.

ICMP

ICMPДа (Интернет-протокол управляющих сообщений) Интернет-протокол управляющих сообщений.

ICMP协议Это протокол без установления соединения, который является подпротоколом набора протоколов TCP/IP и используется для передачи управляющих сообщений между хостами IP и маршрутизаторами. ICMP — это протокол сетевого уровня.

Основные функции:

  • подтверждатьIPУспешно ли пакет достиг адреса назначения
  • Уведомления отправляютсяIPПричина, по которой пакет был отброшен

Суммировать

  • Три рукопожатия в компьютерной сети, четыре волны
  • Что происходит, когда третье рукопожатие TCP терпит неудачу
  • Преимущества и недостатки длинных и коротких соединений
  • скользящий посттравматический
  • в сетевом общенииread функция
  • что наполовину закрыто
  • Модель C/S и модель B/S
  • ICMP

Друзья, писать не легко

Ваша поддержка и поощрение мотивируют меня продолжать делиться и улучшать качество

Хорошо, вот и на этот раз

Технологии открыты, и наш менталитет должен быть открытым. Примите перемены, живите на солнце и двигайтесь вперед.

ямаленький дьяволенок Нежа, добро пожаловать, лайкайте, подписывайтесь и добавляйте в избранное, увидимся в следующий раз~