Karena Ethernet menggunakan alamat MAC untuk komunikasi, dapatkah saya membuat jaringan Ethernet di mana perangkat tidak memiliki alamat IP, hanya alamat MAC?
Jika Anda menulis semua perangkat lunak Anda sendiri dari awal, maka Anda pasti bisa melakukan ini. Biarkan saja perangkat lunak menerima alamat MAC di mana saja yang mitra normal untuk program itu akan menerima alamat IP. Gunakan semua panggilan sistem untuk mengirim paket ethernet mentah daripada alamat IP dan itu akan berhasil - tetapi itu akan menjadi masalah besar.
Secara umum, alamat MAC di jaringan Anda tidak mengikuti pola apa pun. Mereka dibakar ke perangkat keras oleh produsen. Mereka panjang dan tebal. Milik saya sekarang adalah C8-60-00-CA-4B-9A. Komputer di sebelah saya adalah 00-40-F4-48-1B-88.
Agar mesin dapat saling berbicara satu sama lain, Anda dapat memberikan masing-masing mesin daftar kode-keras dari semua alamat MAC dari semua mesin lain di jaringan sehingga ia akan tahu ke mana harus mengirim paket. Ini banyak mengetik kesalahan rawan, dan setiap kali Anda mengubah perangkat keras jaringan Anda, Anda harus berkeliling dan mengubah semua daftar untuk mencerminkan alamat MAC yang baru.
Ini adalah masalah besar, jadi Anda mungkin akan menemukan cara untuk mesin-mesin di jaringan untuk secara otomatis menemukan alamat MAC satu sama lain menggunakan paket siaran. Maka Anda akan memberi mereka cara untuk mengidentifikasi diri mereka dengan beberapa alamat yang bermakna sehingga Anda harus mengetikkan perintah seperti "telnet C8-60-00-CA-4B-9A".
Ternyata inilah yang dilakukan oleh IP - ini adalah cara untuk menggunakan angka yang bermakna untuk mengatasi host di jaringan daripada mengkodekan alamat MAC. Tambahkan DNS di atas IP dan Anda dapat mengetik perintah seperti "telnet webserver".
Tidak bisakah Ethernet memanfaatkan alamat IP untuk mengirim pesan? Saya tidak mengatakan itu harus, saya hanya bertanya apakah itu bisa memilih untuk melakukannya.
Alamat MAC adalah 6 byte info dan alamat IP hanya 4 byte, sehingga Anda tidak dapat melakukan pemetaan 1 banding 1. Anda memerlukan beberapa cara untuk menemukan alamat MAC (untuk dimasukkan ke dalam paket) dari alamat IP (disediakan oleh perangkat lunak yang ingin berkomunikasi dengan host lain di jaringan).
Salah satu (hard core) cara untuk melakukan ini adalah dengan masuk ke setiap mesin di jaringan, dan mengubah alamat MAC perangkat kerasnya agar terlihat seperti alamat IP dengan membuat dua byte teratas menjadi nol (atau nomor tetap lainnya yang sama untuk setiap mesin di jaringan) dan atur empat byte ke bawah ke "alamat IP" yang Anda inginkan ada di jaringan. (Sebagian besar kartu jaringan akan membiarkan Anda masuk dan memodifikasi alamat MAC yang ditetapkan vendor)
Untuk membuat ini benar-benar berfungsi, selanjutnya Anda juga harus meretas kode di tumpukan jaringan Anda untuk benar-benar menggunakan sistem ini. Anda pada dasarnya akan merobek segala sesuatu yang berkaitan dengan ARP (metode yang digunakan IP untuk menerjemahkan alamat IP ke alamat MAC). Anda akan merobek bagian yang membangun / membaca header IP. Alih-alih, Anda akan mengganti semuanya dengan kode yang sangat sederhana yang, mengingat paket IP yang akan dikirim ke host di alamat wxyz, buat kerangka ethernet dengan alamat DEST yang diatur ke 00-00-wxyz.
Anda juga akan memerlukan cara untuk menunjukkan ke penerima paket yang protokolnya (UDP, TCP) dimaksudkan. Anda mungkin bisa menempel ini di suatu tempat di header ethernet dengan menimpa bidang yang ada. Mungkin menggunakan salah satu dari dua byte teratas dari alamat sumber? Ini tidak akan mempengaruhi kemampuan mesin tujuan untuk menerima, tetapi dapat mengacaukan beberapa sakelar. Anda juga bisa menambahkan protokol ke awal atau akhir frame Ethernet dan meningkatkan ukuran payload per satu - tetapi itu mulai berbau seperti header IP.
Jadi, semua pekerjaan apa yang akan Anda beli?
Pertama itu akan menghemat biaya pencarian di tabel ARP pada setiap paket keluar. Ini mungkin hanya dalam urutan mikrodetik.
Anda menyimpan pekerjaan komputasi checksum header IP, dan memori yang diperlukan untuk menahannya. Ini mungkin tidak signifikan pada perangkat keras modern.
Anda menyimpan 16 byte di setiap paket di jaringan karena tidak akan ada header IP. Ini bisa bertambah tergantung pada aplikasi.
Keuntungan terbesar adalah bahwa Anda tidak perlu melakukan permintaan ARP. Mengirim paket IP standar ke host baru memicu pertukaran ARP yang dapat mengambil milidetik dan tidak dapat diprediksi. Ini bisa menjadi keuntungan besar untuk beberapa aplikasi yang sangat sensitif terhadap latensi dan jitter.
Untuk beberapa aplikasi yang sangat khusus ini sebenarnya masuk akal untuk dilakukan. Saya pernah bekerja sistem real-time yang hanya menggunakan siaran paket UDP untuk semua komunikasi antar host dengan satu-satunya alasan bahwa itu menghindari urutan ARP menendang dan tak terduga menambah penundaan dan jitter. Saya juga pernah bekerja pada sistem embedded sumber daya terbatas yang bekerja dengan mengirimkan muatan UDP ke dalam paket IP secara langsung (tanpa header IP) karena ini menghemat semua kerumitan dan memori yang diperlukan untuk mengimplementasikan semua ARP dan netmask dan hal-hal checksum tambahan.