A gateway is a piece of networking hardware or software used in telecommunications networks that allows data to flow from one discrete network to another. Gateways are distinct from routers or switches in that they communicate using more than one protocol to connect multiple networks[1] [2] and can operate at any of the seven layers of the OSI model.
The term gateway can also loosely refer to a computer or computer program configured to perform the tasks of a gateway, such as a default gateway or router, and in the case of HTTP, gateway is also often used as a synonym for reverse proxy.[3] It can also refer to a device installed in homes that combines router and modem functionality into one device, used by ISPs, also called a residential gateway.[4] [5] [6]
A network gateway provides a connection between networks and contains devices, such as protocol translators, impedance matchers, rate converters, fault isolators, or signal translators. A network gateway requires the establishment of mutually acceptable administrative procedures between the networks using the gateway. Network gateways, known as protocol translation gateways or mapping gateways, can perform protocol conversions to connect networks with different network protocol technologies. For example, a network gateway connects an office or home intranet to the Internet. If an office or home computer user wants to load a web page, at least two network gateways are accessed—one to get from the office or home network to the Internet and one to get from the Internet to the computer that serves the web page.
On an Internet Protocol (IP) network, IP packets with a destination outside a given subnetwork are sent to the network gateway. For example, if a private network has a base IPv4 address of 192.168.1.0 and has a subnet mask of 255.255.255.0, then any data addressed to an IP address outside of 192.168.1.0–192.168.1.255 is sent to the network gateway. IPv6 networks work in a similar way. While forwarding an IP packet to another network, the gateway may perform network address translation.
In enterprise networks, a network gateway usually also acts as a proxy server and a firewall.[7]
On Microsoft Windows, the Internet Connection Sharing feature allows a computer to act as a gateway by offering a connection between the Internet and an internal network.[8] [9]
An Internet-to-orbit gateway (I2O) connects computers or devices on the Internet to computer systems orbiting Earth, such as satellites or crewed spacecraft. Project HERMES, run by the Ecuadorian Civilian Space Agency, was first to implement this kind of gateway on June 6, 2009.[10] [11] Project HERMES has a maximum coverage of 22,000 km and can transmit voice and data. The Global Educational Network for Satellite Operations (GENSO) is another type of I2O gateway.
A cloud storage gateway is a network appliance or server which translates cloud storage APIs such as SOAP or REST to block-based storage protocols such as iSCSI, Fiber Channel or file-based interfaces such as NFS or CIFS.[12] [13] Cloud storage gateways enable companies to integrate private cloud storage into applications without moving the applications into a public cloud, thereby simplifying data protection.[14]
An Internet of things (IoT) gateway provides the bridge (protocol converter) between IoT devices in the field, the cloud, and user equipment such as smartphones. The IoT gateway provides a communication link between the field and the cloud, and may provide offline services and real-time control of devices in the field.[15] [16]
To achieve sustainable interoperability in the Internet of things ecosystem,[17] [18] two dominant architectures for data exchange protocols are used: bus-based (DDS, REST, XMPP) and broker-based (AMQP, CoAP, MQTT, JMI). Protocols that support information exchange between interoperable domains are classified as message-centric (AMQP, MQTT, JMS, REST) or data-centric (DDS, CoAP, XMPP).[19] [20] Interconnected devices communicate using lightweight protocols that don't require extensive CPU resources. C, Java, Python and some scripting languages are the preferred choices of IoT application developers. IoT nodes use separate IoT gateways to handle protocol conversion, database storage or decision making (e.g. collision handling), in order to supplement the low intelligence of devices.