Apa perbedaan antara port dan soket?

928

Ini adalah pertanyaan yang diajukan oleh salah satu insinyur perangkat lunak di organisasi saya. Saya tertarik dengan definisi terluas.

Richard Dorman
sumber
19
Hanya untuk mengulangi, soket tidak terbatas pada IO jaringan. Mereka tersedia dalam segala macam situasi untuk streaming data antara berbagai aplikasi.
Oli

Jawaban:

977

Ringkasan

Soket TCP adalah contoh titik akhir yang ditentukan oleh alamat IP dan port dalam konteks koneksi TCP tertentu atau keadaan mendengarkan.

Port adalah pengidentifikasi virtualisasi yang mendefinisikan titik akhir layanan (berbeda dari titik akhir instance layanan alias pengidentifikasi sesi).

Soket TCP bukan koneksi , itu adalah titik akhir dari koneksi tertentu.

Mungkin ada koneksi bersamaan ke titik akhir layanan , karena koneksi diidentifikasi oleh titik akhir lokal dan jarak jauh , yang memungkinkan lalu lintas untuk dialihkan ke mesin virtual layanan tertentu.

Hanya ada satu soket pendengar untuk kombinasi alamat / port yang diberikan .

Eksposisi

Ini adalah pertanyaan menarik yang memaksa saya untuk memeriksa kembali sejumlah hal yang saya pikir saya ketahui dari dalam. Anda akan berpikir nama seperti "socket" akan jelas: itu jelas dipilih untuk membangkitkan citra titik akhir di mana Anda pasang kabel jaringan, ada paralel fungsional yang kuat. Namun demikian, dalam bahasa jaringan, kata "socket" membawa begitu banyak bagasi sehingga pemeriksaan ulang yang cermat diperlukan.

Dalam arti seluas mungkin, port adalah titik masuknya atau keluar. Meskipun tidak digunakan dalam konteks jaringan, kata porte Perancis secara harfiah berarti pintu atau gerbang , lebih jauh menekankan fakta bahwa pelabuhan adalah titik akhir transportasi apakah Anda mengirimkan data atau wadah baja besar.

Untuk tujuan diskusi ini saya akan membatasi pertimbangan pada konteks jaringan TCP-IP. Model OSI semuanya sangat baik tetapi belum pernah sepenuhnya diimplementasikan, apalagi digunakan secara luas dalam kondisi lalu lintas tinggi dengan tekanan tinggi.

Kombinasi alamat IP dan port secara ketat dikenal sebagai titik akhir dan kadang-kadang disebut soket. Penggunaan ini berasal dari RFC793, spesifikasi TCP asli.

Koneksi TCP ditentukan oleh dua titik akhir alias soket .

Titik akhir (soket) ditentukan oleh kombinasi alamat jaringan dan pengidentifikasi port . Perhatikan bahwa alamat / port tidak sepenuhnya mengidentifikasi soket (lebih lanjut tentang ini nanti).

Tujuan port adalah untuk membedakan beberapa titik akhir pada alamat jaringan yang diberikan. Anda dapat mengatakan bahwa port adalah titik akhir tervirtualisasi. Virtualisasi ini memungkinkan beberapa koneksi bersamaan pada satu antarmuka jaringan.

Pasangan soket (tupel 4 yang terdiri dari alamat IP klien, nomor port klien, alamat IP server, dan nomor port server) yang menentukan dua titik akhir yang secara unik mengidentifikasi setiap koneksi TCP di internet. ( TCP-IP Illustrated Volume 1 , W. Richard Stevens)

Dalam sebagian besar bahasa yang diturunkan C, koneksi TCP dibuat dan dimanipulasi menggunakan metode pada instance kelas Socket. Meskipun umum untuk beroperasi pada tingkat abstraksi yang lebih tinggi, biasanya turunan dari kelas NetworkStream, ini umumnya memaparkan referensi ke objek soket. Untuk pembuat kode objek soket ini tampaknya mewakili koneksi karena koneksi dibuat dan dimanipulasi menggunakan metode objek soket.

Di C #, untuk membuat koneksi TCP (ke pendengar yang ada) pertama-tama Anda membuat TcpClient . Jika Anda tidak menentukan titik akhir ke konstruktor TcpClient, ia menggunakan default - dengan satu atau lain cara titik akhir lokal ditentukan. Kemudian Anda memanggil metode Connect pada instance yang Anda buat. Metode ini membutuhkan parameter yang menggambarkan titik akhir lainnya.

Semua ini agak membingungkan dan membuat Anda percaya bahwa soket adalah koneksi, yang bollocks. Saya bekerja di bawah kesalahpahaman ini sampai Richard Dorman mengajukan pertanyaan.

Setelah banyak membaca dan berpikir, saya sekarang yakin bahwa akan jauh lebih masuk akal untuk memiliki kelas TcpConnection dengan konstruktor yang membutuhkan dua argumen, LocalEndpoint dan RemoteEndpoint . Anda mungkin dapat mendukung argumen RemoteEndpoint tunggal ketika default dapat diterima untuk titik akhir lokal. Ini ambigu pada komputer multihomed, tetapi ambiguitas dapat diatasi dengan menggunakan tabel routing dengan memilih antarmuka dengan rute terpendek ke remote endpoint.

Kejelasan juga akan ditingkatkan dalam hal lain. Soket tidak diidentifikasi oleh kombinasi alamat IP dan port:

[...] TCP mendemultipleks segmen yang masuk menggunakan keempat nilai yang terdiri dari alamat lokal dan asing: alamat IP tujuan, nomor port tujuan, alamat IP sumber, dan nomor port sumber. TCP tidak dapat menentukan proses mana yang mendapatkan segmen yang masuk dengan hanya melihat port tujuan. Selain itu, satu-satunya dari [berbagai] titik akhir di [nomor port yang diberikan] yang akan menerima permintaan koneksi masuk adalah yang ada dalam status mendengarkan. (p255, TCP-IP Illustrated Volume 1 , W. Richard Stevens)

Seperti yang Anda lihat, bukan hanya mungkin tetapi sangat mungkin untuk layanan jaringan memiliki banyak soket dengan alamat / port yang sama, tetapi hanya satu soket pendengar pada kombinasi alamat / port tertentu. Implementasi pustaka yang umum menyajikan kelas soket, sebuah instance yang digunakan untuk membuat dan mengelola koneksi. Ini sangat disayangkan, karena menyebabkan kebingungan dan telah menyebabkan persebaran yang luas dari kedua konsep tersebut.

Hagrawal tidak percaya padaku (lihat komentar) jadi inilah contoh nyata. Saya menghubungkan browser web ke http://dilbert.com dan kemudian berlari netstat -an -p tcp. Enam baris terakhir dari output berisi dua contoh fakta bahwa alamat dan port tidak cukup untuk mengidentifikasi soket secara unik. Ada dua koneksi berbeda antara 192.168.1.3 (workstation saya) dan 54.252.94.236:80 (server HTTP jauh)

  TCP    192.168.1.3:63240      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63241      54.252.94.236:80       SYN_SENT
  TCP    192.168.1.3:63242      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:63243      207.38.110.62:80       SYN_SENT
  TCP    192.168.1.3:64161      65.54.225.168:443      ESTABLISHED

