**Masker subjaringan** atau **pola upajejaring** (bahasa Inggris: *subnet mask*) adalah istilah teknologi informasi yang mengacu kepada angka perduaan (*binary*) 32 bit yang digunakan untuk membedakan ID jejaring (*network ID*) dengan ID induk, yakni: menunjukkan letak suatu induk, entah berada di jejaring setempat atau di jejaring luar.

RFC 950 mengartikan penggunaan sebuah masker subjaringan yang disebut juga sebagai sebuah pola alamat (*address mask*) sebagai sebuah nilai 32-bit yang digunakan untuk membedakan pengenal jejaring (*network identifier*) dari pengenal induk (*host identifier*) dalam sebuah alamat IP. Bit-bit masker subjaringan diberi arti sebagai berikut:

* Semua bit yang ditujukan agar digunakan oleh pengenal jejaring diatur ke nilai 1.
* Semua bit yang ditujukan agar digunakan oleh pengidentifikasi induk diatur ke nilai 0.

Setiap induk (*host*) di dalam sebuah jejaring yang menggunakan TCP/IP membutuhkan sebuah masker subjaringan meskipun berada di dalam sebuah jejaring dengan satu segmen saja. Entah itu masker subjaringan bawaan (*default subnet mask*) (yang digunakan ketika memakai pengenal jejaring berdasar kelas) ataupun masker subjaringan yang disuaikan (yang digunakan ketika membuat sebuah subjaringan atau superjaringan) harus diatur pasang dalam setiap simpul (*node*) TCP/IP.

Representasi *Subnet Mask*
--------------------------

Ada dua metode yang dapat digunakan untuk merepresentasikan *subnet mask*, yakni:

* Notasi Desimal Bertitik
* Notasi Panjang Prefiks

### Desimal Bertitik

Sebuah *subnet mask* biasanya diekspresikan di dalam notasi desimal bertitik (*dotted decimal notation*), seperti halnya alamat IP. Setelah semua *bit* diset sebagai bagian network identifier dan host identifier, hasil nilai 32-bit tersebut akan dikonversikan ke notasi desimal bertitik. Perlu dicatat, bahwa meskipun direpresentasikan sebagai notasi desimal bertitik, subnet *mask* **bukanlah** sebuah alamat IP.

*Subnet mask* *default* dibuat berdasarkan kelas-kelas alamat IP dan digunakan di dalam jaringan TCP/IP yang tidak dibagi ke dalam beberapa subnet. Tabel di bawah ini menyebutkan beberapa subnet mask default dengan menggunakan notasi desimal bertitik. Formatnya adalah:

```
*<alamat IP www.xxx.yyy.zzz>***,** *<subnet mask www.xxx.yyy.zzz>*
```

| Kelas alamat | Subnet mask (biner) | Subnet mask (desimal) |
| --- | --- | --- |
| Kelas A | 11111111.00000000.00000000.00000000 | 255.0.0.0 |
| Kelas B | 11111111.11111111.00000000.00000000 | 255.255.0.0 |
| Kelas C | 11111111.11111111.11111111.00000000 | 255.255.255.0 |
|

Perlu diingat, bahwa nilai subnet mask default di atas dapat dikustomisasi oleh administrator jaringan, saat melakukan proses pembagian jaringan (subnetting atau supernetting). Sebagai contoh, alamat 138.96.58.0 merupakan sebuah network identifier dari kelas C yang telah dibagi ke beberapa subnet dengan menggunakan bilangan 8-bit. Kedelapan bit tersebut yang digunakan sebagai host identifier akan digunakan untuk menampilkan network identifier yang telah dibagi ke dalam subnet. Subnet yang digunakan adalah total 24 bit sisanya (255.255.255.0) yang dapat digunakan untuk mendefinisikan custom network identifier. Network identifier yang telah di-subnet-kan tersebut serta subnet mask yang digunakannya selanjutnya akan ditampilkan dengan menggunakan notasi sebagai berikut:

```
138.96.58.0, 255.255.255.0
```

### Representasi panjang prefiks (*prefix length*) dari sebuah *subnet mask*

Karena bit-bit network identifier harus selalu dipilih di dalam sebuah bentuk yang berdekatan dari bit-bit ordo tinggi, maka ada sebuah cara yang digunakan untuk merepresentasikan sebuah subnet mask dengan menggunakan bit yang mendefinisikan network identifier sebagai sebuah network prefix dengan menggunakan notasi network prefix seperti tercantum di dalam tabel di bawah ini. Notasi network prefix juga dikenal dengan sebutan notasi Classless Inter-Domain Routing (CIDR) yang didefinisikan di dalam RFC 1519. Formatnya adalah sebagai berikut:

```
**/**<jumlah bit yang digunakan sebagai network identifier>
```

| Kelas alamat | Subnet mask (biner) | Subnet mask (desimal) | Prefix Length |
| --- | --- | --- | --- |
| Kelas A | 11111111.00000000.00000000.00000000 | 255.0.0.0 | /8 |
| Kelas B | 11111111.11111111.00000000.00000000 | 255.255.0.0 | /16 |
| Kelas C | 11111111.11111111.11111111.00000000 | 255.255.255.0 | /24 |
|

