Это первый раз, когда я участвую в 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
Друзья, писать не легко
Ваша поддержка и поощрение мотивируют меня продолжать делиться и улучшать качество
Хорошо, вот и на этот раз
Технологии открыты, и наш менталитет должен быть открытым. Примите перемены, живите на солнце и двигайтесь вперед.
ямаленький дьяволенок Нежа, добро пожаловать, лайкайте, подписывайтесь и добавляйте в избранное, увидимся в следующий раз~