Karena soket adalah titik akhir koneksi, ada dua soket dengan kombinasi alamat / port 207.38.110.62:80dan dua soket lainnya dengan kombinasi alamat / port 54.252.94.236:80.

Saya pikir kesalahpahaman Hagrawal muncul dari saya sangat berhati-hati menggunakan kata "mengidentifikasi". Maksud saya "mengidentifikasi sepenuhnya, tidak ambigu dan unik". Dalam sampel di atas ada dua titik akhir dengan kombinasi alamat / port 54.252.94.236:80. Jika yang Anda miliki hanyalah alamat dan porta, Anda tidak memiliki cukup informasi untuk membedakan soket ini. Tidak cukup informasi untuk mengidentifikasi soket.

Tambahan

Paragraf dua bagian 2.7 dari RFC793 mengatakan

Koneksi sepenuhnya ditentukan oleh sepasang soket di ujungnya. Soket lokal dapat berpartisipasi dalam banyak koneksi ke soket asing yang berbeda.

Definisi soket ini tidak membantu dari perspektif pemrograman karena tidak sama dengan objek soket , yang merupakan titik akhir dari koneksi tertentu. Bagi seorang programmer, dan sebagian besar pemirsa pertanyaan ini adalah programmer, ini adalah perbedaan fungsional yang vital.

Referensi

  1. TCP-IP Illustrated Volume 1 The Protocols , W. Richard Stevens, 1994 Addison Wesley

  2. RFC793 , Institut Ilmu Informasi, Universitas California Selatan untuk DARPA

  3. RFC147 , Definisi Soket, Joel M. Winett, Laboratorium Lincoln

Peter Wone
sumber
6
Mungkin, analogi dunia nyata dengan kata kunci socket and port akan membantu mereka yang menjawab pertanyaan. Masih penjelasan yang bagus!
rohitverma
5
@rationalcoder - Baca seluruh jawaban. Ada perbedaan antara didefinisikan oleh sesuatu dan diidentifikasi olehnya. Misalnya instance kelas didefinisikan oleh kelas. Mereka sebagian tetapi tidak sepenuhnya diidentifikasi olehnya.
Peter Wone
6
Saya tidak memilih karena saya tidak setuju dengan pernyataan ini - " Soket tidak diidentifikasi oleh kombinasi alamat IP dan port: " .. Baca TCP RFC - tools.ietf.org/html/rfc793 .. Sangat jelas bahwa socket adalah kombinasi dari IP dan port, jika Anda tahu IP dan port maka Anda telah mengidentifikasi socket atau endpoint, jika Anda tahu pasangan socket yaitu port IP + client dan port IP + server maka Anda telah mengidentifikasi koneksi unik ..
hagrawal
6
"Dalam sampel di atas ada dua titik akhir dengan kombinasi alamat / port 54.252.94.236:80. Jika semua yang Anda miliki adalah alamat dan port, Anda tidak memiliki informasi yang cukup untuk membedakan soket ini. Tidak cukup informasi untuk mengidentifikasi stopkontak." Bukankah itu soket yang sama, tetapi koneksi yang berbeda, antara dua koneksi Anda memiliki 3 soket, 2 penduduk setempat dan satu soket server yang sama sedang terhubung; atau apakah mereka sebenarnya dua soket yang berbeda? Tidak akan ada membedakan mereka karena mereka sama, tetapi untuk membedakan koneksi Anda akan memerlukan soket lokal yang berbeda.
Andrew Clavin
6
-1 Jawaban Anda salah. Anda: "Soket TCP adalah ... titik akhir koneksi tertentu ." RFC 793 : "soket dapat digunakan secara bersamaan dalam beberapa koneksi ." Saya tidak yakin perpustakaan apa yang Anda gunakan, tetapi di perpustakaan yang saya gunakan, objek soket telah secara unik ditentukan oleh IP dan port dan telah menelurkan objek koneksi untuk setiap soket jauh.
Zaz
187

Soket terdiri dari tiga hal:

  1. Alamat IP
  2. Protokol transportasi
  3. Nomor porta

Port adalah angka antara 1 dan 65535 inklusif yang menandakan gerbang logis dalam perangkat. Setiap koneksi antara klien dan server memerlukan soket yang unik.

Sebagai contoh:

  • 1030 adalah porta.
  • (10.1.1.2, TCP, port 1030) adalah sebuah soket.
RT_
sumber
80
Tidak. Soket terdiri dari lima hal: {protokol, alamat lokal, port lokal, alamat jarak jauh, port jarak jauh}.
Marquis of Lorne
19
@ EJP Tidak, lagi. Lihat jawaban yang dipilih untuk informasi lebih lanjut.
Kehlan Krumme
2
@ KorayTugay Ada di header IP. Apa yang membuat Anda berpikir lapisan TCP tidak bisa melihat itu?
Marquis of Lorne
1
@ EJP seperti yang saya lihat dalam jawaban yang paling banyak dipilih di atas bahwa socket BUKAN koneksi itu sendiri tetapi itu adalah titik akhir dari koneksi maka bagaimana bisa termasuk port lokal dan remote dan alamat ip. Soket hanya akan mewakili satu sisi koneksi yaitu port lokal dan alamat ip lokal ATAU port jarak jauh dan akses ip jarak jauh. Mohon perbaiki saya jika saya salah.
RBT
7
@EJP Still RFC 793: "Sepasang soket secara unik mengidentifikasi setiap koneksi. Artinya, sebuah soket dapat digunakan secara bersamaan dalam beberapa koneksi." Jika soket sudah terdiri dari lima hal, bagaimana mungkin ada "sepasang soket" dalam kutipan saya?
Gab 是 好人
100

Soket mewakili koneksi tunggal antara dua aplikasi jaringan. Kedua aplikasi ini secara nominal berjalan pada komputer yang berbeda, tetapi soket juga dapat digunakan untuk komunikasi antarproses pada satu komputer. Aplikasi dapat membuat beberapa soket untuk berkomunikasi satu sama lain. Soket adalah dua arah, artinya kedua sisi koneksi mampu mengirim dan menerima data. Oleh karena itu soket dapat dibuat secara teoritis di setiap tingkat model OSI dari 2 ke atas. Pemrogram sering menggunakan soket dalam pemrograman jaringan, meskipun secara tidak langsung. Pemrograman perpustakaan seperti Winsock menyembunyikan banyak detail tingkat rendah dari pemrograman soket. Soket telah digunakan secara luas sejak awal 1980-an.

Port mewakili titik akhir atau "saluran" untuk komunikasi jaringan. Nomor port memungkinkan aplikasi yang berbeda pada komputer yang sama untuk memanfaatkan sumber daya jaringan tanpa saling mengganggu. Nomor port paling sering muncul dalam pemrograman jaringan, khususnya pemrograman socket. Namun, kadang-kadang, nomor port dibuat terlihat oleh pengguna biasa. Misalnya, beberapa situs Web yang dikunjungi seseorang di Internet menggunakan URL seperti berikut:

http://www.mairie-metz.fr:8080/ Dalam contoh ini, angka 8080 mengacu pada nomor port yang digunakan oleh browser Web untuk terhubung ke server Web. Biasanya, situs Web menggunakan nomor port 80 dan nomor ini tidak perlu disertakan dengan URL (meskipun bisa jadi).

Dalam jaringan IP, nomor port secara teoritis dapat berkisar dari 0 hingga 65535. Namun, sebagian besar aplikasi jaringan yang populer, menggunakan nomor port pada kisaran rendah (seperti 80 untuk HTTP).

Catatan: Istilah port juga mengacu pada beberapa aspek lain dari teknologi jaringan. Port dapat merujuk ke titik koneksi fisik untuk perangkat periferal seperti port serial, paralel, dan USB. Istilah port juga merujuk ke titik-titik koneksi Ethernet tertentu, seperti yang ada di hub, switch, atau router.

ref http://compnetworking.about.com/od/basicnetworkingconcepts/l/bldef_port.htm

ref http://compnetworking.about.com/od/itinformationtechnology/l/bldef_socket.htm

Orang belanda
sumber
2
Layer 2 pada model OSI adalah koneksi antar node, ia tidak memiliki mekanisme untuk menghubungkan proses. Saya tidak percaya Anda dapat mempertimbangkan soket yang ada di OSI l2.
Antonio Haley
18
Sirkuit adalah koneksi - soket adalah titik akhir. Koneksi terdiri dari 2 soket.
Mark Brackett
" Soket mewakili koneksi tunggal antara dua aplikasi jaringan. " Itu tidak cocok dengan RFC 793, Protokol Kontrol Transmisi yang menjelaskan: " Untuk memungkinkan banyak proses dalam satu Host untuk menggunakan fasilitas komunikasi TCP secara bersamaan, TCP menyediakan satu set alamat atau port di dalam setiap host. Dikombinasikan dengan alamat jaringan dan host dari lapisan komunikasi internet, ini membentuk soket. Sepasang soket mengidentifikasi setiap koneksi secara unik. "
Ron Maupin
84

Dengan analogi

Meskipun banyak hal teknis sudah diberikan di atas untuk soket ... Saya ingin menambahkan jawaban saya, untuk berjaga-jaga, jika seseorang masih tidak bisa merasakan perbedaan antara ip, port dan soket

Pertimbangkan server S ,

dan katakan orang X, Y, Z membutuhkan layanan (katakanlah layanan obrolan) dari server S

kemudian

Alamat IP memberi tahu -> siapa? apakah server obrolan 'S' yang ingin dihubungi X, Y, Z

oke, kamu dapat "siapa servernya"

tetapi misalkan server 'S' menyediakan beberapa layanan lain kepada orang lain juga, katakanlah 'S' menyediakan layanan penyimpanan kepada orang A, B, C

kemudian

port memberitahu ---> yang mana? layanan yang Anda (X, Y, Z) butuhkan yaitu layanan obrolan dan bukan layanan penyimpanan itu

oke .., Anda membuat server mengetahui bahwa 'layanan obrolan' adalah yang Anda inginkan dan bukan penyimpanannya

tapi

Anda bertiga dan server mungkin ingin mengidentifikasi ketiganya secara berbeda

ada soket

sekarang socket memberitahu -> yang mana? koneksi tertentu

yaitu, katakanlah,

soket 1 untuk orang X

soket 2 untuk orang Y

dan soket 3 untuk orang Z

Saya harap ini membantu seseorang yang masih bingung :)

eRaisedToX
sumber
Jadi X, Y, Z akan terhubung ke port yang sama, yaitu layanan yang sama, tetapi memiliki soket yang berbeda di sisi server? Jadi ketika, katakanlah, X mengirim beberapa paket ke server, ia akan berkata: 'temukan saya soket (protokol, IP X, port X, IP S, port S)' dan kirim ke aplikasi obrolan. Saya berasumsi harus ada pengikatan antara beberapa objek aplikasi-spesifik dan objek socket? Misalnya, ketika saya mendapatkan beberapa data dari soket-1, saya ingin menampilkannya sebagai pesan pengguna, tetapi aplikasi perlu tahu pesan dari soket A berasal dari Pengguna-X.
monolit
44

Pertama, saya pikir kita harus mulai dengan sedikit pemahaman tentang apa yang dimaksud dengan mendapatkan paket dari A ke B.

Definisi umum untuk jaringan adalah penggunaan Model OSI yang memisahkan jaringan menjadi beberapa lapisan sesuai tujuan. Ada beberapa yang penting, yang akan kita bahas di sini:

  • The Data menghubungkan lapisan . Lapisan ini bertanggung jawab untuk mendapatkan paket data dari satu perangkat jaringan ke perangkat lainnya dan tepat di atas lapisan yang sebenarnya melakukan transmisi. Ini berbicara tentang alamat MAC dan tahu bagaimana menemukan host berdasarkan alamat MAC (perangkat keras) mereka, tetapi tidak lebih.
  • The lapisan jaringan adalah lapisan yang memungkinkan Anda untuk mengangkut data di mesin dan batas atas fisik, seperti perangkat fisik. Lapisan jaringan pada dasarnya harus mendukung mekanisme berbasis alamat tambahan yang entah bagaimana berhubungan dengan alamat fisik; masukkan Protokol Internet (IPv4). Alamat IP bisa mendapatkan paket Anda dari A ke B melalui internet, tetapi tidak tahu apa-apa tentang cara melintasi setiap hop. Ini ditangani oleh lapisan di atas sesuai dengan informasi perutean.
  • The lapisan transport . Lapisan ini bertanggung jawab untuk menentukan cara informasi masuk dari A ke B dan segala batasan, pengecekan atau kesalahan pada perilaku itu. Sebagai contoh, TCP menambahkan informasi tambahan ke sebuah paket sehingga dimungkinkan untuk menyimpulkan jika paket-paket telah hilang.

TCP berisi, antara lain, konsep port . Ini adalah titik akhir data yang berbeda secara efektif pada alamat IP yang sama yang AF_INETdapat diikat oleh Internet Socket ( ).

Seperti yang terjadi, begitu juga UDP , dan protokol layer transport lainnya. Secara teknis mereka tidak perlu fitur port, tetapi port ini memang menyediakan cara untuk beberapa aplikasi di lapisan di atas untuk menggunakan komputer yang sama untuk menerima (dan memang membuat) koneksi keluar.

Yang membawa kita ke anatomi koneksi TCP atau UDP. Masing-masing fitur port sumber dan alamat, dan target port dan alamat. Ini agar dalam setiap sesi yang diberikan, aplikasi target dapat merespons, serta menerima, dari sumbernya.

