The internet is a kind of network that uses a certain protocol (TCP/IP) to send/receive data. This protocol involves sending packets (ie, blocks of data) over the network connection (telephone wire, cable). The data must be formatted in a prescribed way. Besides the basic format of packets, and how you transmit them between computers, there are other protocols that are constructed on top of TCP/IP. For example, there are a certain set of packets used to request the contents of a web page be sent to you from some other computer (which is what your browser uses when you type some web site in the "Address" box and press ENTER). There is another set of packets used to send back that web page (which is what your internet provider's server uses after it gets those packets requesting the web page). This is referred to as Http protocol. There is another set of packets used to create/delete directories on another computer, transfer files among those directories, rename files, and generally do anything in regards to manipulating some directory tree on a remote computer. This is referred to as Ftp protocol.

A software program that accesses the internet traditionally needs to be familiar with the details of all of these protocols so the program knows how to pack/unpack data and send/receive it. There are add-on libraries that provide functions to help send data packets over a network, such as a sockets library like REXX Sock, but you still need to deal with creating/sending/receiving the "header packets" for Http, Ftp, and other protocols built on top of TCP/IP.

But Microsoft decided that there may be a need for some higher level functions that do a lot more work for you. For example, Microsoft thought it would be useful to have an add-on library containing a function that could read a file from another computer on the internet almost as easily as you can read a file on your own computer. To that end, instead of forcing your program to send out all of these Ftp-formatted headers and do the many steps that are needed to receive an internet file, your program would instead call one function that is passed the name of the file to open (just like you may call the built-in function STREAM to do that), and then call another function to get the size of the file (just like you may call CHARS to do that), and finally call another function to read it into memory (just like you may call CHARIN to do that). And that Microsoft function will do all of the work of sending/receiving packets over the internet and assembling the contents of the file into some memory buffer you supply. So too, Microsoft thought that it would be useful to have a function that could fetch a web page from another computer as easily as it appears to be when you type a web site into your browser's Address bar. Instead of forcing your program to send out all of these Http-formatted headers and do the many steps that are needed to receive the contents of a web page, your program could instead call one function that is passed the address of the desired web page. And that Microsoft function will do all of the work of sending/receiving packets over the internet and assembling the contents of the web page into some memory buffer you supply.

Microsoft decided to create an add-on library (ie, DLL file) that contained functions to support the Http, Ftp, and Gopher protocols (which are the 3 main protocols used on the internet). Microsoft also included functions to connect to the internet (which may be required for a dial-up account), and hang up. Microsoft calls these functions its Windows Internet (WinINet) API. They are found inside the DLL named wininet.dll which ships with the Windows operating system. This DLL's functions are designed to be called from programs written in languages such as C, but Reginald has an add-on DLL known as RexxInet (REXXINET.DLL) that provides functions you can directly call to carry out Http, Ftp, and Gopher "operations" very easily.