На какъв език се предават данните по интернет?

За да поясня, аз съм начинаещ програмист и имам много основен въпрос. Ако процесорите разбират само машинния език, тогава езиците от по-високо ниво трябва да бъдат "преведени" или "интерпретирани", преди да бъдат представени на процесора. Въпросът ми е на какъв език са данните, които се изпращат по интернет? Изпраща се на машинен език или на език от високо ниво?

Опитвам се да разбера как компютрите си говорят помежду си и как данните се предават между тях на ниво бит/байт.

Благодаря предварително.


person JeannieZucchini    schedule 15.08.2014    source източник
comment
en.wikipedia.org/wiki/Internet_protocol_suite и en.wikipedia.org/wiki/Transmission_Control_Protocol Дон Не бъркайте изпълним код с данни. Интернет не предава код. Това е еквивалентът на пощенската система. Ако нещо се побере в плик или кутия, то ще бъде изпратено през системата. Това нещо не е проблем на мрежата и не трябва да го интересува. просто го интересуват адресите, посочени от външната страна на пакета.   -  person Marc B    schedule 15.08.2014
comment
Що се отнася до езиците от по-високо ниво, те често се предават такива, каквито са, и се превеждат/интерпретират на целевата машина. Друг път ще трябва да се компилират програми за няколко различни типа машини, но това обикновено включва само няколко от най-често срещаните (т.е. Windows, Linux, Mac и т.н.)   -  person Drew McGowen    schedule 15.08.2014


Отговори (2)


TL;DR Краткият отговор е: 1s и 0s

ОБАЧЕ

Това е МНОГО по-сложен отговор и честно казано, ако искате отговора на него, нещо ви е подтикнало да попитате и наистина трябва да знаете сделката. :) Така...

Ретроспекция към класа по телекомуникации

Данните се предават в машинен код. Това са 1s и 0s. Има обаче обща структура, която ще бъде преведена с помощта на език от високо ниво. Това зависи от NIC картата на машината, приемаща байтовия поток, операционната система, която машината използва, и сървъра, приемащ данните. Има много различни нива, от които се обработва заявката.

Мрежовият информационен стек се състои от много различни части, които се описват от OSI модела и варират в зависимост от много различни неща. Нека ви дам един бърз преглед. Обърнете се към http://vlsm-calc.net/models.php, докато обяснявам.

  1. Физическо - Това е предаването на данни в 1s и 0s, или по-скоро съобщения "ON" и "OFF", което се предава по кабела. Самите физически, постоянни електронни токове, които се прехвърлят, се описват от физическия слой.

  2. DataLink – Това е слоят, в който вашите физически сигнали се анализират за първи път. Можете да мислите за това като за вашата NIC във вашата машина. NIC ще вземе тези необработени съобщения и ще определи дали съобщението е за вас (ВАШАТА локална NIC карта получава данни, предназначени за вашия компютър), или дали да го препрати (пакетът е маркиран като трябва да бъде прехвърлен към локална машина във вашия LAN).

  3. Мрежа - Добре, така че това е първата точка, в която е изложено истинското пакетиране. Тук се дава структура на съдържанието, сегрегацията се анализира в пакети и т.н. Оттук идва IP (от TCP/IP). Като цяло, използваният протокол определя дали вашите съобщения не са твърди връзки или заявка без връзка и т.н.

  4. Транспорт (TCP/UDP) – Това е мястото, където истинската същност на вашата заявка се конструира/анализира. Това определя дали вашите пакети са надеждни, наред с много други неща.

... Още слоеве.

Няма да навлизам в големи подробности, защото това е много сложна тема. Повечето пъти бихте взели курс по телекомуникации в колежа, който би ви помогнал да научите целия стек от телекомуникации. Но накратко, данните се изпращат по кабела за 1s и 0s и ще бъдат вградени с побитови данни като контролни цифри, номера на пакети и т.н. След това зависи от вашата машина как ще се справи с това. NIC ще приеме заявката и след това ще излъчи този анализиран поток към сокет на вашата машина (да речем com порт 5035 [това не е правилно, само пример]). Ако има някакво приложение, настроено да слуша този порт (да речем, имате Fiddler, работещ на вашата машина, и чете всички данни, които NIC изтегля). След това можете да анализирате този поток, като използвате произволен език, ако приемете, че имате подходящо приложение за драйвер, настроено да управлява връзката към този порт.

Съжалявам, вървях по твърдата граница между това да ви дам много информация и същевременно да се опитвам да я направя лесна за разбиране. АКО наистина се интересувате да разберете как се предават данни, СИЛНО бих ви препоръчал да си купите някои книги/да вземете курс и наистина да отделите време, за да разберете. Ще научите някои много ценни взаимодействия с реализации на мрежов хардуер/ОС/браузър. :) Бих се позовал и на Как да разбирам мрежовите протоколи?.

Обяснението, дадено там, е МНОГО задълбочено. :)

person Kyle Richter    schedule 15.08.2014

Коментарът на @Marc B всъщност трябваше да бъде отговор.

Мисля, че бъркате два термина тук: изпълним код и данни. Когато говорите за машинно изпълнение на нещо, това включва код, програма или машинен език, както споменахте.

Когато говорите за две крайни точки (компютри, смартфони), които комуникират помежду си през интернет, става дума за данни и протокол.

И така, за да отговоря на въпроса ви - данните по интернет се прехвърлят в битове (обикновено опаковани в пакети) и тъй като двете крайни точки имат консенсус по отношение на протокола, те разбират какво съдържат данните (което може да бъде всичко, наистина) и след това консумират то съответно.

Препоръчително четене: Интернет работа с TCP/IP, том първи от Дъглас Комер

person Niks    schedule 15.08.2014