Jadi port pada dasarnya adalah cara yang diamanatkan oleh spesifikasi untuk memungkinkan beberapa koneksi konkuren berbagi alamat yang sama.

Sekarang, kita perlu melihat bagaimana Anda berkomunikasi dari sudut pandang aplikasi ke dunia luar. Untuk melakukan ini, Anda perlu menanyakan sistem operasi Anda dan karena sebagian besar OS mendukung cara Berkeley Sockets dalam melakukan sesuatu, kami melihat kami dapat membuat soket yang melibatkan port dari aplikasi seperti ini:

int fd = socket(AF_INET, SOCK_STREAM, 0); // tcp socket
int fd = socket(AF_INET, SOCK_DGRAM, 0); // udp socket
// later we bind...

Bagus! Jadi dalam sockaddrstruktur, kami akan menentukan port dan bam kami! Pekerjaan selesai! Yah, hampir, kecuali:

int fd = socket(AF_UNIX, SOCK_STREAM, 0);

itu juga mungkin. Urgh, itu melemparkan kunci pas dalam karya!

Ok, sebenarnya tidak. Yang perlu kita lakukan hanyalah menghasilkan beberapa definisi yang sesuai:

  • Soket internet adalah kombinasi dari alamat IP, protokol dan nomor port yang terkait di mana layanan dapat memberikan data. Jadi port tcp 80, stackoverflow.com adalah soket internet.
  • Unix socket adalah titik akhir IPC yang diwakili dalam sistem file, misalnya /var/run/database.sock.
  • Socket API adalah metode meminta aplikasi agar dapat membaca dan menulis data ke soket.

Voila! Itu merapikan segalanya. Jadi dalam skema kami,

  • Port adalah pengidentifikasi numerik yang, sebagai bagian dari protokol layer transport, mengidentifikasi nomor layanan yang harus menanggapi permintaan yang diberikan.

Jadi sebenarnya port adalah bagian dari persyaratan untuk membentuk soket internet. Sayangnya, kebetulan bahwa arti kata socket telah diterapkan pada beberapa ide berbeda. Jadi saya sungguh-sungguh menyarankan Anda memberi nama soket proyek berikutnya, hanya untuk menambah kebingungan;)


sumber
Inilah sebabnya mengapa peluru tidak pergi dan tidak akan meninggalkan Powerpoint; mereka bekerja!
Anurag Kalia
Pengantar yang sangat bagus untuk tcp-ip dan komunikasi jaringan. Pemula, baca ini dulu.
Colin
32

Soket = Alamat IP + port (alamat numerik)
Bersama-sama mereka mengidentifikasi titik akhir untuk koneksi jaringan pada mesin. (Apakah saya baru saja gagal jaringan 101?)

Gishu
sumber
7
Saya percaya port memiliki arti yang lebih luas dari definisi Anda.
Richard Dorman
2
Dan soket tidak hanya tunduk pada tumpukan TCP / IP. Lihat soket domain UNIX atau soket komunikasi antar proses secara umum.
matthias krull
tidak yakin dengan jawaban ini. Anda dapat menggunakan HTTP untuk berkomunikasi dengan proses lain melalui soket tanpa menetapkan porta.
SeF
31

Secara umum, Anda akan mendapatkan banyak teori tetapi salah satu cara termudah untuk membedakan kedua konsep ini adalah sebagai berikut:

Untuk mendapatkan layanan, Anda memerlukan nomor layanan. Nomor layanan ini disebut port. Sederhana seperti itu.

Misalnya, HTTP sebagai layanan berjalan di port 80.

Sekarang, banyak orang dapat meminta layanan dan koneksi dari client-server telah terbentuk. Akan ada banyak koneksi. Setiap koneksi mewakili klien. Untuk menjaga setiap koneksi, server membuat soket per koneksi untuk mempertahankan kliennya.

kta
sumber
Apakah setiap soket memerlukan port sendiri?
SeninKertas
Luar biasa. Cara paling sederhana untuk menyajikan pengetahuan gunung.
Asif Mehmood
5
Saya tidak yakin apakah pernyataan Anda: "server membuat soket per koneksi untuk mempertahankan kliennya" sudah benar.
Rushi Agrawal
1
@RushiAgrawal Lalu saya sarankan Anda mencarinya. Secara khusus, lihat manusia menerima.
Marquis of Lorne
1
Ini berarti bahwa untuk setiap soket yang dibuat server per koneksi untuk mempertahankan kliennya dapat memiliki nomor port yang sama (seperti port 80 untuk kelanjutan koneksi HTTP) tetapi dengan alamat IP klien yang berbeda dari mana permintaan koneksi dikirim. Baik?
Randika Vishman
25

Tampaknya ada banyak jawaban yang menyamakan socket dengan koneksi antara 2 PC..yang menurut saya sama sekali tidak benar. Soket selalu menjadi titik akhir pada 1 PC, yang mungkin atau mungkin tidak terhubung - pasti kita semua pernah menggunakan soket pendengar atau UDP * di beberapa titik. Bagian yang penting adalah itu bisa dialamatkan dan aktif. Mengirim pesan ke 1.1.1.1:1234 tidak mungkin berfungsi, karena tidak ada soket yang ditentukan untuk titik akhir itu.

Soket adalah protokol khusus - sehingga penerapan keunikan yang digunakan oleh TCP / IP dan UDP / IP * (ipaddress: port), berbeda dari mis., IPX (Jaringan, Node, dan ... ahem, soket - tetapi berbeda soket daripada yang dimaksud dengan istilah "soket" umum. Nomor soket IPX setara dengan port IP). Namun, mereka semua menawarkan titik akhir yang unik dan dapat dialamatkan.

Karena IP telah menjadi protokol dominan, sebuah port (dalam istilah jaringan) telah menjadi sinonomis dengan nomor port UDP atau TCP - yang merupakan bagian dari alamat soket.

  • UDP adalah koneksi-kurang - berarti tidak ada sirkuit virtual antara 2 titik akhir yang pernah dibuat. Namun, kami masih menyebut soket UDP sebagai titik akhir. Fungsi API memperjelas bahwa keduanya hanyalah jenis soket yang berbeda - SOCK_DGRAMyaitu UDP (hanya mengirim pesan) dan SOCK_STREAMTCP (membuat sirkuit virtual).

  • Secara teknis, header IP memegang Alamat IP, dan protokol di atas IP (UDP atau TCP) memegang nomor port. Ini memungkinkan untuk memiliki protokol lain (mis. ICMP yang tidak memiliki nomor port, tetapi memiliki informasi pengalamatan IP).

Mark Brackett
sumber
25

Jawaban singkat singkat.

Sebuah port yang dapat digambarkan sebagai alamat internal dalam sebuah host yang mengidentifikasi program atau proses.

Sebuah soket dapat digambarkan sebagai pemrograman antarmuka yang memungkinkan program untuk berkomunikasi dengan program atau proses lainnya, di internet, atau lokal.

