Mô hình truyền tin socket

2 1.6K 10
Mô hình truyền tin socket

Đang tải... (xem toàn văn)

Thông tin tài liệu

6 Socket() Bind() Listen() Accept() Các chức năng gửi và nhận Close() Socket() Bind() Connect() Các chức năng gửi và nhận Close() 1 3 4 5 7 2 Server Client hình truyền tin socket Hình 4.4 Khi lập trình, ta cần quan tâm đến chế độ bị phong tỏa, vì nó có thể dẫn đến tình huống một tiến trình nào đó sẽ rơi vào vòng lặp vô hạn của quá trình gửi hoặc nhận. Trong chương 1 chúng ta đã biết hai giao thức TCP và UDP là các giao thức tầng giao vận để truyền dữ liệu. Mỗi giao thức có những ưu và nhược điểm riêng. Chẳng hạn, giao thức TCP có độ tin cậy truyền tin cao, nhưng tốc độ truyền tin bị hạn chế do phải có giai đoạn thiết lập và giải phóng liên kết khi truyền tin, khi gói tin có lỗi hay bị thất lạc thì giao thức TCP phải có trách nhiệm truyền lại,…Ngược lại, giao thức UDP có tốc độ truyền tin rất nhanh vì nó chỉ có một cơ chế truyền tin rất đơn giản: không cần phải thiết lập và giải phóng liên kết. Khi lập trình cho TCP ta sử dụng các socket luồng, còn đối với giao thức UDP ta sẽ sử dụng lớp DatagramSocket và DatagramPacket. Truyền tin hướng liên kết nghĩa là cần có giai đoạn thiết lập liên kết và giải phóng liên kết trước khi truyền tin. Dữ liệu được truyền trên mạng Internet dưới dạng các gói (packet) có kích thước hữu hạn được gọi là datagram. Mỗi datagram chứa một header và một payload. Header chứa địa chỉ và cổng cần truyền gói tin đến, cũng như địa chỉ và cổng xuất phát của gói tin, và các thông tin khác được sử dụng để đảm bảo độ tin cậy truyền tin, payload chứa dữ liệu. Tuy nhiên do các datagram có chiều dài hữu hạn nên thường phải phân chia dữ liệu thành nhiều gói và khôi phục lại dữ liệu ban đầu từ các gói ở nơi nhận. Trong quá trình truyền tin có thể có thể có một hay nhiều gói bị mất hay bị hỏng và cần phải truyền lại hoặc các gói tin đến không theo đúng trình tự. Để tránh những điều này, việc phân chia dữ liệu thành các gói, tạo các header, phân tích header của các gói đến, quản lý danh sách các gói đã nhận được và các gói chưa nhận được, . rất nhiều công việc cần phải thực hiện, và đòi hỏi rất nhiều phần mềm phức tạp. Thật may mắn, ta không cần phải tự thực hiện công việc này. Socket là một cuộc cách mạng của Berkeley UNIX. Chúng cho phép người lập trình xem một liên kết mạng như là một luồng mà có thể đọc dữ liệu ra hay ghi dữ liệu vào từ luồng này. Về mặt lịch sử Socket là một sự mở rộng của một trong những ý tưởng quan trọng nhất của UNIX: tất cả các thao tác vào/ra giống như vào ra tệp tin đối với người lập trình, cho dù ta đang làm việc với bàn phím, màn hình đồ họa, một file thông thường, hay một liên kết mạng. Các Socket che dấu người lập trình khỏi các chi tiết mức thấp của mạng như môi kiểu đường truyền, các kích thước gói, yêu cầu truyền lại gói, các địa chỉ mạng . Một socket có thể thực hiện bảy thao tác cơ bản: • Kết nối với một máy ở xa (ví dụ, chuẩn bị để gửi và nhận dữ liệu) • Gửi dữ liệu • Nhận dữ liệu • Ngắt liên kêt • Gán cổng • Nghe dữ liệu đến • Chấp nhận liên kết từ các máy ở xa trên cổng đã được gán Lớp Socket của Java được sử dụng bởi cả client và server, có các phương thức tương ứng với bốn thao tác đầu tiên. Ba thao tác cuối chỉ cần cho server để chờ các client liên kết với chúng. Các thao tác này được cài đặt bởi lớp ServerSocket. Các socket cho client thường được sử dụng theo hình sau: • Một socket mới được tạo ra bằng cách sử dụng hàm Socket(). • Socket cố gắng liên kết với một host ở xa. • Mỗi khi liên kết được thiết lập, các host ở xa nhận các luồng vào và luồng ra từ socket, và sử dụng các luồng này để gửi dữ liệu cho nhau. Kiểu liên kết này được gọi là song công (full-duplex)-các host có thể nhận và gửi dữ liệu đồng thời. Ý nghĩa của dữ liệu phụ thuộc vào giao thức. • Khi việc truyền dữ liệu hoàn thành, một hoặc cả hai phía ngắt liên kết. Một số giao thức, như HTTP, đòi hỏi mỗi liên kết phải bị đóng sau mỗi khi yêu cầu được phục vụ. Các giao thức khác, chẳng hạn FTP, cho phép nhiều yêu cầu được xử lý trong một liên kết đơn. . cổng cần truyền gói tin đến, cũng như địa chỉ và cổng xuất phát của gói tin, và các thông tin khác được sử dụng để đảm bảo độ tin cậy truyền tin, payload. lớp ServerSocket. Các socket cho client thường được sử dụng theo mô hình sau: • Một socket mới được tạo ra bằng cách sử dụng hàm Socket( ). • Socket cố

Ngày đăng: 25/10/2013, 03:20

Hình ảnh liên quan

Mô hình truyền tin socket - Mô hình truyền tin socket

h.

ình truyền tin socket Xem tại trang 1 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan