IP v4-adresser¶

32 bits adresser, delt opp i oktetter (4x8)

In [1]:
ip = "192.168.1.1"

octet_bin = [f"{int(x):>08b}" for x in ip.split(".")]

print(ip)
print(octet_bin)
print(*octet_bin)
192.168.1.1
['11000000', '10101000', '00000001', '00000001']
11000000 10101000 00000001 00000001

Private ip-adresser¶

Class A: 10.0.0.0     to  10.255.255.255
Class B: 172.16.0.0   to  172.31.255.255
Class C: 192.168.0.0  to  192.168.255.255

IP-adressen er dels en adresse til nettverket vi tilhører, og dels en adresse til vår egen PC. Nettverksmaske - bestemmer hvor mange bits som brukes til å sette nettverksadressen.

Classful networks (Class A, B, C) - fra 1981: https://en.wikipedia.org/wiki/Classful_network

In [2]:
print(f"Antall tilgjengelige verdier med 8 bits: {2**8}\n")

masks = [
    '255.255.255.255',
    '255.255.255.254',
    '255.255.255.252',
    '255.255.255.248',
    '255.255.255.240',
    '255.255.255.224',
    '255.255.255.192',
    '255.255.255.128',
    '255.255.255.0',
    '255.255.254.0',
    '255.255.252.0'
    ,  
]

for s in masks:
    s_bin = '.'.join([bin(int(x)+256)[3:] for x in s.split('.')])
    s_bin_zeroes = s_bin.count('0')
    cidr = s_bin.count('1')
    ip_address_count = int(2)**s_bin_zeroes
    
    print(f"Maske: {s:<16}    {s_bin}    Antall '0'-er: {s_bin_zeroes:>2} Antall '1'-ere: {cidr:>2} Antall tilgjengelige adresser: {ip_address_count:>4}")
Antall tilgjengelige verdier med 8 bits: 256

Maske: 255.255.255.255     11111111.11111111.11111111.11111111    Antall '0'-er:  0 Antall '1'-ere: 32 Antall tilgjengelige adresser:    1
Maske: 255.255.255.254     11111111.11111111.11111111.11111110    Antall '0'-er:  1 Antall '1'-ere: 31 Antall tilgjengelige adresser:    2
Maske: 255.255.255.252     11111111.11111111.11111111.11111100    Antall '0'-er:  2 Antall '1'-ere: 30 Antall tilgjengelige adresser:    4
Maske: 255.255.255.248     11111111.11111111.11111111.11111000    Antall '0'-er:  3 Antall '1'-ere: 29 Antall tilgjengelige adresser:    8
Maske: 255.255.255.240     11111111.11111111.11111111.11110000    Antall '0'-er:  4 Antall '1'-ere: 28 Antall tilgjengelige adresser:   16
Maske: 255.255.255.224     11111111.11111111.11111111.11100000    Antall '0'-er:  5 Antall '1'-ere: 27 Antall tilgjengelige adresser:   32
Maske: 255.255.255.192     11111111.11111111.11111111.11000000    Antall '0'-er:  6 Antall '1'-ere: 26 Antall tilgjengelige adresser:   64
Maske: 255.255.255.128     11111111.11111111.11111111.10000000    Antall '0'-er:  7 Antall '1'-ere: 25 Antall tilgjengelige adresser:  128
Maske: 255.255.255.0       11111111.11111111.11111111.00000000    Antall '0'-er:  8 Antall '1'-ere: 24 Antall tilgjengelige adresser:  256
Maske: 255.255.254.0       11111111.11111111.11111110.00000000    Antall '0'-er:  9 Antall '1'-ere: 23 Antall tilgjengelige adresser:  512
Maske: 255.255.252.0       11111111.11111111.11111100.00000000    Antall '0'-er: 10 Antall '1'-ere: 22 Antall tilgjengelige adresser: 1024
Eksempel på oppsett for hjemmerouter:

Ip-adresse for LAN: 192.168.8.1
Nettverksmaske:     255.255.255.0

Gir adresse-serien: 192.168.8.2-192.168.8.254

Alternativ til Classful Networks: Classless Inter-Domain Routing (CIDR) - fra 1993: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing

CIDR-verdien tilsvarer antallet 1'ere i tabellen ovenfor.

Eksempel med CIDR-notasjon for hjemmerouter-eksemplet:

192.168.8.1/24

NAT - Network Address Translation¶

Oversetting mellom private nettverksadresser og en offentlig IP-adresse skjer via en NAT-tjeneste i routeren.

src=192.168.8.100   # Min PC
dst=52.109.88.196   # Microsoft
sport=50695         # source port
dport=443           # destination port

src=52.109.88.196   # Microsoft
dst=192.36.105.199  # Hjemmerouter, offentlig adresse (eksempel)
sport=443           # source port
dport=50695         # destination port

IP v6-adresser¶

128-bits adresser, delt opp i 8 16-bits seksjoner, skilt med kolon, og oppgitt i heksadesimale verdier (0-f)

In [3]:
print(f"Antall IP v4-adresser: {2**32}")
print(f"Antall IP v6-adresser: {2**128}")
Antall IP v4-adresser: 4294967296
Antall IP v6-adresser: 340282366920938463463374607431768211456
nslookup ntnu.no

2001:700:300:6::102
samme som:
2001:0700:0300:0006:0000:0000:0000:0102
  • flere sammenhengende seksjoner med 0'er kan erstattes med dobbelt kolon (men bare én gang)
  • ledende nuller kan utelates

Adressetyper det er verd å merke seg:

localhost                 ::1/128
link local address        fe80::/10             f.eks. fe80::918f:2474:d730:5814   - kan bare brukes i det lokale nettverket

IPv6 Address

  • 8 16 bits fields
  • hvert felt er 4 hexadesimal-tegn
  • IPv6 adresser er av Classless Inter Domain Routing (CIDR)-type
  • første 64 bit: nettverket, eks. 2001:1:1:1::/64 angir alle subnett og hosts i ett nettverk (network prefix)
  • hosts i dette nettverket har adresser fra 2001:1:1:1:0:0:0:0 - 2001:1:1:1:f:f:f:f

Eksempel fra egen PC


Windows: netsh int ipv6 show address

Interface 14: Ethernet 2

Addr Type  DAD State   Valid Life Pref. Life Address
---------  ----------- ---------- ---------- ------------------------
Public     Preferred    23h52m31s   3h52m31s 2a23:799:1716:7a26:918f:2474:d730:5814
Temporary  Preferred    23h52m31s   3h52m31s 2a23:799:1716:7a26:f580:c593:f238:7b1b
Other      Preferred     infinite   infinite fe80::918f:2474:d730:5814%14

Merk Public, som er offentlig IP-adresse uten NAT

In [ ]: