1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yaoyunpeng-java_senior_development_engineer_interview_notes

Клонировать/Скачать
part1-网络协议.txt 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.06.2025 19:58 b8b6f40
1, TCP/IP
# TCP/IP протоколы: для того чтобы компьютеры и сетевые устройства могли общаться друг с другом, они должны использовать одинаковые методы. Например, как определить адрес получателя, кто инициирует соединение, какие языки общения использовать и как завершить общение. Все это требует определенных правил, то есть протоколов. В протоколах содержится множество информации, от спецификаций кабелей до методов выбора IP-адресов, поиска удаленных пользователей, последовательности установления соединения и шагов обработки для отображения веб-страниц.
## Все эти протоколы, связанные с Интернетом, объединены в TCP/IP.
# Слои TCP/IP: одним из важнейших аспектов TCP/IP является его слоевая структура. Слои делятся на четыре: прикладной слой, транспортный слой, сетевой слой и слой данных.
# Преимущества слоев: если Интернет был бы управляем одним протоколом, то проблема в одном месте могла бы привести к проблемам во всем. Слои позволяют заменять только те слои, которые имеют проблемы или требуют изменений, что делает конкретные дизайны более простыми.
# Прикладной слой: верхний слой системы, определяющий правила взаимодействия между приложениями. TCP/IP протоколы включают множество общих прикладных служб, таких как:
# FTP: протокол передачи файлов
# DNS: протокол доменных имен
# HTTP: протокол веб-приложений
# SMTP: протокол электронной почты # WebSocket: протокол WebSocket
# Эти несколько являются наиболее распространенными, но существует множество других протоколов, заинтересованные могут найти дополнительную информацию в специализированных книгах.
# Транспортный слой: обеспечивает передачу данных между двумя компьютерами в сети, включая два различных протокола: TCP и UDP.
# TCP: протокол управления передачей, передающий данные в виде сегментов сообщений, обеспечивает надежную передачу данных по соединению.
# Для удобства передачи большие блоки данных разбиваются на сегменты сообщений, а TCP протокол подтверждает, что данные были успешно переданы получателю. Для обеспечения надежной передачи используется стратегия трехстороннего рукопожатия (это можно рассматривать как многократное подтверждение для обеспечения надежности передачи данных).
# UDP: передающий данные в виде пакетов пользовательских данных, обеспечивает передачу данных с максимальными усилиями, но не гарантирует надежность.
# Сетевой слой: также известен как слой сетевого соединения.
# Обрабатывает пакеты данных, передающиеся в сети (упаковка). Пакет данных является минимальной единицей передачи данных в сети. Этот слой определяет, по какому пути данные будут переданы на компьютер получателя.
# Слой данных: также известен как слой данных и слой сетевых интерфейсов. # Обрабатывает аппаратную часть, подключающуюся к сети. Например, управление операционной системой, драйверами аппаратуры, сетевыми адаптерами и оптоволоконными кабелями. # Упаковка данных: пользовательская сторона отправляет запрос, начиная с уровня приложений и до уровня канала; каждый уровень добавляет заголовок, соответствующий этому уровню. Наоборот, при передаче данных на приемной стороне каждый уровень удаляет свой заголовок, что называется упаковкой данных.## HTTP/HTTPS
### HTTP-протокол
HTTP-протокол используется для связи между клиентом и сервером. Сторона, которая запрашивает доступ к ресурсам, называется клиентом, а сторона, которая предоставляет ответы на запросы, называется сервером.
#### Структура запроса:
- **Запросная строка**: POST /index.html HTTP/1.1
- **Метод запроса**: GET, POST, PATCH, PUT, DELETE, HEAD и т.д.
- **URL запроса**: определяет путь к ресурсу.
- **Версия протокола HTTP**: HTTP 0.9, HTTP 1.0, HTTP 1.1, HTTP 2.0
- **Заголовок запроса (Request Header)**
- **Accept**: Заголовок, который сообщает серверу, какие типы ответов клиент готов принять. Пример: Accept: text/plain
- **Accept-Charset**: Поддерживаемые кодировки символов. Пример: Accept-Charset: utf-8
- **Cookie**: Используется для хранения сессии пользователя.
- **Referer**: URL, с которого был сделан запрос.
- **User-Agent**: Тип браузера, который может быть полезен для сервера при формировании ответа.
- **Host**: Хост и порт из исходного URL.
- **Connection**: Указывает, требуется ли поддерживать соединение. Если значение "Keep-Alive" или используется HTTP 1.1, соединение будет поддерживаться.
- **Тело запроса**
- Между заголовком запроса и телом запроса есть пустая строка, которая указывает на окончание заголовка. Тело запроса может содержать строку запроса, например: username=cmc&password=1234 или {'username':'cmc','password':'1234'} и т.д.#### Структура ответа:
- **Строки состояния**: HTTP/1.1 200 OK
- **Версия протокола HTTP**: HTTP 0.9, HTTP 1.0, HTTP 1.1, HTTP 2.0
- **Код состояния ответа**:
- **1xx**: Сообщения, обычно информирующие клиента, что запрос получен и обрабатывается.
- **2xx**: Успешное выполнение запроса, обычно указывает на то, что запрос принят, обработан и завершен.
- **3xx**: Перенаправление на другой URL, требующее дополнительного запроса от клиента.
- **4xx**: Ошибка, вызванная клиентом, например, запрос на несуществующий ресурс или недостаточное разрешение.
- **5xx**: Ошибка, вызванная сервером, например, исключение, ошибку маршрутизации или несовместимую версию HTTP.
- **Заголовок ответа**:
- **Access-Control-Allow-Origin**: указывает, какие сайты могут использовать кросс-доменные资源共享, Access-Control-Allow-Origin: *
- **Set-Cookie**: сервер устанавливает HTTP cookie для клиента, Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1
- **Expires**: указывает дату/время, после которого ответ считается просроченным, Expires: Thu, 01 Dec 1994 16:00:00 GMT
- **Server**: имя сервера, Server: nginx/1.6.3
- **Content-Encoding**: используемый для кодирования ответа ресурса, Content-Encoding: gzip
- **Content-Language**: язык содержимого ответа, Content-Language: zh-cn
- **Content-Length**: длина тела ответа, выраженная в восьмеричных байтах
- **Основное содержание ответа**:
- **Содержимое, возвращаемое сервером, включая веб-страницы, изображения и т.д.**
- **Протокол HTTPS**:
- **Недостатки HTTP**:
- **Отсутствие шифрования**: HTTP не обеспечивает шифрование данных, что делает их уязвимыми для перехвата.
- **Отсутствие аутентификации**: HTTP не предоставляет механизмов для аутентификации сервера или клиента.
- **Отсутствие защиты от подделки**: HTTP не обеспечивает защиту от подделки данных, что делает его уязвимым для атак. # использует нешифрованный текст (не зашифрованный), что может привести к перехвату данных
# не проверяет идентичность сторон, что может привести к подделке
# не гарантирует целостность сообщений, что может привести к их модификации
# существуют уязвимости в некоторых веб-серверах и веб-браузерах
# детальное объяснение протокола HTTPS: http://blog.csdsn.net/u014044812/article/details/79571927
3,WebSocket
#WebSocket protocol — это новый протокол HTML5, который обеспечивает полудуплексное соединение между браузером и сервером. Начальная установка соединения выполняется с помощью HTTP-запроса, а после установки соединения обмен данными осуществляется с помощью фреймов.
#Википедия: https://zh.wikipedia.org/wiki/WebSocket
#Рекомендуемая статья: https://www.cnblogs.com/lizhenghn/p/5155933.html
4,HTTP/2
#Википедия: https://zh.wikipedia.org/wiki/HTTP/2

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yaoyunpeng-java_senior_development_engineer_interview_notes.git
git@api.gitlife.ru:oschina-mirror/yaoyunpeng-java_senior_development_engineer_interview_notes.git
oschina-mirror
yaoyunpeng-java_senior_development_engineer_interview_notes
yaoyunpeng-java_senior_development_engineer_interview_notes
master