Day 3 of 5
⏱ ~60 minutes
Networking for Developers — Day 3

TCP/IP and Ports

IP addresses, subnets, ports, TCP vs UDP, and practical tools: curl, netcat, and nmap.

IP Addresses and Ports

IP Addresses
# IPv4: 4 octets, each 0-255
192.168.1.100
10.0.0.1         ← private (10.x.x.x)
172.16.0.1       ← private (172.16-31.x.x)
192.168.0.1      ← private (192.168.x.x)
127.0.0.1        ← loopback (this machine)

# IPv6: 128 bits
2001:0db8:85a3::8a2e:0370:7334

# Check your IP
curl ifconfig.me          # public IP
ip addr show              # local IPs (Linux)
ipconfig                  # local IPs (Windows)
Ports
# Well-known ports
22    SSH
25    SMTP
53    DNS
80    HTTP
443   HTTPS
3306  MySQL
5432  PostgreSQL
6379  Redis
27017 MongoDB

# Check open ports
ss -tlnp          # listening TCP ports
nmap localhost    # scan local ports

# Test if a port is open
nc -zv hostname 443
curl -v telnet://hostname:443
TCP vs UDP
# TCP: connection-oriented, reliable
# - Handshake before data
# - Guarantees delivery and order
# - Used for: HTTP, HTTPS, SSH, databases

# UDP: connectionless, fast
# - No handshake, fire and forget
# - Faster, lower overhead
# - Used for: DNS, video streaming, gaming, VoIP

# Test TCP connection
curl -w 'Connected in %{time_connect}s\n' -o /dev/null -s https://github.com
📝 Day 3 Exercise
Map Your Ports
  1. O
  2. n
  3. y
  4. o
  5. u
  6. r
  7. l
  8. o
  9. c
  10. a
  11. l
  12. m
  13. a
  14. c
  15. h
  16. i
  17. n
  18. e
  19. :
  20. r
  21. u
  22. n
  23. <
  24. c
  25. o
  26. d
  27. e
  28. >
  29. s
  30. s
  31. -
  32. t
  33. l
  34. n
  35. p
  36. <
  37. /
  38. c
  39. o
  40. d
  41. e
  42. >
  43. t
  44. o
  45. s
  46. e
  47. e
  48. a
  49. l
  50. l
  51. l
  52. i
  53. s
  54. t
  55. e
  56. n
  57. i
  58. n
  59. g
  60. p
  61. o
  62. r
  63. t
  64. s
  65. .
  66. F
  67. o
  68. r
  69. e
  70. a
  71. c
  72. h
  73. s
  74. e
  75. r
  76. v
  77. i
  78. c
  79. e
  80. y
  81. o
  82. u
  83. r
  84. e
  85. c
  86. o
  87. g
  88. n
  89. i
  90. z
  91. e
  92. ,
  93. l
  94. o
  95. o
  96. k
  97. u
  98. p
  99. w
  100. h
  101. a
  102. t
  103. i
  104. t
  105. i
  106. s
  107. .
  108. U
  109. s
  110. e
  111. n
  112. c
  113. t
  114. o
  115. t
  116. e
  117. s
  118. t
  119. i
  120. f
  121. a
  122. r
  123. e
  124. m
  125. o
  126. t
  127. e
  128. s
  129. e
  130. r
  131. v
  132. e
  133. r
  134. h
  135. a
  136. s
  137. p
  138. o
  139. r
  140. t
  141. 4
  142. 4
  143. 3
  144. o
  145. p
  146. e
  147. n
  148. .
  149. U
  150. s
  151. e
  152. n
  153. m
  154. a
  155. p
  156. t
  157. o
  158. s
  159. c
  160. a
  161. n
  162. l
  163. o
  164. c
  165. a
  166. l
  167. h
  168. o
  169. s
  170. t
  171. .

Day 3 Summary

  • IP addresses: private (10.x, 192.168.x, 172.16-31.x) vs public. 127.0.0.1 = this machine.
  • Ports identify services. 80=HTTP, 443=HTTPS, 22=SSH, 5432=Postgres.
  • TCP = reliable, ordered, with handshake. UDP = fast, no guarantee. HTTP uses TCP.
  • ss -tlnp shows listening ports. nc -zv host port tests connectivity.
Finished this lesson?