В чем заключается работа человека в web и с сетями?

What up, программач.

У меня не хватило толку составить вопрос адекватно, по этому суть в описании.
Сразу хочу сказать, что фронт энд не интересует.
Если я хочу заниматься сетями, скриптами, сервер сайд программированием, безопасностью, то на что следует обратить внимание?
1. Что то низкоуровневое типа C, теории вычислений, компиляторов и изучения детально стека протоколов + какой-то скриптовой язык.Комбинаторика, криптография.
2.Более высокоуровневые вещи, типа JS, Python, Ruby + фреймворки.
  • Вопрос задан
  • 1134 просмотра
Решения вопроса 2
nextel
@nextel
ненавижу javascript
как по мне так если прям серьезно заниматься сетевым программированием обязательно знать с, cpp хотя бы для того чтоб писать на них шустрые ядра для каких нибудь обвязавающих библиотечек на скриповых языках типа питона для более легкого лиспользвоания.
принцип примерно такой:
поставлена/ придумана какая то хитрожопая задача(для стандартных задач давно уже написаны офигенные библиотеки накаком хочешь языке), например передать мертвых шлюх по udp протоколу с минимальными потерями, что для этого надо сделать? прально писать свою реализацю протокола udp с проверкой на ошибки типа UDPDeadWhore.0.2beta а потом просто мастерить к ней обвязки в на языке который используется в текущем проекте...... PROFIT.

А нужный стек познается и набирается в процессе на реальных задачах, академические знания конечно хорошо, но это не спасет от тучи граблей на практике.
Ответ написан
@throughtheether
human after all
Спасибо, что "призвали" в тред, и извините за задержку с ответом.

Отвечаю на вопрос, вынесенный в заголовок,
В чем заключается работа человека в web и с сетями?

Web и сети (интернет) - две большие разницы, как говорят в Одессе.
В любом случае стоит знать, как между двумя хостами в сети передаются данные. Как инкапсулируются пакеты, мультиплексируются каналы, разделяются ресурсы и так далее. То есть знать азы Ethernet, IP, TCP, UDP и вспомогательных протоколов вроде ARP, ICMP, DNS. Как пользоваться сокетами, какие есть подходы к реализации сетевых приложений. Как и зачем использовать криптографию (криптографические примитивы, для чего нужны, как их сочетать). Как и для чего использовать модели TCP/IP и OSI. Начальная диагностика сети.

Далее, в случае изучения сетей стоит обратить внимание на маршрутизацию (какая бывает и зачем нужна, откуда столько протоколов маршрутизации и чем различаются, протокол маршрутизации как распределенная система), коммутацию (Ethernet - каким и для чего был создан, каким стал, отличие коммутации Ethernet и маршрутизации IP, есть ли компромиссный вариант), фаерволлы (почему так называются, какую задачу решают, какие бывают), побочные вещи вроде NAT и тоннелей. Какие и где есть потенциальные слабые места.

Если вас привлечет прикладной бэкэнд, то стоит изучить работу веб-сервера, прослойки между ним и вашим приложением, базы данных, кэширования. Здесь вообще можно попробовать написать самому весь стек, хотя бы на Python.

Математическая и алгоритмическая подготовка пригодится везде. Касательно языков - Python хорош универсальностью (под практически любые цели из вашего списка годится), C интересен вкупе с архитектурой компьютера и ОС.

Касательно безопасности - мне представляется само собой разумеющимся, что перед тем, как изучать возможные атаки (т.е. попытки заставить систему работать в нестандартном режиме), необходимо уяснить в деталях, каков обычный "рабочий" режим.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ollisso
построение сетей, создание протоколов, написание низкоуровневых протоколов общения с сервером, нагрузка и тп, то :
> 1. Что то низкоуровневое типа C, теории вычислений, компиляторов и изучения детально стека протоколов + какой-то скриптовой язык.Комбинаторика, криптография.

Причём стек в обязательном порядке.

Если же вы хотите реализовать сервисы, то высокоуровневые вещи, но там фактически вам мало придётся заниматься сетями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы