Communicating between computers is an idea about as old as computers. There are several developers who have created the internet as we know it.
The ARPA and DARPA Nets are given credit with creating computer-to-computer communication over long distance. DARPA (Defense Advanced Research Projects Agency) is the military side that created these connections. DARPA was form in
1958 after the Soviet Union launched Sputnik I and II. In trying to boost the United States space program, they work with civilians to create the ARPANET. The side of DARPA that work with the civilian agencies was ARPA (Advanced Research Projects Agency). See the included diagram for the first design of ARPANET. When I attended Indiana University, they still had one ARPANET terminal, but someone was usually at the terminal playing a “Star Trek” game because once he left if he came back in, the game would put him at a certain location with his shields down. So maybe only two or three people were on the system so they would not lose their place in the game.
In 1960, Robert Taylor left as ARPA Director and went to work for XEROX Parc. There, he worked with other developers to create Ethernet to connect computers to the XEROX printers. Many claim that XEROX invented the internet, others claim that the military did. Robert Taylor says that it was a combination of the two. He left ARPA to push the development and deployment of the internet in 1960. Without the contribution of both, the internet is what we have today.
Ethernet was s straight line connection with packets being transmitted from one location to another through long cables. The alternate method was the Token Ring as developed by IBM and used by Apollo Systems. It was used for local area networks and sent the packets around a closed loop network until the proper address was found and the packet delivered.
Coaxial (Coax) cables were the initial internet cabling we used. Coax cabling is still being used in connecting televisions to either a cable network or satellite dish. When used for a computer network, the cabling was one line for each row/chain of computers. To terminate the row, there was a cap on the end. We did find out the hard way how important that cap is because the person at the end of one chain started playing with it by taking off and then putting back on the cap. The whole chain of computers would lose internet connection during these incidences. Ethernet has gone away from coaxial cables to a type very similar to phone cables, with a larger capability. The latest standards are Category 5 and Category 6 (Cat 5 and Cat 6) cables. To handle higher speeds, the IEEE has created new standards for shielding.
TCP/IP means Transmission Control Protocol/Internet Protocol. Since TCP is part of the Transport layer, some people say “Transport” instead of “Transmission.” The TCP layer divides the item it is to transfer into packets on the sending end and reassembles these packets on the receiving end. The IP layer takes care of the addressing of where each packet should be sent and recognizing the packet address on the receiving end. This is the lowest level of information transmission and is the agreed upon protocol for most transmissions. The IP layer is used by all transmissions, but sometimes the iSCSI layer is used instead of the TCP layer for remote device control.
There are seven layers to the TCP/IP protocol. They are:
The chart above includes pointers to defining documents, usually developed by “standards” organizations. In the United States, there were/are two main bodies for developing standards. They are both part of the International Standards Organization (ISO), which often uses standards developed by these two organizations.
- ANSI (American National Standards Institute) – where standards are created in the United States. In May 1961, Bob Bemer of IBM proposed ASCII (American Standard Code for Information Interchange) as a standard for Character interchange between computers. Until this time, even IBM had multiple character sets, the most common being EBCDIC. ASCII uses the first 127 codes of an 8-bit byte for letters, digits, and commonly used symbols and control characters. EBCDIC had the codes for the same characters, but they were spread out through all 255 8-bit codes.
- IEEE (Institute of Electrical and Electronics Engineers ) – Engineering body that creates standards for engineers to help them do their jobs as efficiently as possible.
IP (Internet Protocol) Masking is an important part of grouping IP addresses. The proposed IP address uses 32 bits as the IP address. The 32 bits are divided into 4 8-bit groups, where each group can be stored in one byte. Each system is given both an IP address and an IP mask, which determines to which network it belongs. Originally, each company that wanted to create a network was given an unique 8-bit code (the first byte of the four bytes). Soon the companies realized this would not work and only the first 127 were allocated for this purpose. The remaining 127 were allocated in other ways.
The File Transmission Protocol (FTP) was one of the first uses of the internet, developed in 1971. Since XEROX was one of the first users of the Internet, it would make sense to be able to transmit files to their printers. This was the main way of transferring files until recently. It is a non-secure transfer, so that anyone who can “snoop” on the transmissions can see what is being sent. With the development of the secure (encrypted) shell (SSH), the file transfer protocol that is preferred is the SSH File Transfer Protocol or Secure File Transfer Protocol (SFTP).
E-mail (electronic mail) was also an early development of the internet. It was a way to send messages from one person to another. In the “old” days, it used a method like FTP to transfer a message from one location to another location, between two hubs that communicated with each other. At first these hubs were private businesses, like Tektronix for the Northwest. All messages had to go through these hubs. For example, if an e-mail message went from Intel in California to Intel in Oregon, it went through Tektronix. After Tektronix received a phone bill for over $30,000 for one month, they started pushing for how the internet was operated. The way messages were sent was to specify each hub that had to be touched along the way from your system to the destination in the form of:
name@<destination>!...!<hub 2>!<hub 1>
where the name@<destination> is identical to the way we now write e-mail addresses. The !…!<hub 2>!<hub 1> were the hops it had to take to get to the destination. Hub 1 was the closest hop from the sender and was stripped off when transferring to hub 2. Fortunately, there were ways to track down the hops taken as listed in the e-mail header to determine how this address should be created to send a message back to the person who sent you the message.
Until HTTP (Hypertext Transmission Protocol) was invented, the only real way of sending documents of non-text information was via ftp. In 1989, Tim Berners-Lee at CERN started to develop a method for sharing hypertext documents over the internet. He also need to create a markup language for his hypertext transmissions. Markup languages were used in document preparation prior to the development of HTML. They usually have instructions within an opening less than and a closing greater than symbol. The closing of the text that needed to be modified by the instruction was the same grouping with a forward slash in front of the instruction. For example, the header for this section would look like:
<h2><a id="HTTP" name="HTTP"></a>HTTP</h2>
where the <h2> represents a header level 2 and the information within the <a represents anchors so that I can jump to this location from other sections of my page. In 1993, NCSA Mosaic was the first internet browser to take advantage of many of the features available through the HTTP interface. It is given credit for popularizing the World Wide Web (WWW).
These are all types of a Uniform Resource Identifier (URI). The URI is the general way of addressing a resource. Uniform Resource Locator (URL) is the “physical” location or address of a resource, with a full specification. It is usually what you see in the address bar of a browser. A Uniform Resource Name (URN) is the name given to a resource. URI’s are most often either an URL or URN. The World Wide Web Consortium has the specifications for URI’s, URL’s, and URN’s. Please note that the World Wide Web Consortium (W3C) and the World Wide Web Foundation appear to be two independent organizations.
The Uniform Resource Citation (URC) appears to be the latest addition to this group. It is the attributes to the URI. This could come in the form of data, like the real document that the URL and/or URN references.
The nice aspect about an URI having such a wide-range of definitions is that it can serve as a way to have the developer serve a different item for the same URI, depending on the location of the requester. For example, a requested URI can be delivered in different languages, depending on the preference of the user. For this to happen, the URI must be a Uniform Resource Name that is not tied down to a specific location. The Content negotiation utility will determine which exact URL will fulfil the request. Mozilla Developer Network has an excellent description of Content negotiation. Using Mozilla’s homepage as an example:
If I type in: https://developer.mozilla.org Mozilla will bring up: https://developer.mozilla.org/en-US/
so that I can read the page in US English. What I type in is a URI that appears to be a URL. The second is the actual URL of the page that is given to me, which happens to also be the new URI.
Communication between a controller and resources can either be done where the controller knows the status of the resource and can communicate based on that knowledge (SOAP). RESTful communication expects the controller knows nothing about the status of the resource and sends full commands to the resource any time something has to be done.
This section will be added later. One resource for using SOAP with Java is here. Most of the examples I have seen are with JAVA applications and snippets.