Bisakah seseorang tolong jelaskan dengan jelas perbedaan antara port dan soket. Saya tahu bahwa port berfungsi sebagai pintu ke jaringan untuk proses aplikasi dan bahwa proses aplikasi menggunakan koneksi soket ke nomor port yang diberikan untuk menangani komunikasi jaringan tetapi ketika Anda memiliki beberapa proses mendengarkan pada nomor port tunggal, saya menemukan sulit untuk memahami perbedaan antara soket dan port dan bagaimana mereka semua cocok bersama.
networking
sockets
networks
cobie
sumber
sumber
Jawaban:
S adalah program server: katakanlah ini adalah server HTTP, jadi ia akan menggunakan nomor port terkenal untuk HTTP , yaitu 80. Saya menjalankannya pada host dengan alamat IP
10.0.0.4
, jadi ia akan mendengarkan koneksi pada10.0.0.4:80
(karena di situlah semua orang berharap menemukannya).Di dalam S , saya akan membuat soket dan mengikatnya ke alamat itu: sekarang, OS tahu bahwa koneksi yang masuk
10.0.0.4:80
harus dialihkan ke proses S saya melalui soket tertentu.output netstat setelah soket terikat:
NB. alamat lokal semuanya nol karena S tidak peduli bagaimana kliennya mencapainya
Setelah S memiliki ikatan soket ini, ia akan menerima koneksi - setiap kali klien baru terhubung,
accept
mengembalikan soket baru , yang khusus untuk klien ituoutput netstat setelah koneksi diterima:
10.0.0.4:80
mewakili S end 's sambungan, dan berhubungan dengan socket dikembalikan olehaccept
10.0.0.5:55715
adalah ujung koneksi klien, dan dikaitkan dengan soket yang dilewati klien untuk menghubungkan . Port klien tidak digunakan untuk apa pun kecuali merutekan paket pada koneksi TCP ini ke proses yang benar: itu ditugaskan secara acak oleh kernel klien dari rentang port sementara.Sekarang, S dapat dengan senang hati menerima lebih banyak koneksi klien ... masing-masing akan mendapatkan soketnya sendiri, setiap soket akan dikaitkan dengan koneksi TCP yang unik, dan setiap koneksi akan memiliki alamat jarak jauh yang unik. S akan melacak status klien (jika ada) dengan menghubungkannya dengan soket.
Jadi, kira-kira:
accept
panggilan bersamaan kembali, ia melakukannya hanya dalam satu proses, setiap soket koneksi masuk unik untuk satu contoh serversocketpair
, menjadi anak dari proses itu dan mewarisi satu, atau secara eksplisit melewati salah satu soket dari proses itusumber
Pikirkan mesin Anda sebagai bangunan apartemen:
Port adalah nomor apartemen.
Soket adalah pintu sebuah apartemen.
Alamat IP adalah alamat jalan gedung.
sumber
A socket is the door of an apartment.
Tapi tidak bisakah ada banyak soket terbuka di satu port?Port adalah bagian dari alamat dalam protokol TCP dan UDP. Ini digunakan untuk membantu OS mengidentifikasi aplikasi mana yang harus mendapatkan data yang diterima. OS harus mendukung port untuk mendukung TCP dan UDP karena port adalah bagian intrinsik dari TCP dan UDP.
Soket adalah bagian dari antarmuka yang disajikan OS ke aplikasi untuk memungkinkan mereka mengirim dan menerima data jaringan. Sebagian besar implementasi soket mendukung banyak protokol di luar TCP dan UDP, beberapa di antaranya tidak memiliki konsep port. OS tidak harus mendukung soket untuk mendukung TCP atau UDP; itu bisa menyediakan antarmuka yang berbeda untuk aplikasi untuk digunakan. Soket hanyalah salah satu cara mengirim dan menerima data pada port tertentu.
sumber
Komputer memiliki alamat IP yang mengidentifikasinya sebagai entitas terpisah di jaringan. Kami menambahkan nomor tambahan untuk itu agar kami dapat membedakan antara koneksi ke komputer itu. Ini adalah nomor port. Di sisi OS koneksi Anda memerlukan buffer, status koneksi, dll. Objek logis ini adalah soket.
sumber
Soket adalah jalur komunikasi ke port. Ketika Anda ingin program Anda berkomunikasi melalui jaringan, Anda telah memberikannya cara mengatasi port dan ini dilakukan dengan membuat soket dan memasangnya ke port. Pada dasarnya, socket = IP + ports Soket menyediakan akses ke port + ip
sumber
Alamat IP mengidentifikasi perangkat, yaitu alamat ke perangkat tertentu, ketika Anda mencapai mesin menggunakan port IP now, menentukan proses yang mana dalam mesin itu untuk berkomunikasi.
Jadi untuk komunikasi yang sebenarnya terjadi, Anda membutuhkan port + IP yang disebut socket.
sumber