Saya baru tahu bahwa Ping menggunakan ICMP secara langsung, yaitu memintas lapisan transport. Bagaimana mungkin? Bukankah seharusnya sebuah aplikasi (L5) menggunakan UDP atau TCP di layer transport (L4)? Cara saya tahu itu adalah bahwa setiap lapisan buta untuk segala sesuatu yang 2 lapisan ke bawah, yaitu antarmuka aplikasi dengan L4 menggunakan soket, tetapi buta untuk L3 ke L1.
3
Jawaban:
Ketika seseorang mengatakan "Ping", mereka merujuk ke ping ICMP, seperti itulah ping aslinya . ICMP sebenarnya bekerja pada level yang lebih rendah daripada protokol transport UDP & TCP dan tidak menggunakan port [ 1 ]:
Itu sebagian besar karena ICMP digunakan untuk melaporkan kesalahan karena IP tidak sepenuhnya dapat diandalkan sendiri. Jadi, ICMP adalah protokol tingkat rendah yang menggunakan IP, bukan TCP / UDP. Ping hanyalah alat yang menggunakan ICMP (berkat level rendah C), namun, ICMP bukan hanya ping atau traceroute, tujuan utamanya sangat berbeda seperti yang saya catat.
Dan saya tidak tahu bagaimana Anda mengetahui bahwa layer buta untuk layer di bawahnya. Itu tidak benar, atau setidak-tidaknya setahu saya. Ping dapat menggunakan protokol apa pun yang diinginkannya dengan mengimplementasikannya dalam C.
Bahasa tingkat rendah seperti C memiliki akses langsung ke modul berbasis sistem IP, sehingga dimungkinkan untuk menggunakan protokol tersebut dengan menggunakan C (dan hampir semua bahasa lain yang ditulis dalam C saat ini).
Untuk menjelaskan lebih eksplisit (tl; dr):
Ping adalah alat berbasis ICMP, tidak menggunakan TCP dan UDP, sehingga tidak bekerja dengan port (karena protokol tidak memerlukan port, hanya layanan yang melakukannya). Itu tidak memerlukan fungsionalitas protokol tingkat yang lebih tinggi seperti TCP, sehingga tidak mengimplementasikannya. Dan meskipun ping sebagai aplikasi, ia berfungsi pada ICMP dan tidak menggunakan port.
sumber