Andy
sumber
3
Kata 'internal' dalam uraian port terdengar agak seperti 'non-publik' bagi saya.
Jonas N
Jadi bisakah kita mengatakan: Soket berjalan di dalam Ports? atau Port berjalan di dalam Soket?
Gucho Ca
@ GuchoCa Kita tidak bisa mengatakan bahwa soket atau port berjalan sama sekali, apalagi satu di dalam yang lain. Tidak jelas apa yang Anda minta.
Marquis of Lorne
16

Mereka adalah istilah dari dua domain yang berbeda: 'port' adalah konsep dari jaringan TCP / IP, 'socket' adalah hal API (pemrograman). 'Soket' dibuat (dalam kode) dengan mengambil port dan nama host atau adaptor jaringan dan menggabungkannya ke dalam struktur data yang dapat Anda gunakan untuk mengirim atau menerima data.

Roel
sumber
Untuk jawaban paling umum, tegur "dibuat dengan mengambil port dan nama host atau adaptor jaringan dan menggabungkannya menjadi a." Misalnya, soket UNIX adalah (dalam kode) struktur data (atau objek) yang dapat Anda gunakan untuk mengirim atau menerima data.
Josiah Yoder
14

Ini adalah konsep jaringan dasar jadi saya akan menjelaskannya dengan mudah namun komprehensif untuk memahami secara detail.

  • Soket seperti telepon (mis. Perangkat ujung ke ujung untuk komunikasi)
  • IP seperti nomor telepon Anda (yaitu alamat untuk soket Anda)
  • Port seperti orang yang ingin Anda ajak bicara (yaitu layanan yang ingin Anda pesan dari alamat itu)
  • Soket dapat berupa klien atau soket server (yaitu di perusahaan, telepon dukungan pelanggan adalah server tetapi telepon di rumah Anda sebagian besar adalah klien)

Jadi soket dalam jaringan adalah perangkat komunikasi virtual yang terikat pada sepasang (ip, port) = (alamat, layanan).

catatan:

  • Mesin, komputer, host, ponsel, atau PC dapat memiliki beberapa alamat, beberapa port terbuka, dan dengan demikian beberapa soket. Seperti di kantor, Anda dapat memiliki beberapa telepon dengan banyak nomor telepon dan beberapa orang untuk diajak bicara.
  • Keberadaan port terbuka / aktif mengharuskan Anda harus memiliki soket yang terikat padanya, karena itu adalah soket yang membuat port dapat diakses. Namun, Anda mungkin memiliki port yang tidak digunakan untuk saat ini.
  • Perhatikan juga, di soket server Anda dapat mengikatnya ke (port, alamat mesin tertentu) atau ke (port, semua alamat mesin) seperti di telepon Anda dapat menghubungkan banyak saluran telepon (nomor telepon) ke telepon atau satu saluran telepon tertentu ke telepon dan Anda masih dapat menjangkau seseorang melalui semua saluran telepon ini atau melalui saluran telepon tertentu.
  • Anda tidak dapat mengaitkan (mengikat) soket dengan dua port seperti pada telepon biasanya Anda tidak selalu dapat memiliki dua orang menggunakan telepon yang sama pada saat yang sama.
  • Advanced: pada mesin yang sama Anda tidak dapat memiliki dua soket dengan tipe yang sama (klien, atau server) dan port dan ip yang sama. Namun, jika Anda seorang klien, Anda dapat membuka dua koneksi, dengan dua soket, ke server karena port lokal di masing-masing soket klien ini berbeda)

Semoga itu menghilangkan keraguan Anda

Mosab Shaheen
sumber
Sangat menarik untuk melihat semua pemahaman dan analogi dari soket / port / alamat ip di bawah pertanyaan ini. Dan saya suka jawaban ini.
Bloodmoon
12

Setelah membaca jawaban yang dipilih dengan sangat baik, saya menemukan bahwa titik berikut ini perlu penekanan bagi saya, seorang pendatang baru untuk pemrograman jaringan:

Koneksi TCP-IP adalah jalur dua arah yang menghubungkan satu alamat: kombinasi port dengan alamat lainnya: kombinasi port. Karenanya, setiap kali Anda membuka koneksi dari mesin lokal Anda ke port pada server jarak jauh (katakanlah www.google.com:80), Anda juga mengaitkan nomor port baru pada mesin Anda dengan koneksi, untuk memungkinkan server mengirim hal-hal kembali kepada Anda, (mis. 127.0.0.1:65234). Akan bermanfaat jika menggunakan netstat untuk melihat koneksi mesin Anda:

> netstat -nWp tcp (on OS X)
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.6.49871      17.172.232.57.5223     ESTABLISHED
...
Colin
sumber
12

Alamat soket adalah alamat IP & nomor port

123.132.213.231         # IP address
               :1234    # port number
123.132.213.231:1234    # socket address

Koneksi terjadi ketika 2 soket terikat bersama.

Zaz
sumber
Tidak ada yang namanya mengikat dua soket bersama. Kata 'terikat' berarti sesuatu yang lain dengan port.
Marquis of Lorne
10

Soket adalah jenis khusus dari pegangan file yang digunakan oleh suatu proses untuk meminta layanan jaringan dari sistem operasi. Alamat soket adalah triple: {protokol, alamat lokal, proses lokal} di mana proses lokal diidentifikasi oleh nomor port.

Dalam TCP / IP suite, misalnya:

{tcp, 193.44.234.3, 12345}

Percakapan adalah hubungan komunikasi antara dua proses sehingga menggambarkan hubungan antara dua proses. Sebuah asosiasi adalah tuple 5 yang sepenuhnya menentukan dua proses yang terdiri dari koneksi: {protokol, alamat lokal, proses lokal, alamat asing, proses asing}

Dalam TCP / IP suite, misalnya:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

bisa jadi asosiasi yang valid.

Setengah-asosiasi adalah: {protokol, alamat lokal, proses lokal}

atau

{protokol, alamat asing, proses asing}

yang menentukan setiap bagian dari koneksi.

Setengah asosiasi juga disebut soket atau alamat transportasi. Artinya, soket adalah titik akhir untuk komunikasi yang dapat dinamai dan diatasi dalam jaringan. Antarmuka soket adalah salah satu dari beberapa antarmuka pemrograman aplikasi (API) ke protokol komunikasi. Dirancang untuk menjadi antarmuka pemrograman komunikasi generik, pertama kali diperkenalkan oleh sistem UNIX 4.2BSD. Meskipun belum distandarisasi, ini telah menjadi standar industri de facto.

Krishna
sumber
Jawaban ini adalah yang melakukannya untuk saya. Saya kira itu karena tidak ada orang lain yang menyebut kata asosiasi. Penjelasan yang bagus.
rationalcoder
Tidak ada nomor proses dalam salah satu contoh Anda. Kata yang Anda cari adalah 'port'.
Marquis of Lorne
Baca paragraf pertama .. Disebutkan dengan jelas di sana. Beritahu saya ambiguitas dengan mengutip frasa yang tepat .. Akan sangat membantu bagi saya untuk berimprovisasi.
Krishna
7

