Pertanyaan Apa perbedaan antara soket Unix dan soket TCP / IP?


Dari jawaban ini:

https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424


81
2018-03-20 09:13






Jawaban:


SEBUAH Soket UNIX adalah mekanisme komunikasi antar-proses yang memungkinkan pertukaran data dua arah antara proses yang berjalan pada mesin yang sama.

Soket IP (terutama soket TCP / IP) adalah mekanisme yang memungkinkan komunikasi antar proses melalui jaringan. Dalam beberapa kasus, Anda dapat menggunakan soket TCP / IP untuk berbicara dengan proses yang berjalan pada komputer yang sama (dengan menggunakan antarmuka loopback).

Soket domain UNIX tahu bahwa mereka mengeksekusi pada sistem yang sama, sehingga mereka dapat menghindari beberapa pemeriksaan dan operasi (seperti routing); yang membuatnya lebih cepat dan lebih ringan dari soket IP. Jadi jika Anda berencana untuk berkomunikasi dengan proses pada host yang sama, ini adalah opsi yang lebih baik daripada soket IP.

Edit: Sesuai Komentar Nils Toedtmann: Soket domain UNIX tunduk pada hak akses file sistem, sementara soket TCP hanya dapat dikontrol pada tingkat filter paket.


144
2018-03-20 09:39



Mungkin menambahkan bahwa soket domain UNIX tunduk pada izin sistem file, sementara soket TCP tidak. Akibatnya, jauh lebih mudah untuk mengatur pengguna mana yang memiliki akses ke soket domain UNIX daripada untuk soket TCP. - Nils Toedtmann
@ pQd, Dude dapatkah Anda menyebutnya Unix IPC bukan Unix Socket? - Pacerier
Soket @Pacerier Unix hanyalah salah satu cara untuk mencapai unix IPC (berbagi memori Interprocess antara lain), jadi tidak akan benar untuk memanggil soket unix unix IPC. - fyquah95
Soket TCP juga ditangani oleh Unix? Soket TCP merupakan bagian dari spesifikasi protokol TCP atau protokol apa pun yang dapat menggunakan IP Sockets? - Federico
@Federico Saya memposting jawaban yang mencoba untuk menjawab pertanyaan Anda, jika Anda membutuhkan lebih banyak kedalaman, silakan kirimkan pertanyaan baru. - Peter Green


Anda dapat mendaftarkan soket unix lokal mesin Anda sendiri dengan perintah berikut:

netstat -a -p --unix

Selamat bersenang-senang!


21
2018-03-20 13:49



Soket Unix tidak ada di Windows. netstat Namun bekerja pada Windows. - Mark Tomlin
@apache, hal serupa di Windows disebut "Named pipes". - expert
Pipa bernama juga hadir di Linux. - Sahil Singh
@expert, pipa bernama di Windows sama dengan pipa bernama di Unix. Soket IPC di Unix tidak memiliki kesetaraan di Windows - Pacerier
Catatan satu perbedaan adalah bahwa pipa bernama hanya dapat memiliki satu klien yang terhubung pada satu waktu (2 proses komunikasi total). Soket UNIX, seperti soket IP, dapat memiliki beberapa klien yang terhubung sekaligus, masing-masing mendapatkan tanggapan terpisah kembali. - peterflynn


Apa perbedaan antara soket Unix dan soket TCP / IP?

Sebuah soket TCP / IP digunakan untuk komunikasi di seluruh jaringan TCP / IP. Sebuah soket TCP yang terhubung diidentifikasi oleh kombinasi IP lokal, port lokal, IP jarak jauh dan port jarak jauh. Sebuah soket TCP mendengarkan diidentifikasi oleh port lokal dan mungkin IP lokal. AIUI setidaknya di linux TCP / IP sockets selalu menghasilkan generasi dan decoding paket TCP / IP, bahkan jika klien dan server berada pada mesin yang sama.

Sebuah soket domain unix (kadang-kadang disingkat menjadi soket unix) di sisi lain beroperasi pada satu mesin. Soket yang mendengarkan hidup dalam hierarki sistem file dan aksesnya dapat dikontrol oleh izin filesystem.

Selanjutnya proses menerima koneksi pada soket Unix dapat menentukan ID pengguna dari proses yang menghubungkan. Ini dapat menghindari kebutuhan untuk langkah otentikasi. Daripada menghasilkan kata sandi untuk server database Anda dan menyertakan salinannya di kode webapp Anda, Anda dapat memberitahu server database bahwa pengguna yang menjalankan webapp memiliki akses ke akun pengguna terkait dalam database.


Soket TCP juga ditangani oleh Unix?

Tentu saja

Soket TCP adalah bagian dari spesifikasi protokol TCP

Spesifikasi protokol internet hanya cenderung memperhatikan apa yang terjadi pada kabel, spesifikasi TCP berisi definisi Socket tetapi definisi itu tidak sama dengan bagaimana istilah tersebut digunakan oleh "soket API".

"Soket API" seperti yang kita tahu itu diperkenalkan oleh BSD tetapi kemudian disalin di seluruh tempat dan dimasukkan sebagai bagian dari standar POSIX. Hal-hal dasar untuk soket TCP dan UDP cenderung jauh sama di berbagai platform tetapi lebih maju barang dan hal-hal yang berinteraksi dengan bagian lain dari OS bervariasi, misalnya pada sistem unix-like soket diidentifikasi oleh pegangan file dan dapat dibaca / ditulis oleh file API, ini tidak terjadi pada windows.

Beberapa ekstensi ke soket soket telah didokumentasikan dalam rfcs tetapi mereka RFC hanya "informasi".

atau protokol apa pun bisa menggunakan IP Socket?

Ketika sebuah aplikasi secara eksplisit membuat soket menggunakan fungsi "socket" (soket juga dibuat oleh fungsi accept), ia melewati tiga parameter, "domain", "tipe" dan "protokol". Di antara mereka, ketiga parameter ini dapat digunakan untuk memilih berbagai jenis soket.

  • domain memilih keluarga protokol / alamat yang digunakan, mis. AF_INET untuk ipv4, AF_INET6 untuk ipv6, AF_Unix untuk jalur file unix, dll.
  • jenis memilih semantik komunikasi, yang utama adalah datagram dan streaming tetapi ada juga jenis yang lebih khusus lainnya.
  • protokol memilih protokol yang akan digunakan, jika disetel ke 0 protokol default untuk kombinasi Domain dan jenis yang akan digunakan.

3
2017-09-13 17:32