Sebagai contoh, network identifier kelas B dari 138.96.0.0 yang memiliki subnet mask 255.255.0.0 dapat direpresentasikan di dalam notasi prefix length sebagai **138.96.0.0/16**.

Karena semua host yang berada di dalam jaringan yang sama menggunakan network identifier yang sama, maka semua host yang berada di dalam jaringan yang sama harus menggunakan network identifier yang sama yang didefinisikan oleh subnet mask yang sama pula. Sebagai contoh, notasi 138.23.0.0/16 tidaklah sama dengan notasi 138.23.0.0/24, dan kedua jaringan tersebut tidak berada di dalam ruang alamat yang sama. Network identifier 138.23.0.0/16 memiliki range alamat IP yang valid mulai dari 138.23.0.1 hingga 138.23.255.254; sedangkan network identifier 138.23.0.0/24 hanya memiliki range alamat IP yang valid mulai dari 138.23.0.1 hingga 138.23.0.254.

### Menentukan alamat Network Identifier

Untuk menentukan network identifier dari sebuah alamat IP dengan menggunakan sebuah subnet mask tertentu, dapat dilakukan dengan menggunakan sebuah operasi matematika, yaitu dengan menggunakan operasi logika perbandingan AND (*AND comparison*). Di dalam sebuah AND comparison, nilai dari dua hal yang diperbandingkan akan bernilai true hanya ketika dua item tersebut bernilai true; dan menjadi false jika salah satunya false. Dengan mengaplikasikan prinsip ini ke dalam bit-bit, nilai 1 akan didapat jika kedua bit yang diperbandingkan bernilai 1, dan nilai 0 jika ada salah satu di antara nilai yang diperbandingkan bernilai 0.

Cara ini akan melakukan sebuah operasi logika AND comparison dengan menggunakan 32-bit alamat IP dan dengan 32-bit subnet mask, yang dikenal dengan operasi *bitwise logical AND comparison*. Hasil dari operasi bitwise alamat IP dengan subnet mask itulah yang disebut dengan network identifier.

Contoh:

```
Alamat IP    10000011 01101011 10100100 00011010 (131.107.164.026)
Subnet Mask  11111111 11111111 11110000 00000000 (255.255.240.000)
------------------------------------------------------------------
Network ID   10000011 01101011 10100000 00000000 (131.107.160.000)
```

Tabel Pembuatan subnet
----------------------

### Subnetting Alamat IP kelas A

Tabel berikut berisi subnetting yang dapat dilakukan pada alamat IP dengan network identifier kelas A.

| Jumlah subnet(segmen jaringan) | Jumlah subnet bit | Subnet mask(notasi desimal bertitik/notasi panjang prefiks) | Jumlah host tiap subnet |
| --- | --- | --- | --- |
| 1-2 | 1 | 255.128.0.0 atau /9 | 8388606 |
| 3-4 | 2 | 255.192.0.0 atau /10 | 4194302 |
| 5-8 | 3 | 255.224.0.0 atau /11 | 2097150 |
| 9-16 | 4 | 255.240.0.0 atau /12 | 1048574 |
| 17-32 | 5 | 255.248.0.0 atau /13 | 524286 |
| 33-64 | 6 | 255.252.0.0 atau /14 | 262142 |
| 65-128 | 7 | 255.254.0.0 atau /15 | 131070 |
| 129-256 | 8 | 255.255.0.0 atau /16 | 65534 |
| 257-512 | 9 | 255.255.128.0 atau /17 | 32766 |
| 513-1024 | 10 | 255.255.192.0 atau /18 | 16382 |
| 1025-2048 | 11 | 255.255.224.0 atau /19 | 8190 |
| 2049-4096 | 12 | 255.255.240.0 atau /20 | 4094 |
| 4097-8192 | 13 | 255.255.248.0 atau /21 | 2046 |
| 8193-16384 | 14 | 255.255.252.0 atau /22 | 1022 |
| 16385-32768 | 15 | 255.255.254.0 atau /23 | 510 |
| 32769-65536 | 16 | 255.255.255.0 atau /24 | 254 |
| 65537-131072 | 17 | 255.255.255.128 atau /25 | 126 |
| 131073-262144 | 18 | 255.255.255.192 atau /26 | 62 |
| 262145-524288 | 19 | 255.255.255.224 atau /27 | 30 |
| 524289-1048576 | 20 | 255.255.255.240 atau /28 | 14 |
| 1048577-2097152 | 21 | 255.255.255.248 atau /29 | 6 |
| 2097153-4194304 | 22 | 255.255.255.252 atau /30 | 2 |
|

### Subnetting Alamat IP kelas B

Tabel berikut berisi subnetting yang dapat dilakukan pada alamat IP dengan network identifier kelas B.

