Can anyone clarify gateway assignment for me?
What is the difference between adding gateway as
0.0.0.0 and assigning a specific ip address as a gateway?
0.0.0.0 has the specific meaning "unspecified". This roughly translates to "there is none" in the context of a gateway. Of course, this assumes that the network is locally connected, as there is no intermediate hop.
As a destination,
0.0.0.0/0 is special: if there are no network bits, there can't be anything in the network number either. So, it's naturally unspecified.
However, sticking to your question, yes, it does have a special meaning. It means that the network is locally connected on that interface and no more hops are needed to get to it.
From the wikipedia page, 0.0.0.0
In the Internet Protocol version 4 the address 0.0.0.0 is a non-routable meta-address used to designate an invalid, unknown or non applicable target. To give a special meaning to an otherwise invalid piece of data is an application of in-band signaling.
From the wikipedia page, Default Route.
The default route in Internet Protocol Version 4 (IPv4) is designated as the zero-address 0.0.0.0/0 in CIDR notation,1 often called the quad-zero route. The subnet mask is given as /0, which effectively specifies all networks, and is the shortest match possible. A route lookup that does not match any other route, falls back to this route. Similarly, in IPv6, the default route is specified by ::/0.
In the highest-level segment of a network, administrators generally point the default route for a given host towards the router that has a connection to a network service provider. Therefore, packets with destinations outside the organization's local area network, typically destinations on the Internet or a wide area network, are forwarded to the router with the connection to that provider.
The device to which the default route points is often called the default gateway, and it often carries out other functions such as packet filtering, firewalling, or proxy server operations.
In your questioning I'm going to assume that you have something like this:
$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
This is saying that for each of the network destinations (192.168.1.0 or 169.254.0.0) that the default gateway is the 0.0.0.0 destination, if a packet is NOT destined for any address within that particular network. For the 0.0.0.0 destination, use the IP address 192.168.1.254.
These rules act to funnel all the traffic that doesn't match any of the routes that we know about, to the default route.
So say we have a packet with IP 192.168.1.110. The first rule is checked and this IP matches that network, so it get's delivered.
If we had packet 188.8.131.52, the 3rd rule would be in effect and the packet would be routed to 192.168.1.254.
Look, 0.0.0.0 is only used in routing tables--NOT for assigning to a host.
Hosts (computers with an IP address) maintain a routing table to resolve how to send their messages to the correct place.
Scenario 1: PC-A wants to send a message to PC-B on the SAME NETWORK:
1) PC-A checks its routing table to see if there is a match for the destination IP address. 2) The routing table shows that the destination is within the same network, finds the interface that is connected to that network, then forwards the message out that interface directly to the destination.
Scenario 2: PC-A wants to send a message to Server-Z on a REMOTE NETORK (NOT the same network):
1) PC-A checks its routing table and can't find a match (of course, because hosts don't keep track of hosts on remote networks--that's the routers' jobs).
2) However, the PC is configured with a quad-zero IP address and subnet mask mapped to your router (default gateway to OTHER, REMOTE, DIFFERENT networks) like this:
(0.0.0.0 0.0.0.0 192.168.0.1 interface)
What does zero mean? It means none. So, if your computer doesn't keep track of where remote hosts are, and it checks its routing table every time it wants to send a message to see if it needs to either send it to the SAME (local) network or if it needs to send it to a REMOTE network, then how does it get the message to the remote network?
It sends it to the router and lets the router do its job of routing the packet along the best path. So, the host/PC/computer needs to know that if it can't find an entry in its routing table for where to send the message (aka 0.0.0.0) then it knows to send it to the router, which is the IP address associated with the (0.0.0.0 0.0.0.0 192.168.0.1 interface) entry and uses the associated interface/NIC/Network Adapter that is connected to that.
Therefore, 0.0.0.0 is used by routing tables on hosts and routers to know where to send something when it finds zero matches for how to reach a destination and must be mapped to a router's IP address and an interface to reach that router.