Soket adalah titik akhir komunikasi. Soket tidak secara langsung terkait dengan keluarga protokol TCP / IP, dapat digunakan dengan protokol apa pun yang didukung sistem Anda. API C socket mengharapkan Anda untuk terlebih dahulu mendapatkan objek soket kosong dari sistem yang kemudian dapat Anda ikat ke alamat soket lokal (untuk secara langsung mengambil lalu lintas masuk untuk protokol tanpa koneksi atau menerima permintaan koneksi masuk untuk protokol berorientasi koneksi) atau bahwa Anda dapat terhubung ke alamat soket jarak jauh (untuk kedua jenis protokol). Anda bahkan dapat melakukan keduanya jika Anda ingin mengontrol keduanya, alamat soket lokal yang terikat dengan soket dan alamat soket jarak jauh yang tersambung ke soket. Untuk protokol tanpa koneksi yang menghubungkan soket bahkan opsional tetapi jika Anda tidak melakukan itu, Anda Saya juga harus meneruskan alamat tujuan dengan setiap paket yang ingin Anda kirim melalui soket karena bagaimana lagi soket tahu ke mana harus mengirim data ini? Keuntungannya adalah Anda dapat menggunakan soket tunggal untuk mengirim paket ke alamat soket yang berbeda. Setelah soket Anda dikonfigurasikan dan mungkin bahkan terhubung, anggaplah itu sebagai pipa komunikasi dua arah. Anda dapat menggunakannya untuk meneruskan data ke beberapa tujuan dan beberapa tujuan dapat menggunakannya untuk meneruskan data kepada Anda. Apa yang Anda tulis ke soket dikirimkan dan apa yang telah diterima tersedia untuk dibaca. Anda dapat menggunakannya untuk meneruskan data ke beberapa tujuan dan beberapa tujuan dapat menggunakannya untuk meneruskan data kepada Anda. Apa yang Anda tulis ke soket dikirimkan dan apa yang telah diterima tersedia untuk dibaca. Anda dapat menggunakannya untuk meneruskan data ke beberapa tujuan dan beberapa tujuan dapat menggunakannya untuk meneruskan data kepada Anda. Apa yang Anda tulis ke soket dikirimkan dan apa yang telah diterima tersedia untuk dibaca.

Port di sisi lain adalah sesuatu yang hanya dimiliki oleh beberapa protokol TCP / IP. Paket TCP dan UDP memiliki porta. Port hanyalah angka sederhana. Kombinasi port sumber dan port tujuan mengidentifikasi saluran komunikasi antara dua host. Misalnya Anda mungkin memiliki server yang terdiri dari keduanya, server HTTP sederhana dan server FTP sederhana. Jika sekarang sebuah paket tiba untuk alamat server itu, bagaimana ia tahu jika itu adalah paket untuk HTTP atau server FTP? Yah, ia akan tahu sehingga server HTTP akan berjalan pada port 80 dan server FTP pada port 21, jadi jika paket tersebut tiba dengan port tujuan 80, itu untuk server HTTP dan bukan untuk server FTP. Juga paket memiliki port sumber karena tanpa port sumber seperti itu, server hanya dapat memiliki satu koneksi ke satu alamat IP pada suatu waktu. Port sumber memungkinkan server untuk membedakan koneksi yang identik: mereka semua memiliki port tujuan yang sama, misalnya port 80, IP tujuan yang sama (IP server), dan IP sumber yang sama, karena semuanya berasal dari klien yang sama, tetapi karena mereka memiliki port sumber yang berbeda, server dapat membedakan mereka satu sama lain. Dan ketika server mengirim kembali balasan, ia akan melakukannya ke port asal permintaan, dengan cara itu klien juga dapat membedakan balasan berbeda yang diterimanya dari server yang sama.

Mecki
sumber
2
Ini salah. Soket bukan titik akhir. Soket didefinisikan oleh dua titik akhir. Setiap titik akhir ditentukan oleh alamat jaringan dan port. Tujuan port adalah untuk membedakan beberapa titik akhir pada alamat jaringan yang sama, sehingga beberapa soket konkuren dapat didukung.
Peter Wone
1
Saya perhatikan bahwa RFC793 (spesifikasi TCP asli) merujuk pada kombinasi alamat jaringan dan port sebagai soket, jadi saya bisa melihat di mana Anda mendapatkannya, tetapi masih salah inasmuchas soket harus ditentukan oleh dua titik akhir.
Peter Wone
2
Kalau dipikir-pikir, literatur itu kontradiktif dan saya minta maaf. Komunikasi yang sangat ketat tidak terjadi sampai koneksi TCP dibuat antara dua titik akhir (alias soket) yang masing-masing diidentifikasi oleh alamat jaringan dan port. Saya menyerah.
Peter Wone
6

Port adalah bagian yang termudah, itu hanya pengidentifikasi unik untuk soket. Soket adalah sesuatu yang dapat digunakan proses untuk membangun koneksi dan berkomunikasi satu sama lain. Tall Jeff memiliki analogi telepon yang hebat yang tidak sempurna, jadi saya memutuskan untuk memperbaikinya:

  • ip dan port ~ nomor telepon
  • soket ~ perangkat telepon
  • koneksi ~ panggilan telepon
  • membuat koneksi ~ memanggil nomor
  • proses, aplikasi jarak jauh ~ orang
  • pesan ~ pidato
inf3rno
sumber
Klarifikasi yang baik (terutama ketika Anda mempertimbangkan sejarah peralihan telepon yang merupakan bagian dari dasar terminologi jaringan ..)
oɔɯǝɹ
Lihat netstattampilan beberapa waktu. Semua soket yang diterima dari soket mendengarkan berbagi port yang sama. Ergo port bukan pengidentifikasi unik untuk soket.
Marquis of Lorne
6

