Bird
Raised Fist0
Intro to Computingfundamentals~10 mins

IP addresses (IPv4, IPv6) in Intro to Computing - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the version of the IP address.

Intro to Computing
ip_version = [1].version
print(f"IP version: {ip_version}")
Drag options to blanks, or click blank then click option'
Aip.version()
Bipaddress.IPv4Address('192.168.1.1')
Cip.version
Dip.version_number
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses like a method call (ip.version())
Trying to access a non-existent attribute like ip.version_number
2fill in blank
medium

Complete the code to create an IPv4 address object from a string.

Intro to Computing
import ipaddress
ip = ipaddress.[1]('10.0.0.1')
print(ip)
Drag options to blanks, or click blank then click option'
AIPv4Address
BIPv6Address
CIPAddress
DIPNetwork
Attempts:
3 left
💡 Hint
Common Mistakes
Using IPv6Address for an IPv4 string
Using IPAddress which does not exist in the module
3fill in blank
hard

Fix the error in the code to check if an IP address is private.

Intro to Computing
import ipaddress
ip = ipaddress.IPv4Address('172.16.0.1')
print(ip.[1])
Drag options to blanks, or click blank then click option'
Aprivate
Bis_private
CisPrivate
Dprivate_ip
Attempts:
3 left
💡 Hint
Common Mistakes
Using camelCase like isPrivate
Using 'private' without 'is_' prefix
4fill in blank
hard

Fill both blanks to create a dictionary mapping IP strings to their versions for a list of IPs.

Intro to Computing
import ipaddress
ips = ['192.168.1.1', '2001:db8::1']
result = {ip: ipaddress.[1](ip).[2] for ip in ips}
print(result)
Drag options to blanks, or click blank then click option'
AIPv4Address
Bversion
CIPv6Address
Dis_private
Attempts:
3 left
💡 Hint
Common Mistakes
Using IPv6Address for all IPs causes errors for IPv4
Using is_private instead of version for the second blank
5fill in blank
hard

Fill all three blanks to create a dictionary of IPs with their version and private status.

Intro to Computing
import ipaddress
ips = ['10.0.0.1', '2001:db8::1']
result = {ip: {'version': ipaddress.[1](ip).[2], 'private': ipaddress.[3](ip).is_private} for ip in ips}
print(result)
Drag options to blanks, or click blank then click option'
Aip_address
Bversion
CIPv6Address
DIPv4Address
Attempts:
3 left
💡 Hint
Common Mistakes
Using IPv4Address or IPv6Address instead of ip_address() for mixed IPs
Using is_private as a method instead of an attribute

Practice

(1/5)
1.

What is the main difference between an IPv4 and an IPv6 address?

easy
A. IPv4 addresses are longer than IPv6 addresses.
B. IPv4 uses eight hexadecimal groups separated by colons; IPv6 uses four decimal numbers separated by dots.
C. IPv4 addresses use letters only; IPv6 uses numbers only.
D. IPv4 uses four decimal numbers separated by dots; IPv6 uses eight hexadecimal groups separated by colons.

Solution

  1. Step 1: Understand IPv4 format

    IPv4 addresses have four numbers (0-255) separated by dots, like 192.168.1.1.
  2. Step 2: Understand IPv6 format

    IPv6 addresses have eight groups of hexadecimal numbers separated by colons, like 2001:0db8:85a3::8a2e:0370:7334.
  3. Final Answer:

    IPv4 uses four decimal numbers separated by dots; IPv6 uses eight hexadecimal groups separated by colons. -> Option D
  4. Quick Check:

    IPv4 = four decimals, IPv6 = eight hex groups [OK]
Hint: IPv4 = dots and decimals; IPv6 = colons and hex [OK]
Common Mistakes:
  • Confusing the separator symbols (dots vs colons)
  • Thinking IPv6 uses only numbers, not hex letters
  • Assuming IPv4 addresses are longer than IPv6
2.

