Finding Hosts over NAT - nat

Assume that we have some hosts over NAT, but we don't know how many.
And, the IP layer assigns an identity number to every IP packet(Identity numbers are consecutive positive integers).For the first packet the id number is set randomly, but for the others the id number is incremented by 1.
And Also we know that all packets that hosts create is going to be sent out.
How can we know how many hosts over NAT we have if we are provided with packet sniffing ?

Most NAT implementations will reorder the TCP sequence numbers, so you can't tell how many hosts are behind a NAT device just by looking at the IP information.

Related

How to send a large amount of TCP packets using scapy with different IPs?

I'm testing how windows handle IPv4 ID. I need to generate 10,000 TCP or UDP packets per second with different source IPs(my netmask is 255.255.0.0, so there are 2^16 IPs available. But it's not the case here since I can do IP spoofing). I know that I can change the count parameter in scapy.sendrecv.send to generate a large number of packets at the same time but the configuration of the packets is all the same. Moreover, I also want occasionally to pick out some responses to check the status.
I'm currently thinking about using multithreaded but I'm not sure how to do that. Can anyone give me a structure to start with?

CIDR /28 calculation confusion

I am trying to learn how to calculate IP addresses from CIDR block.
For example, 10.88.135.144/28 or
10.88.135.10010000/28
From what I understand, that means first 28 bits are associated with network address while the rest 4 bits are host addresses. That would result in following IP range:
10.88.135.10010000 - 10.88.135.10011111
The first IP should be 10.88.135.144 and last IP address should be 10.88.135.159
But according to cidr.xyz. The first IP should be 10.88.135.145 and the last one should be 10.88.135.158.
I really can't figure out why. Can anyone explain the reason for me? Thanks!
Generally, the first IP is the network identifier and cannot be assigned to any device.This is used by router or switch on the network.
The last one is the broadcasting IP and cannot be assigned to any device as this IP is used by router or switch on the network to broadcast information.
https://www.quora.com/In-IP-addresses-what-is-meant-by-network-ID-and-host-ID
https://supportforums.cisco.com/t5/wan-routing-and-switching/what-is-broadcast-address/td-p/2494445#messageBodySimpleDisplay_1

How to identify Network ID from an IP address

i already have studied about the internet IP and all those stuff, but i'm still confused about how to identify network ID from an given IP address, for example, if i have given an IP address: 192.168.250.0/24, so what will be the network ID?
can you guys help me?? and explain the method?
Thank you in advance
You need to convert the IP address and mask to binary, then logically AND them, then convert back to decimal:
192.168.250.0 -----> 11000000.10101000.11111010.00000000
24 bit mask -------> 11111111.11111111.11111111.00000000
=================================== <--- Logical AND
Network address ---> 11000000.10101000.11111010.00000000 ---> 192.168.250.0
This answer on Network Engineering describes how to do all your IP operations.
It s simple, your IP address is 192.168.250.0/24 and you should know that IP address is in a fact 32 bits value of zeros and ones. So it s easy for human to say listen this first 24 bits are network ID (network part) and remaining 8 bits are host ID (host part), but machines need parameter that will use to determine what bits are in network and what bits are ih host part. That s why we have subnet mask, that map IP address in a way that binary ones "1" map bits that belongs to network part and binary zeros "0" map bits that belongs to host part.
So your IP address in binary form is
11000000.10101000.11111010.00000000 when we add subnet mask then you have
11111111.11111111.11111111.00000000 or 255.255.255.0 in decimal form
-------------------------------------
11000000.10101000.11111010. bits maped by binary ones (network part)
.00000000 bits maped by binary zeros (host part)
If you count number of ones in subnetmask you will see that there are 24 binary ones, and that s why we use other notations for presenting subnet mask, and that is by something we call network prefix or "/24".
When host want to send packets he first must determine network address, but how he do that? Every host have IP address and subnet mask let say
192.168.250.6 and subnetmask /24 == 255.255.255.0 or in binary
11000000.10101000.11111010.00000110
11111111.11111111.11111111.00000000
------------------------------------- network hosts use logical AND operation
11000000.10101000.11111010.00000000
(notice that network address is address that have binary zeros in host part of IP address. Logical AND use two values (0 or 1), results of this logical operation is "1" only when both values are "1" (or you can easily rememmber it has to be "1" AND "1" to get "1" as result :) ).
After this host examine destination IP let s say 192.168.10.6, and host use again same operation and if result show that network part is identical with his IP than thay communicate directly or if they have different networkID hosts use gateway since destination is at another network.

Number of IP-addresses in practice when paired with subnet masks: Should IP-addresses paired with different subnet masks be seen as distinct?

Number of IP-addresses in practice when paired with subnet masks: Should IP-addresses paired with different subnet masks be seen as distinct?
I know an IP-address is represented as 4 octets, i.e. using 32-bits. The total is 2^32 different IP-addresses.
But these IP-addresses are paired with a subnet mask. Does this mean that 192.168.0.1/24 and 192.168.0.1/16 are two different IP-addresses in practice? If so, why not introduce some more "layers" (more masks) that extend the 32-bit addressing scheme even further?
How many IP-addresses are there?
Should IP-addresses paired with different subnet masks be seen as distinct?
No. A subnet mask is not a qualifier or namespace for IP addresses. Netmasks have no part in associating IP addresses with machines. Rather, they are associated with the physical and logical topology of the (IPv4) network, and they are needed for hosts to participate in the network appropriately. Using a different netmask does not change the meaning of IP addresses, so netmasks do not provide a mechanism for expanding the address space.
Does this mean that 192.168.0.1/24 and 192.168.0.1/16 are two different IP-addresses in practice?
No. In fact, those are not IP addresses at all -- they are (address, netmask) pairs, both with the same address part. On any given network, they refer to the same machine (if they refer to any machine at all). The IP address involved is in one of the non-routable ranges, however. These are usually used for internal networks, typically behind a router that performs network address translation (NAT) so that multiple machines can access the network without having globally-unique addresses. That has nothing to do with netmasks, however.
How many IP-addresses are there?
There are exactly 232 (a bit less than 5 billion) distinct IPv4 addresses. Not all of them are usable as host addresses. Use of private networks with NAT-ed access to the Internet expands the total number of machines that can be connected, but that does not change the number of distinct addresses, and it anyway is not related to netmasks.

how to calculate number of nodes?

I'm wondering how to calculate number of nodes in CIDR network?
for example if the CIDR network is 11.13.0.0/16 How many nodes can be accommodated in this CIDR network?
Any help would be appreciatet
Typically you'll have a broadcast address, so that's one address removed. You'll also typically have a router/default gateway, so that's often one more address removed. So that leaves 2^(32-16)-2==65534 IP addresses free for other use. If you want to subnet that further, you'll lose one more IP per subnet, since each subnet will have its own broadcast range.
In general terms thats 2^(32-bits_set_in_mask) addresses. As sarnold pointed out some of those can't be used for nodes.

Resources