Aplikasi terdiri dari pasangan proses yang berkomunikasi melalui jaringan (pasangan klien-server). Proses-proses ini mengirim dan menerima pesan, ke dan dari jaringan melalui antarmuka perangkat lunak yang disebut soket . Mempertimbangkan analogi yang disajikan dalam buku "Jaringan Komputer: Pendekatan Top Down". Ada rumah yang ingin berkomunikasi dengan rumah lain. Di sini, rumah dianalogikan dengan suatu proses, dan pintu ke soket. Proses pengiriman mengasumsikan bahwa ada infrastruktur di sisi lain pintu yang akan mengangkut data ke tujuan. Setelah pesan tiba di sisi lain, itu melewati pintu penerima (soket) ke rumah (proses). Ilustrasi ini dari buku yang sama dapat membantu Anda:
masukkan deskripsi gambar di sini
Soket adalah bagian dari lapisan transport, yang menyediakan komunikasi logis untuk aplikasi. Ini berarti bahwa dari sudut pandang aplikasi kedua host terhubung langsung satu sama lain, meskipun ada banyak router dan / atau switch di antara mereka. Jadi soket bukanlah koneksi itu sendiri, itu adalah titik akhir dari koneksi. Protokol layer transport diimplementasikan hanya pada host, dan bukan pada router perantara.
Pelabuhanmenyediakan sarana pengalamatan internal ke mesin. Tujuan utamanya adalah untuk memungkinkan beberapa proses mengirim dan menerima data melalui jaringan tanpa mengganggu proses lain (datanya). Semua soket dilengkapi dengan nomor port. Ketika sebuah segmen tiba ke sebuah host, layer transport memeriksa nomor port tujuan dari segmen tersebut. Kemudian meneruskan segmen ke soket yang sesuai. Pekerjaan mengirimkan data dalam segmen lapisan transport ke soket yang benar disebut de-multiplexing . Data segmen kemudian diteruskan ke proses yang terpasang pada soket.

Ugnes
sumber
5

Soket adalah struktur dalam perangkat lunak Anda. Ini lebih atau kurang file; ini memiliki operasi seperti membaca dan menulis. Itu bukan hal fisik; ini cara perangkat lunak Anda merujuk pada hal-hal fisik.

Port adalah hal yang mirip perangkat. Setiap host memiliki satu atau lebih jaringan (itu bersifat fisik); host memiliki alamat di setiap jaringan. Setiap alamat dapat memiliki ribuan port.

Satu soket saja mungkin menggunakan port di alamat. Soket mengalokasikan port kira-kira seperti mengalokasikan perangkat untuk sistem file I / O. Setelah port dialokasikan, tidak ada soket lain yang dapat terhubung ke port itu. Port akan dibebaskan ketika soket ditutup.

Lihatlah Terminologi TCP / IP .

S.Lott
sumber
3
Deskripsi soket ini cukup aneh. Soket adalah tentang hubungan antara sepasang tupel di mana tupel mengacu pada pasangan IP ADDR & Port. Selain itu banyak soket BISA terhubung ke port yang sama. Bagaimana menurut Anda server web mengambil banyak koneksi pada port 80? Ini adalah jawaban yang buruk
Tall Jeff
1
Maaf. Beberapa soket tidak terhubung ke port 80. Satu soket tersambung dan memunculkan soket tambahan di mana transfer sebenarnya terjadi. Lihat opengroup.org/onlinepubs/009695399/functions/listen.html .
S.Lott
1
Sebenarnya, deskripsi di opengroup.org/onlinepubs/009695399/functions/connect.html lebih baik. Soket rekan yang dikembalikan oleh koneksi BUKAN pada port 80.
S.Lott
1
Posting ini salah dalam beberapa hal dan menyesatkan dalam beberapa hal.
Peter Wone
@ Peter Wone: Yang mana? Aspek yang mana? Berharap untuk belajar dari kesalahan saya.
S.Lott
5

dari Tutorial Oracle Java :

Soket adalah salah satu titik akhir dari tautan komunikasi dua arah antara dua program yang berjalan di jaringan. Soket terikat ke nomor port sehingga lapisan TCP dapat mengidentifikasi aplikasi tempat data akan dikirim.

yondoo
sumber
Itu hanya tutorial, dan tentu saja bukan referensi normatif.
Marquis of Lorne
"Soket adalah salah satu titik akhir dari tautan komunikasi dua arah" Apakah itu bukan definisi soket, Bukan tutorial java ??
prayagupd
@prayagupd Tentu saja ini definisi, tapi dari tutorial, bukan spesifikasi.
Marquis of Lorne
4

Port dan soket dapat dibandingkan dengan Cabang Bank.

Nomor gedung "Bank" dianalogikan dengan alamat IP. Bank memiliki bagian yang berbeda seperti:

  1. Departemen rekening tabungan
  2. Departemen pinjaman pribadi
  3. Departemen pinjaman rumah
  4. Bagian pengaduan

Jadi 1 (departemen rekening tabungan), 2 (departemen pinjaman pribadi), 3 (departemen pinjaman rumah) dan 4 (departemen keluhan) adalah pelabuhan.

Sekarang katakanlah Anda pergi untuk membuka rekening tabungan, Anda pergi ke bank (alamat IP), kemudian Anda pergi ke "departemen rekening tabungan" (port nomor 1), kemudian Anda bertemu dengan salah satu karyawan yang bekerja di "departemen rekening tabungan" ". Biarkan kami memanggilnya SAVINGACCOUNT_EMPLOYEE1 untuk membuka akun.

SAVINGACCOUNT_EMPLOYEE1 adalah deskriptor soket Anda, jadi mungkin ada SAVINGACCOUNT_EMPLOYEE1 hingga SAVINGACCOUNT_EMPLOYEEN. Ini semua deskriptor soket.

Demikian juga, departemen lain akan memiliki karyawan yang bekerja di bawah mereka dan mereka analog dengan soket.

Shridhar410
sumber
3

Soket adalah mekanisme I / O data. Port adalah konsep kontrak dari protokol komunikasi . Soket bisa ada tanpa port. Port dapat ada tanpa soket tertentu (misalnya jika beberapa soket aktif pada port yang sama, yang mungkin diizinkan untuk beberapa protokol).

Port digunakan untuk menentukan soket mana penerima harus merutekan paket, dengan banyak protokol, tetapi tidak selalu diperlukan dan pemilihan soket penerima dapat dilakukan dengan cara lain - port sepenuhnya merupakan alat yang digunakan oleh pengendali protokol di subsistem jaringan. mis. jika protokol tidak menggunakan port, paket dapat pergi ke semua soket mendengarkan atau soket apa pun.

Sander
sumber
3

Terminologi TCP / IP relatif yang saya asumsikan tersirat oleh pertanyaan. Dalam istilah awam:

PORT adalah seperti nomor telepon rumah tertentu dalam kode pos tertentu. Kode ZIP kota dapat dianggap sebagai alamat IP kota dan semua rumah di kota itu.

SOCKET di sisi lain lebih mirip dengan panggilan telepon antara telepon sepasang rumah yang saling berbicara. Panggilan itu dapat dibuat antara rumah di kota yang sama atau dua rumah di kota yang berbeda. Hanya saja, jalur sementara yang dibuat antara sepasang ponsel saling berbicara yaitu SOCKET.

Jeff tinggi
sumber
2
Soket adalah titik akhir. Itu ada sebelum koneksi dibuat (TCP), atau tanpa adanya koneksi (UDP). Ergo itu sendiri bukan koneksi.
Marquis of Lorne
2

