forked from goavengers/go-interview
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.md
68 lines (49 loc) · 9.82 KB
/
README.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
## Общие вопросы
### 1. В чем отличие протоколов TCP и UDP? В каком случае UDP предпочтительнее?
__TCP__ – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью.
__UDP__ – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети.
Разница между протоколами TCP и UDP – в так называемой _"гарантии доставки"_.
TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение.
Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм.
TCP исключает потери данных, дублирование и перемешивание пакетов, задержки.
UDP все это допускает, и соединение для работы ему не требуется.
Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями.
TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.
С другой стороны, благодаря такой не избирательности и бесконтрольности, UDP доставляет пакеты данных (датаграммы) гораздо быстрее, потому для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен, UDP можно считать оптимальным протоколом.
К таковым относятся сетевые и браузерные игры, а также программы просмотра потокового видео и приложения для видеосвязи (или голосовой): от потери пакета, полной или частичной, ничего не меняется, повторять запрос не обязательно, зато загрузка происходит намного быстрее.
Протокол TCP, как более надежный, с успехом применяется даже в почтовых программах, позволяя контролировать не только трафик, но и длину сообщения и скорость обмена трафиком.
### 2. Что такое NAT?
Сети обычно проектируются с использованием частных IP адресов.
Это адреса __10.0.0.0/8__, __172.16.0.0/12__ и __192.168.0.0/16__.
Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете.
Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес.
И вот как раз NAT переводит приватные адреса, в общедоступные.
Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов.
Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес.
NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.
### 3. Что такое HTTP и HTTPS, в чем их отличия?
__HTTP__ _(от англ. HyperText Transfer Protocol — протокол передачи гипертекста)_ — это прикладной протокол передачи данных в сети.
На текущий момент используется для получения информации с веб-сайтов.
Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат.
__HTTPS__ _(от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста)_ — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов __SSL__ и __TLS__.
Чем отличаются HTTP от HTTPS:
- HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP с надстройкой шифрования;
- передаваемые по протоколу HTTP данные не защищены, HTTPS обеспечивает конфиденциальность информации путем ее шифрования;
- HTTP использует порт 80, HTTPS — порт 443.
### 4. Что такое SSL и TLS, есть ли между ними отличия?
__SSL__ или слой защищенных сокетов было оригинальным названием протокола, который разработала компания Netscape в середине 90-х.
SSL 1.0 никогда не был публично доступным, а в версии 2.0 были серьезные недостатки.
Протокол SSL 3.0, выпущенный в 1996, был полностью переделан и задал тон следующей стадии развития.
Когда следующую версию протокола выпустили в 1999, ее стандартизировала специальная рабочая группа проектирования сети Интернет и дала ей новое название: защита транспортного уровня, или TLS.
Как говорится в TLS-документации, «разница между этим протоколом и SSL 3.0 не критичная».
TLS и SSL формируют постоянно обновляемую серию протоколов, и их часто объединяют под названием __SSL/TLS__.
Протокол TLS шифрует интернет-трафик любого вида. Самый распространенный вид — веб-трафик.
Вы знаете, когда ваш браузер устанавливает соединение по TLS — если ссылка в адресной строке начинается с «https».
TLS также используется другими приложениями — например, в почте и системах телеконференций.
Самый безопасный метод шифрования — это асимметричное шифрование. Для этого требуется 2 ключа, 1 публичный и 1 приватный.
Это файлы с информацией, чаще всего очень большие числа.
Механизм сложный, но если попросту, вы можете использовать публичный ключ, чтобы шифровать данные, но вам нужен приватный ключ, чтобы расшифровывать их.
Два ключа связаны с помощью сложной математической формулы, которую сложно хакнуть.
Так как в асимметричном шифровании применяются сложные математические расчеты, нужно много вычислительных ресурсов.
TLS решает эту проблему, используя асимметричное шифрование только в начале сессии, чтобы зашифровать общение между сервером и клиентом.
Сервер и клиент должны договориться об одном ключе сессии, который они будут вдвоем использовать, чтобы зашифровать пакеты данных.