Which of the following is a valid IPv4 address?

192.168.1.256
10.0.0.1
172.16.300.5
255.255.255.256
easy
A. 192.168.1.256
B. 10.0.0.1
C. 172.16.300.5
D. 255.255.255.256

Solution

  1. Step 1: Check each number range in IPv4

    Each number in IPv4 must be between 0 and 255 inclusive.
  2. Step 2: Validate each option

    192.168.1.256 has 256 (invalid), 10.0.0.1 all numbers valid, 172.16.300.5 has 300 (invalid), 255.255.255.256 has 256 (invalid).
  3. Final Answer:

    10.0.0.1 -> Option B
  4. Quick Check:

    Numbers must be 0-255 in IPv4 [OK]
Hint: IPv4 numbers must be 0 to 255 only [OK]
Common Mistakes:
  • Allowing numbers greater than 255
  • Confusing IPv4 with IPv6 format
  • Ignoring invalid last number in address
3.

What is the expanded form of the IPv6 address 2001:db8::1?

medium
A. 2001:0db8:0000:0000:0000:0000:0000:0001
B. 2001:db8:0:0:0:0:1
C. 2001:db8::0001
D. 2001:0db8::1

Solution

  1. Step 1: Understand IPv6 shorthand

    The double colon (::) means one or more groups of zeros are omitted.
  2. Step 2: Expand omitted zeros

    Replace :: with enough groups of 0000 to make total 8 groups: 2001:0db8:0000:0000:0000:0000:0000:0001.
  3. Final Answer:

    2001:0db8:0000:0000:0000:0000:0000:0001 -> Option A
  4. Quick Check:

    :: means fill zeros to total 8 groups [OK]
Hint: Expand :: to enough 0000 groups for 8 total [OK]
Common Mistakes:
  • Not filling enough zero groups
  • Leaving :: in expanded form
  • Mixing uppercase and lowercase hex letters
4.

Identify the error in this IPv6 address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334:1234

medium
A. Too many groups; IPv6 must have exactly 8 groups
B. Invalid characters in groups
C. Groups must be separated by dots, not colons
D. Groups are too short; must be 5 digits each

Solution

  1. Step 1: Count groups in the address

    There are 9 groups separated by colons, but IPv6 requires exactly 8 groups.
  2. Step 2: Check group format

    All groups use valid hexadecimal digits and colons as separators, so no other errors.
  3. Final Answer:

    Too many groups; IPv6 must have exactly 8 groups -> Option A
  4. Quick Check:

    IPv6 = exactly 8 groups separated by colons [OK]
Hint: Count groups; IPv6 must have 8 groups [OK]
Common Mistakes:
  • Allowing more or fewer than 8 groups
  • Confusing colons with dots
  • Thinking group length must be fixed at 5 digits
5.

You have the IPv4 address 192.168.1.10 and want to convert it to an IPv6-mapped IPv4 address. Which is the correct IPv6 format?

hard
A. 2001:db8::192.168.1.10
B. ::192.168.1.10
C. ::ffff:c0a8:010a
D. 192.168.1.10::ffff

Solution

  1. Step 1: Understand IPv6-mapped IPv4 format

    IPv6-mapped IPv4 addresses use ::ffff: followed by the IPv4 address in hexadecimal.
  2. Step 2: Convert IPv4 to hex

    192 = c0, 168 = a8, 1 = 01, 10 = 0a; combined as c0a8:010a.
  3. Step 3: Form full IPv6 address

    Combine prefix and hex: ::ffff:c0a8:010a.
  4. Final Answer:

    ::ffff:c0a8:010a -> Option C
  5. Quick Check:

    IPv4 to hex after ::ffff: prefix [OK]
Hint: Convert IPv4 decimals to hex after ::ffff: prefix [OK]
Common Mistakes:
  • Using dotted decimal instead of hex in IPv6
  • Placing ::ffff: after IPv4 instead of before
  • Not converting IPv4 numbers to hexadecimal