Добрый день, подскажите пожалуйста, как выглядит код пакетов ftp -> tcp -> ip -> ethernet
Когда мы собираемся отправить файл на какой-то адрес, что происходит в ОС и после в процессоре?
Дмитрий:подскажи, пожалуйста, а в более цифровом формате есть всё это дело?
например, код, где, как я предполагаю рассчитывается длина массива файла,
после как к этой переменной массива добавляется один байт, после как к этому делу добавляется ещё адрес, а вот после не совсем понял, что там добавляется.
это всё в виде объекта в конечном итоге выглядит?
а то в литературе всё образно описывается, на фантазию в рамках определенной логики.
После TCP ничем не отлечается от других TCP пакетов. www.indigoo.com/dox/itdp/07_FTP-TFTP/FTP.pdf
Простыми словами на сервер идут короткие команды с CRCF в конце.
По порту FTP идет авторизация, запрос файла, потом FTP сервер назначает еще один TCP порт для приема данных, и клиент подключившысь их достает.
скажи, пожалуйста, это всё дело на Си написано?
у этого процесса есть же код, как он по этапно всё делает, создавая объект и добавляя туда массив, адрес и прочее?
Евгений: а как или где в коде увидеть, как протокол ftp делит файл на части, а после код, как tcp берет одну из этих частей и отправляет уже к протоколу ip?
Ingernirated Простите, но уровень ваших вопросов предполагает объяснение слишком многих вещей. Как если бы первоклассник спросил: «Почему ездит машина?» Пришлось бы объяснять слишком много вещей... Да и то было бы проще.
Вы уже не первый раз задаете этот вопрос. Поясните хоть с какой целью он вас интересует. Вам в этом все равно не разобраться без знания основ сетей, сетевых протоколов и программирования. Даже не знаю, с чего бы я начал в вашем случае. С чтения какой-нибудь книги, но какую именно затрудняюсь советовать. Для начала, изучить какой-нибудь язык программирования.
Допустим, достаточно легко изучить Python. Книг по нему - масса. Затем, на Python написана масса клиентов и серверов FTP. Даже в стандартную библиотеку входят. Можно их код посмотреть, если вас интересует реализация.
Евгений: хочется понять, увидеть суть процесса, суметь воссоздать, читаю статьи, темы разные, но там как обобщенно всё и каждый раз появляются из-за этого вопросы.
так уж вышло, что моим первым языком стал js, который в этом деле на уровне node.js меня на хер послал и более, чем копировать примеры, не получается.
А на машинном коде все эти команды отправки данных одинаковы?
Например, если я напишу его на Си или на Питоне(и любом другом языке), в машинном коде эту будут всё те же одинаковые нули и единицы, просто исполненные на внешне разных языках?
Ingernirated: Инструкции могут быть немного различными, но суть их будет одинаковой. Если вы и я понимаем одно и то же под инструкциями. Допустим, код на C выполнит меньше инструкций, чем код на JS или Python, но суть этих инструкций будет совершенно одинаковой: зарезервировать буфер, записать в него команду или данные, вызвать ядро, чтобы оно отправило содержимое буфера по сети. Ядро уже будет само разбивать там по пакетам TCP/IP, потом по фреймам Ethernet, говорить сетевой карте что, как и куда отправить.
Ну, на JS наверное тоже можно написать клиент и сервер FTP. Возможно, что они даже существуют. Но если вас реально интересует, как все устроено, то лучше начать с изучения архитектуры компьютера (не зря же про машинные команды вопрос задаете), языка C (так как на нем написано ядро ОС и большинство системных программ, а также большинство серверов FTP и не только), потом книги о сетевом программировании (Стивенс считается эталонной, но он будет слишком тяжелым для вас сейчас). Как минимум на год работы хватит.
В одном ответе или комментарии на ваши вопросы не ответить, да и не даст вам это ничего.
Евгений: подскажите, пожалуйста, ещё про алгоритмы, взялся как-то почитать книгу, а там как бы не с сотой страницы непонятные вещи начались, а уже с первых.
Есть какой-нибудь автор попроще, может я просто не на того нарвался?
Ingernirated: Не знаю, но думаю, что здесь много раз этот вопрос задавали. Если знаете английский, на Khan Academy есть хороший вступительный курс, как раз с примерами и заданиями на Javascript
Евгений: тысяча извинений, можно ещё буквально один вопрос?
как по кабелю можно отправить пакет, который весит минимум 46 байт?
разве в кабеле данные передаются не сигналами, которые в итоге передают 0 и 1, но это же за раз 1 бит, а пакет 46 байт, как так выходит?
Как вы в автомате за кофе платите 20 рублей, если у вас в кошельке по одному рублю? Засовываете в монетоприемник по одному рублю. Так и здесь. Притом все многократно описано в литературе, полный процесс, как это происходит.
Евгений: т.е. порядка сотен тактов процессора уходит, чтобы на 101-ом такте отправилась единица или ноль по нужному адресу и примерно столько же тактов, чтобы принять, проверить и записать бит?