3

To clarify, I am a newbie programmer and have a very basic question. If processors only understand machine language, then the higher level languages need to be "translated" or "interpreted" before being presented to the processor. My question is what language is the data that is sent over the internet in? Is it sent in machine language or high level language?

I'm trying to understand how computers talk to each other and how data is transmitted between them at the bit/byte level.

Thanks in advance.

Kyle Richter
  • 406
  • 3
  • 18
  • 3
    en.wikipedia.org/wiki/Internet_protocol_suite and http://en.wikipedia.org/wiki/Transmission_Control_Protocol Don't confuse executable code with "data". The internet doesn't transmit "code". It's the equivalent of the postal system. If something fits inside an envelope or a box, it'll get sent through the system. What that "something" is not the network's problem, and nor should it care. it just cares about the addresses listed on the outside of the package. – Marc B Aug 15 '14 at 14:39
  • As far as "higher-level languages", they're often transmitted as-is, and translated/interpreted on the target machine. Other times, programs will have to be compiled for several different machine types, but this usually only includes a few of the most common ones (i.e. Windows, Linux, Mac, etc) – Drew McGowen Aug 15 '14 at 14:42

2 Answers2

2

TL;DR The short answer is: 1s and 0s

HOWEVER

It's a MUCH more complicated answer, and honestly, if you're wanting the answer to that, something has prompted you to ask, and you really need to know the dealio. :) So...

Flashback to Telecommunications Class

Data is transmitted in machine code. It's 1s and 0s. However, there is a common structure, which will be translated using a high-level language. That depends on the NIC card on the machine accepting the bytestream, the OS the machine is using, and the Server accepting the data. There are many different levels from which the request is handled.

The network information stack is made up of many different pieces, which is described by the OSI model, and which varies based on many different things. Let me give you a quick run down. Refer to http://vlsm-calc.net/models.php as I explain.

  1. Physical - This is the data transmission in 1s and 0s, or rather "ON" and "OFF" messages, which gets transmitted over the wire. The very physical, direct electronic currents being transferred are described by the Physical layer.

  2. DataLink - This is the layer in which your physical signals are first parsed. You can think of this as your NIC in your machine. The NIC will take those raw messages, and determine whether the message is for you (YOUR local NIC card receiving data intended for your computer), or whether to forward it (the packet is tagged as needing to be transferred to a local machine in your LAN).

  3. Network - Okay, so this is the first point at which real packeting is exposed. Here, structure is given to content, segregation is parsed into packages, etc. This is where IP (from TCP/IP) comes from. Generally, the protocol used determines whether not your messages are hard connections or a connectionless request, etc.

  4. Transport (TCP/UDP) - This is where the real meat of your request gets constructed/parsed. This determines whether your packages are reliable, among many other things.

... More Layers.

I'm not going to go into great detail, because it's a very complicated topic. Most times, you would take a telecommunications class in college which would help you learn the whole telecommunications stack. But, in short the data is sent over the wire, in 1s and 0s, and would be embedded with bitwise data such as check digits, package numbers, etc. It is then up to your machine how it handles that. The NIC will take the request, and then it will broadcast that parsed stream to a socket on your machine (say, com port 5035[that's not right, just an example]). If there is some application set up to listen to that port (say, you have Fiddler running on your machine, and reading all of the data the NIC is pulling in). You can then parse that stream using any language you want, assuming you have an appropriate driver application set up to handle the connection to that port.

I'm sorry, I was treading a hard line between giving you lots of information, while still trying to make it easy to understand. IF you're really interested in understanding how data is transmitted, I would HIGHLY recommend you buy some books/take a course, and really spend the time to understand. You'll learn some very valuable interactions with network hardware/OS/Browser implementations. :) I would also refer to How to understand network protocols?.

The explanation given there is VERY thorough. :)

Community
  • 1
  • 1
Kyle Richter
  • 406
  • 3
  • 18
1

@Marc B's comment should have been an answer, actually.

I think you're confusing two terms here : executable code and data. When you talk about machine executing something, that involves code, a program or machine language as you mentioned.

When you talk about two end points (computers, smartphones) communicating with each other over internet, it's about data and protocol.

So to answer you question - the data over internet is transferred in bits (usually packed in packets) and because the two end points have a consensus over the protocol, they understand what the data contains (which can be anything, really) and then consume it accordingly.

Recommended reading: Internetworking with TCP/IP Volume One by Douglas Comer

Niks
  • 4,802
  • 4
  • 36
  • 55