С чем вообще взаимодействует программист при работе с TCP/IP
Пытаюсь освоить теорию по tcp/ip, конкретно TCP. Но, блин, столько воды и теоретической чепухи. Неделю смотрю и читаю, но ответов конкретных найти не могу. Нужно чтобы более опытные люди расстолковали несколько вопросов, в понимании которых я не уверен. Правильно ли я их понимаю:
- Для отправки сообщения по протоколу tcp мне нужно создать сокет, указать протокол tcp, соеденить с сокетом получателя и когда я отправляю сообщение методом send, я просто вкладываю туда сообщение составленное по правилам того протокола, который мне необходим. Так ли это? (Интересует суть вопроса, не готовые библиотеки)
- Капался в исходниках класса socket в dart. Реализации методов socket api таких как bind, connect и тп нет, есть обьявления методов в абстрактном классе и они обозначены как external. То есть их нет в библиотеке. Значит-ли, что реализация этих методов написана на с++ например, и вообще является частью api операционной системы? Значит-ли это что мне туда лезть не надо а все что язык дает мне, это создать сокет соединение и послать в него сообщение, а низкоуровневые дела делает компилятор? И значит-ли это что все языки высокого уровня дают возможность, через стандартные библиотеки взаимодействовать с api операционной системы, но сама реализация этого взаимодействия отсутствует в коде самого языка и спрятана в компиляторах и интерпритаторах?
- Если все описанное выше, я понял правильно, значит-ли это, что если я хочу применять разные протоколы прикладного уровня как программист, мне нафиг не нужно знать ничего, кроме умения работать с сокетами и знаний как скомпоновать сообщение по тому или иному протоколу?
Источник: Stack Overflow на русском