| Jumlah subnet/segmen jaringan | Jumlah subnet bit | Subnet mask(notasi desimal bertitik/notasi panjang prefiks) | Jumlah host tiap subnet |
| --- | --- | --- | --- |
| 1-2 | 1 | 255.255.128.0 atau /17 | 32766 |
| 3-4 | 2 | 255.255.192.0 atau /18 | 16382 |
| 5-8 | 3 | 255.255.224.0 atau /19 | 8190 |
| 9-16 | 4 | 255.255.240.0 atau /20 | 4094 |
| 17-32 | 5 | 255.255.248.0 atau /21 | 2046 |
| 33-64 | 6 | 255.255.252.0 atau /22 | 1022 |
| 65-128 | 7 | 255.255.254.0 atau /23 | 510 |
| 129-256 | 8 | 255.255.255.0 atau /24 | 254 |
| 257-512 | 9 | 255.255.255.128 atau /25 | 126 |
| 513-1024 | 10 | 255.255.255.192 atau /26 | 62 |
| 1025-2048 | 11 | 255.255.255.224 atau /27 | 30 |
| 2049-4096 | 12 | 255.255.255.240 atau /28 | 14 |
| 4097-8192 | 13 | 255.255.255.248 atau /29 | 6 |
| 8193-16384 | 14 | 255.255.255.252 atau /30 | 2 |
|

### Subnetting Alamat IP kelas C

Tabel berikut berisi subnetting yang dapat dilakukan pada alamat IP dengan network identifier kelas C.

| Jumlah subnet(segmen jaringan) | Jumlah subnet bit | Subnet mask(notasi desimal bertitik/notasi panjang prefiks) | Jumlah host tiap subnet |
| --- | --- | --- | --- |
| 0-1 | 0 | 255.255.255.0 atau /24 | 254 |
| 1-2 | 1 | 255.255.255.128 atau /25 | 126 |
| 3-4 | 2 | 255.255.255.192 atau /26 | 62 |
| 5-8 | 3 | 255.255.255.224 atau /27 | 30 |
| 9-16 | 4 | 255.255.255.240 atau /28 | 14 |
| 17-32 | 5 | 255.255.255.248 atau /29 | 6 |
| 33-64 | 6 | 255.255.255.252 atau /30 | 2 |
|

Variable-length Subnetting
--------------------------

Bahasan di atas merupakan sebuah contoh dari subnetting yang memiliki panjang tetap (*fixed length subnetting*), yang akan menghasilkan beberapa subjaringan dengan jumlah host yang sama. Meskipun demikian, dalam kenyataannya segmen jaringan tidaklah seperti itu. Beberapa segmen jaringan membutuhkan lebih banyak alamat IP dibandingkan lainnya, dan beberapa segmen jaringan membutuhkan lebih sedikit alamat IP.

Jika proses subnetting yang menghasilkan beberapa subjaringan dengan jumlah host yang sama telah dilakukan, maka ada kemungkinan di dalam segmen-segmen jaringan tersebut memiliki alamat-alamat yang tidak digunakan atau membutuhkan lebih banyak alamat. Karena itulah, dalam kasus ini proses subnetting harus dilakukan berdasarkan segmen jaringan yang dibutuhkan oleh jumlah host terbanyak. Untuk memaksimalkan penggunaan ruangan alamat yang tetap, subnetting pun diaplikasikan secara rekursif untuk membentuk beberapa subjaringan dengan ukuran bervariasi, yang diturunkan dari network identifier yang sama. Teknik subnetting seperti ini disebut juga variable-length subnetting. Subjaringan-subjaringan yang dibuat dengan teknik ini menggunakan subnet mask yang disebut sebagai Variable-length Subnet Mask (VLSM).

Karena semua subnet diturunkan dari network identifier yang sama, jika subnet-subnet tersebut berurutan (kontigu subnet yang berada dalam network identifier yang sama yang dapat saling berhubungan satu sama lainnya), rute yang ditujukan ke subnet-subnet tersebut dapat diringkas dengan menyingkat network identifier yang asli.

Teknik variable-length subnetting harus dilakukan secara hati-hati sehingga subnet yang dibentuk pun unik, dan dengan menggunakan subnet mask tersebut dapat dibedakan dengan subnet lainnya, meski berada dalam network identifer asli yang sama. Kehati-hatian tersebut melibatkan analisis yang lebih terhadap segmen-segmen jaringan yang akan menentukan berapa banyak segmen yang akan dibuat dan berapa banyak jumlah host dalam setiap segmennya.

Dengan menggunakan variable-length subnetting, teknik subnetting dapat dilakukan secara rekursif: network identifier yang sebelumnya telah di-subnet-kan, di-subnet-kan kembali. Ketika melakukannya, bit-bit network identifier tersebut harus bersifat tetap dan subnetting pun dilakukan dengan mengambil sisa dari bit-bit host.

Tentu saja, teknik ini pun membutuhkan protokol routing baru. Protokol-protokol routing yang mendukung variable-length subnetting adalah Routing Information Protocol (RIP) versi 2 (RIPv2), Open Shortest Path First (OSPF), dan Border Gateway Protocol (BGP versi 4 (BGPv4). Protokol RIP versi 1 yang lama, tidak mendukungya, sehingga jika ada sebuah router yang hanya mendukung protokol tersebut, maka router tersebut tidak dapat melakukan routing terhadap subnet yang dibagi dengan menggunakan teknik variable-length subnet mask.