Dalam arti luas, Socket - hanya itu, soket, sama seperti soket listrik, kabel atau telepon Anda. Suatu titik di mana "hal-hal yang diperlukan" (daya, sinyal, informasi) dapat keluar dan masuk. Ini menyembunyikan banyak hal yang terperinci, yang tidak diperlukan untuk penggunaan "hal-hal yang diperlukan". Dalam istilah perangkat lunak, ia menyediakan cara umum untuk mendefinisikan mekanisme komunikasi antara dua entitas (entitas tersebut bisa berupa apa saja - dua aplikasi, dua perangkat yang terpisah secara fisik, ruang Pengguna & Kernel dalam OS, dll)

Port adalah pembeda titik akhir. Ini membedakan satu titik akhir dari yang lain. Pada tingkat jaringan, ia membedakan satu aplikasi dari yang lain, sehingga tumpukan jaringan dapat meneruskan informasi ke aplikasi yang sesuai.

Harty
sumber
2

Sudah jawaban teoritis untuk pertanyaan ini. Saya ingin memberikan contoh praktis untuk pertanyaan ini, yang akan menjernihkan pemahaman Anda tentang Socket dan Port.

Saya menemukannya di sini

Contoh ini akan memandu Anda melalui proses menghubungkan ke situs web, seperti Wiley. Anda akan membuka browser web Anda (seperti Mozilla Firefox) dan ketik www.wiley.com di bilah alamat. Browser web Anda menggunakan server Domain Name System (DNS) untuk mencari nama www.wiley.com untuk mengidentifikasi alamat IP-nya. Untuk contoh ini, alamatnya adalah 192.0.2.100.

Firefox membuat koneksi ke alamat 192.0.2.100 dan ke port tempat server web lapisan aplikasi beroperasi. Firefox tahu port apa yang diharapkan karena ini adalah port yang terkenal. Port yang terkenal untuk server web adalah TCP port 80.

Soket tujuan yang berusaha disambungkan oleh Firefox ditulis sebagai soket: port, atau dalam contoh ini, 192.0.2.100:80. Ini adalah sisi server dari koneksi, tetapi server perlu tahu ke mana harus mengirim halaman web yang ingin Anda lihat di Mozilla Firefox, jadi Anda memiliki soket untuk sisi klien dari koneksi juga.

Koneksi sisi klien terdiri dari alamat IP Anda, seperti 192.168.1.25, dan nomor port dinamis yang dipilih secara acak. Soket yang terkait dengan Firefox terlihat seperti 192.168.1.25:49175. Karena server web beroperasi pada port TCP 80, kedua soket ini adalah soket TCP, sedangkan jika Anda tersambung ke server yang beroperasi pada port UDP, soket server dan klien akan menjadi soket UDP.

Omkar Ramtekkar
sumber
Kutipan berkualitas sangat buruk. Paragraf ketiga menyalahgunakan kata 'socket' seolah-olah itu berarti 'alamat IP'. Tidak.
Marquis of Lorne
2

Socket adalah abstraksi yang disediakan oleh kernel untuk aplikasi pengguna untuk data I / O. Jenis soket ditentukan oleh protokol penanganannya, komunikasi IPC dll. Jadi, jika seseorang membuat soket TCP ia dapat melakukan manipulasi seperti membaca data ke soket dan menulis data dengan metode sederhana dan penanganan protokol tingkat rendah seperti konversi TCP dan paket penerusan ke protokol jaringan tingkat rendah dilakukan oleh implementasi soket tertentu di kernel. Keuntungannya adalah bahwa pengguna tidak perlu khawatir tentang penanganan protokol spesifik dan harus hanya membaca dan menulis data ke soket seperti buffer normal. Hal yang sama berlaku untuk IPC, pengguna hanya membaca dan menulis data ke soket dan kernel menangani semua detail tingkat lebih rendah berdasarkan jenis soket yang dibuat.

Port bersama dengan IP seperti memberikan alamat ke soket, meskipun itu tidak perlu, tetapi membantu dalam komunikasi jaringan.

Navneet Singh
sumber
2

Satu port dapat memiliki satu atau lebih soket yang terhubung dengan IP eksternal yang berbeda seperti outlet listrik ganda.

  TCP    192.168.100.2:9001     155.94.246.179:39255   ESTABLISHED     1312
  TCP    192.168.100.2:9001     171.25.193.9:61832     ESTABLISHED     1312
  TCP    192.168.100.2:9001     178.62.199.226:37912   ESTABLISHED     1312
  TCP    192.168.100.2:9001     188.193.64.150:40900   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.23.194.149:43970   ESTABLISHED     1312
  TCP    192.168.100.2:9001     198.49.73.11:38842     ESTABLISHED     1312
tamu
sumber
2

Socket adalah abstraksi SW dari titik akhir jaringan, digunakan sebagai antarmuka ke aplikasi. Di Jawa, C # itu diwakili oleh objek, di Linux, Unix itu adalah file.

Port hanyalah properti soket yang telah Anda tentukan jika ingin menjalin komunikasi. Untuk menerima paket dari soket Anda harus mengikatnya ke port lokal tertentu dan NIC (dengan alamat IP lokal) atau semua NIC (INADDR_ANY ditentukan dalam panggilan mengikat). Untuk mengirim paket, Anda harus menentukan port dan IP dari soket jarak jauh.

Dražen G.
sumber
1

Soket pada dasarnya adalah titik akhir untuk komunikasi jaringan, yang terdiri dari setidaknya alamat IP dan porta. Dalam Java / C # soket adalah implementasi level satu sisi dari koneksi dua arah yang lebih tinggi.

Juga, definisi dalam dokumentasi Java .

Erik van Brakel
sumber
Di Java Turorial, maksud Anda.
Marquis of Lorne
1

Pelabuhan:

Port dapat merujuk ke titik koneksi fisik untuk perangkat periferal seperti port serial, paralel, dan USB. Istilah port juga mengacu pada titik-titik koneksi Ethernet tertentu, seperti yang ada pada hub, switch, atau router.

Stopkontak:

Soket mewakili koneksi tunggal antara dua aplikasi jaringan. Kedua aplikasi ini secara nominal berjalan pada komputer yang berbeda, tetapi soket juga dapat digunakan untuk komunikasi antarproses pada satu komputer. Aplikasi dapat membuat beberapa soket untuk berkomunikasi satu sama lain. Soket adalah dua arah, artinya kedua sisi koneksi mampu mengirim dan menerima data.

balaweblog
sumber
Port TCP atau UDP tidak merujuk pada apa pun secara fisik, atau ke titik koneksi Ethernet. Anda belum menjawab pertanyaan itu.
Marquis of Lorne
1

Port menunjukkan titik akhir komunikasi dalam transport TCP dan UDP untuk protokol jaringan IP. Soket adalah abstraksi perangkat lunak untuk titik akhir komunikasi yang biasa digunakan dalam implementasi protokol ini (soket API). Implementasi alternatif adalah XTI / TLI API.

Lihat juga:

Stevens, WR 1998, Pemrograman Jaringan UNIX: API Jaringan: Soket dan XTI; Volume 1, Prentice Hall.
Stevens, WR, 1994, TCP / IP Illustrated, Volume 1: Protokol, Addison-Wesley.

VoidPointer
sumber