WiFi driver required
The embOS/IP ACD module allows the user specific configuration of the behavior if an IPv4 address collision is detected. This means that more than one host in the network is using the same IPv4 address at the same time. This is discovered sending ARP discover packets to find hosts with the same addresses in the network.
Communication between specific Ethernet participants is done in knowledge of their hardware addresses (MAC). ARP (Address Resolution Protocol) is a protocol to resolve the MAC address behind an IP address in a network by sending broadcast ARP requests, asking the client with the desired IP address to answer back with its MAC address that is needed for further direct communication between these two Ethernet participants.
The embOS/IP AutoIP module adds the dynamic configuration of IPv4 Link-Local addresses to embOS/IP. This functionality is better known as AutoIP. The AutoIP implementation covers the relevant parts of the RFC 3972. In general, AutoIP is a method to negotiate a IPv4 address in a network without the utilization of a server such as a DHCP server. AutoIP will try to use IPv4 addresses out of a reserved pool from the addresses 169.254.1.0 to 169.254.254.255 to find a free IP that is not used by any other network participant at this time. To achieve this goal AutoIP sends ARP probes into the network to ask if the address to be used is already in use. This is determined by an ARP reply for the requested address. Upon an address conflict AutoIP will generate a new address to use and will retry to use it by sending ARP probes again.
DHCP stands for Dynamic Host Configuration Protocol. It is designed to ease configuration management of large networks by allowing the network administrator to collect all the IP hosts soft configuration information into a single computer. This includes IP address, name, gateway, and default servers. Refer to [RFC 2131] - DHCP - Dynamic Host Configuration Protocol for detailed information about all settings which can be assigned with DHCP. DHCP is a client/server protocol, meaning that the machine with the DHCP database serves requests from DHCP clients. The clients typically initiate the transaction by requesting an IP address and perhaps other information from the server. The server looks up the client in its database, usually by the client's media address, and assigns the requested fields. Clients do not always need to be in the server's database. If an unknown client submits a request, the server may optionally assign the client a free IP address from a pool of free addresses kept for this purpose. The server may also assign the client default information of the local network, such as the default gateway, the DNS server, and routing information.
Since IP addresses in a large network or even the internet are hard to remember, the Domain Name System provides a mechanism to resolve the IP address assigned to a domain from a DNS server. This can either be an internet DNS server, resolving requests for a domain into the assigned IP address or even a local DNS server that might be part of an Active Directory infrastructure, answering local name requests to find out the IP address of a company internal server as well as forwarding requests not known to its own database to an internet DNS server.
The ICMP (Internet Control Message Protocol) can be used to determine the status of participants in a network by providing the possibility to send test data to another client and receiving an answer to that. This way ICMP provides a simple way to determine the availability of another network participant. Typically ICMP is a good test when it comes to problems in a network as a first test to check if the other side is generally available. On most operating systems the simple command "ping" can be used to utilize ICMP. Most ICMP clients provide important statistics such as the "ping" that shows the responsiveness of a network between two participants and indicates the time necessary for a request to be answered.
The IPv4 (Internet Protocol version 4) is the main protocol used in nowadays networks and the internet. IPv4 is typically presented in a dotted decimal form of four numbered blocks with values from 0 to 255 . Each block is presented by one single byte, resulting in a block of four bytes when being presented in hexadecimal. Combined with a netmask of the same characteristics, network segments can be built to separate a network infrastructure into smaller blocks. For example, reserved ranges can be freely used for private networks such as a home network. Furthermore, global ranges can be assigned which are maintained by the IANA (Internet Assigned Numbers Authority) department that is also part of the ICANN (Internet Corporation for Assigned Names and Numbers).
The loopback device registers an interface with the address 127.0.0.1/8 that allows accessing services on the same device. This allows a client to access a server resource on itself.
Multicast is a technique to distribute a packet to multiple receivers in a network by sending only one packet. The handling of who will receive the packet is not done by the sender but instead is done by network hardware such as routers or switched hubs that will duplicate the packet and send it to everyone that participates the chosen group. The target does not actively participate by sending a join request. The network hardware periodically broadcasts membership queries throughout the network that have to be answered with a membership report in case we want to participate in the queried group.
RAW sockets describes the possibility to freely send and receive data not using typical protocols such as TCP and UDP and their overhead. RAW sockets can be used to define and use a new protocol as the data can either be sent with a typical IP header being generated for data to be sent or completely defining the entire packet data excluding the transport layer header such as the Ethernet header for own purposes. This allows implementing new protocols as well as building hardware that is able to accept incoming data that does not rely on TCP or UDP protocol or even to build network traffic capture devices that log the incoming data.
TCP (Transmission Control Protocol) is a connection oriented protocol used between two network participants where one participant acts as server, listening to incoming connections and the other one acting as client, establishing a connection to the server. Once a connection is established, both sides are able to send and receive freely. TCP is secured against packet loss by using a handshake mechanism known as "ACK" not necessarily relying on only sending one packet per ACK. Packets that are lost during a session, can be recovered as each side knows which data has been ACKed by the other side as received and can retransmit the lost data. TCP is the right protocol for all kind of data transfers where the data content is important and no data might get lost. TCP is used by many application protocols such as HTTP, FTP, SMTP and many others.
UDP (User Datagram Protocol) is a connectionless protocol that can be used to address data to one network participant by sending to its IP address directly or to distribute data to the whole network by sending data to a network broadcast address. UDP does not recognize lost packets but is faster due to not maintaining a session. It is typically used for applications that rely on throughput, such as live video/audio streaming for which it does not matter when a packet gets lost in between. UDP broadcasts are typically used by applications where the location of the other side is yet to be discovered. Typical samples for such applications is a DHCP client searching for a DHCP server or a client trying to discover one or more devices with yet unknown addresses in a network.
VLAN technology can be used to separate multiple devices operating on the same physical network into completely separated networks without seeing each other. A typical usage would be to have 2 departments separated from each other but using the same infrastructure such as a shared switch or router. Only devices using the same VLAN ID will be able to see each other. For this to happen 4 bytes are added in front of the packet type field in the Ethernet frame pushing the original packet type field back by 4 bytes. The Ethernet frame will still be of a maximum length of 1518 bytes including CRC which means that instead of a maximum of 1500 bytes that can be transferred, the amount of bytes that can be transferred per Ethernet frame will shrink to 1496 bytes per packet. VLAN tagged packets are typically forwarded by any switch since the type field has simply been replaced and in most cases only the destination MAC, source MAC and packet type is checked. In this case the packet is simply of an unknown protocol and will be forwarded by the switch.