Bagaimana Ping tidak menggunakan protokol transport?

3

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.

ToniAz
sumber
1
Model OSI adalah abstrak yang belum pernah sepenuhnya diimplementasikan sebagaimana ditulis dalam tumpukan apa pun, jadi perlu diingat bahwa tidak ada lapisan di atas 2 yang benar-benar wajib. aplikasi pada layer 7 dapat melakukan tugas-tugas pada layer 2, atau 3, atau 4 jika itu harus dipilih. lihat jawaban saya di sini, tentang bagaimana aplikasi menggunakan pustaka Soket untuk mengatur koneksi menggunakan panggilan fungsi soket yang berfungsi pada lapisan berbeda pada stack: superuser.com/questions/984182/…
Frank Thomas

Jawaban:

3

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 ]:

ICMP, menggunakan dukungan dasar IP seolah-olah itu adalah protokol tingkat yang lebih tinggi, namun, ICMP sebenarnya merupakan bagian integral dari IP, dan harus diimplementasikan oleh setiap modul IP.

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.

Fanatique
sumber
1
Ping dapat menggunakan protokol apa pun yang ia inginkan. Saya pikir Anda juga dapat menjelaskan bahwa ketika seseorang mengatakan "Ping" yang berarti "ICMP Ping".
Akina
Terima kasih telah menyebutkan @Akina itu. Saya telah memperbarui jawaban saya sesuai dengan itu.
Fanatique
@Fanatique Terima kasih atas klarifikasi. Saya tidak menyiratkan bahwa ICMP adalah protokol tingkat aplikasi. Mungkin kebingungannya adalah tentang "itu" dalam kalimat pertama. Dengan "itu memotong" Maksud saya "Ping memotong".
ToniAz
1
Ya, saya tahu, saya percaya itu sebenarnya salah tafsir dari pihak saya, saya akan mengedit jawaban saya agar tidak menyiratkan hal itu. Namun, seperti yang saya jawab, sumber ping tidak didasarkan pada tcp atau udp, ini berdasarkan icmp.
Fanatique