Giải thích đơn giản về ổ cắm Unix


20

Tôi có thể tìm kiếm và tôi đã xem mục wikipedia và ở một số nơi khác, nhưng mặc dù tôi có một số kinh nghiệm lập trình, tôi không thực sự nắm bắt được khái niệm này. Bạn có thể đối xử với tôi như một đứa trẻ 10 tuổi và cho tôi một lời giải thích rõ ràng về giao tiếp ổ cắm?


Viết một vài ứng dụng thử nghiệm nhỏ bằng cách sử dụng chúng. Bạn thậm chí không cần hai máy, chỉ cần hai ứng dụng nhỏ để bắt đầu. Chơi lô tô.
Patrick Hughes

Hướng dẫn lập trình mạng của Beej dường như là một văn bản giới thiệu rất phổ biến đối với các ổ cắm Unix, mặc dù tôi không thể nói rằng tôi thích nó.
Nemanja Trifunovic

Tôi đã đưa ra câu trả lời @DanielPittman, nếu tôi phải viết tôi sẽ viết cùng một câu trả lời; Tuy nhiên, nếu bạn muốn giúp đỡ nhiều hơn, tôi sẽ mở rộng. Vui lòng chỉnh sửa câu hỏi của bạn, đặt một số nền tảng về những gì bạn biết và những gì bạn không và cũng vậy, hãy cho tôi biết liệu bạn đang xem trợ giúp về cách sử dụng, cách chúng hoạt động bên trong hay lý thuyết (thiết kế giao thức) hoặc bạn đang thử để đánh giá cho mục đích nào?
Dipan Mehta

Đây là một cuốn sách: Lập trình mạng Unix . Bất cứ ai trên trái đất sẽ trả lời câu hỏi này, sẽ học hỏi từ người mẹ này. Đọc cuốn sách này, câu hỏi của bạn sẽ trở nên tốt hơn.
Dipan Mehta

Ý bạn là ổ cắm BSD? Ổ cắm Unix chỉ hoạt động cục bộ.
imel96

Câu trả lời:


15

Hãy để tôi cho bạn một ví dụ: Giả sử bạn muốn giao tiếp / trò chuyện với bạn của bạn, người không sống tại địa chỉ của bạn. Để điều đó xảy ra, bạn phải thiết lập một "kênh liên lạc". Nói rằng, bạn muốn thực hiện giao tiếp này bằng điện thoại. Bạn biết rằng có một mạng lưới các đường dây điện thoại trong thành phố được mở rộng đến mọi nhà.

Bây giờ, có một ổ cắm điện thoại trong nhà của bạn, và một trong nhà bạn bè của bạn. Để việc liên lạc diễn ra, bạn và bạn của bạn phải kết nối với mạng bằng cách cắm điện thoại của bạn vào ổ cắm, ở cả hai đầu của giao tiếp. Các ổ cắm trong lập trình là giống nhau, về mặt khái niệm, như các ổ cắm điện thoại.

Trong lập trình, bạn có hai quy trình (chương trình đang chạy) muốn giao tiếp với nhau. Vì vậy, họ phải thiết lập một liên kết giao tiếp giữa họ. Một lần nữa, có một mạng có sẵn, họ chỉ cần kết nối với mạng này bằng cách sử dụng một số loại ổ cắm. Ổ cắm Unix là một trong những ổ cắm như vậy cung cấp khả năng kết nối / cắm vào mạng này. Vì vậy, trong mỗi hai chương trình, bạn sẽ có một số đoạn mã thực hiện công việc kết nối với mạng thông qua các ổ cắm.

Phần còn lại là chi tiết.


2
Tôi sẽ đánh giá thấp điều này nếu tôi có đủ danh tiếng. Văn bản của bạn không giải thích cách hoạt động của ổ cắm. Chỉ là văn bản chung giống như trong Wikipedia. Làm thế nào để các ổ cắm nghe ? Làm thế nào ổ cắm điện thoại của bạn có thể nghe kết nối?
Màu xanh lá cây

21

Ổ cắm Unix là một ổ cắm hai chiều - giống như ổ cắm dựa trên IP mà bạn có thể quen thuộc và tương tự như đường ống mà bạn có thể quen thuộc.

Họ có một tập hợp nhỏ các thuộc tính thú vị:

  • Chúng chỉ nằm trong miền của "máy chủ cục bộ" - bạn không thể truy cập chúng qua mạng, chỉ trên máy cục bộ.
  • Bạn có thể tạo chúng trong chế độ "luồng", trong đó chúng chỉ truyền dữ liệu như một đường ống dưới dạng luồng byte.
  • Bạn có thể tạo chúng trong chế độ "datagram", nơi chúng giữ lại ranh giới giữa các hoạt động gửi. Điều này cho phép bạn giữ lại khung mà không cần xây dựng giao thức định khung của riêng bạn trên đầu luồng byte.
  • Họ sử dụng hệ thống tập tin hoặc trên Linux, một "không gian tên trừu tượng", làm "địa chỉ" của họ
  • Bạn có thể mạo danh đầu bên kia, xác định an toàn phần mềm kết nối hoặc chuyển các thẻ điều khiển qua ổ cắm, tùy thuộc vào HĐH của bạn.

Về cơ bản, chúng tương đương với bất kỳ ổ cắm nào khác - chúng có các đặc tính thú vị hơn một chút so với đường ống, nhưng không hoàn toàn khác biệt. Chúng thường có độ trễ IPC cao hơn so với đường ống và thường là bộ đệm lớn hơn - mặc dù bạn có thể điều chỉnh điều đó, và nó phụ thuộc vào nền tảng.

Thuộc tính thú vị cuối cùng cần nhớ là họ sử dụng hệ thống tệp làm không gian tên của họ - vì vậy giống như một ống có tên, thay vì một ống ẩn danh, trong phần mềm không có mối quan hệ trước đó có thể giao tiếp. (Ổ cắm không gian tên trừu tượng là như nhau, nhưng đường dẫn "tệp" không phải tồn tại.)

Không có gì sâu hơn thế - họ không có bất kỳ thuộc tính ẩn siêu bí mật nào làm cho chúng hoàn toàn khác biệt với một đường ống thông thường hoặc kết nối TCP với localhost.


3
Cảm ơn nhưng tôi vẫn thấy nó phức tạp và đầy argot.
Elzo Valugi

2
Xin đừng bị xúc phạm bởi thử này ở câu trả lời một dòng, để xem liệu điều đó có giúp ích hơn không: "Bạn có biết cách mà các ổ cắm TCP / IP và UDP / IP hoạt động không? Chúng giống nhau, chỉ không có phần IP."
Daniel Pittman

Tôi không bị xúc phạm, tôi chỉ muốn hiểu. Cảm ơn. Tôi sẽ nghiên cứu chi tiết hơn.
Elzo Valugi

4
Xác định một thuật ngữ bằng cách sử dụng thuật ngữ đó (ví dụ: "Ổ cắm Unix là ổ cắm hai chiều") không giải thích bất cứ điều gì cho người không biết bắt đầu ổ cắm là gì.
Bryan Oakley

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.