phát tán thông tin tới một nhóm địa chỉ một cách đồng thời doc

17 247 0
phát tán thông tin tới một nhóm địa chỉ một cách đồng thời doc

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 3: Lập trình Multicasting Chương 3 1. Giớithiệuvề multicast - Multicast : phát tán thông tin tới một nhóm địa chỉ một cách đồng thời. Root multicast và non –root multicast o Root multicast: một thành viên đóng vai trò là root phát tán thông tin tới các lá leaf, root truyền thông tin đồng thời tới các lá, lá chỉ truyền thông tin về root mà không thể truyền thông tin sang lá khác o Non root multicast: tất cả các thành viên là các lá (leaf) , lá truyền thông tin tới tất cả các lá khác Chương 3 1. Giớithiệuvề multicast - Unicast: giao tiếpchỉ có một bên gửivàmột bên nhận - Broadcast: Giao tiếpgửitừ một điểmtớitấtcả các điểm khác, broadcast chỉ có một điểmgửi đi duy nhất. Chương 3 2. Địachỉ IP dùng cho Multicast -Sử dụng địa chỉ ở lớp D từ 224.0.0.0 tới 239.255.255.255 -Mộtsố địa chỉ IP đặc biệt dùng cho multicast Chương 3 2. Địachỉ IP dùng cho Multicast - Thành viên phải tham gia vào nhóm mớinhậndữ liệu multicast được -Chương trình gửigửi cho nhóm thì mọi thành viên trong nhóm đềunhận đc dữ liệu Sender Group Member 1 Group Member 1 Group Member 1 Group Member 2 Receiver Receiver Receiver Sender & Receiver Chương 3 2. Địachỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : - Là giao thức mà mỗi máy nhậntraođổi thông tin vớibộ tìm đường multicast cụcbộ (Local Multicast Router ) để trở thành một thành viên của nhóm multicast - Cung cấpmộtphương thức qua nó một thành viên có thể tham gia hoặcrời bỏ nhóm multicast - Để tham gia nhóm thành viên gửimột thông báo yêu cầu tham gia nhóm -Cácbộ tìm đường multicast gửi IGMP query tớitất cả các thành viên để xem các thành viên còn trong nhóm hay không. Chương 3 2. Địachỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : Joining a Group R1 R2 R3 224.1.2.3 Report Chương 3 2. Địachỉ IP dùng cho Multicast Giao thức IGMP (Internet Group Management Protocol ) : Maintaining a Group R1 R2 R3 224.1.2.3 224.1.2.3 Report 224.1.2.3 Suppressed Suppressed XX Query Bộ tìm đường định kỳ gửiquery tới 224.0.0.1 (tất cả các thành viên trong mạng này) Các thành viên có thể trả lời report hoặc không (còn tham gia hoặc không) Chương 3 3. Truyền/ nhận multicast Gửi multicast -Hiệuchỉnh lại địachỉ trong hàm sendto cho phù hợp, địachỉ là nhóm cần multicast Nhận multicast -Trước khi multicast, cần tham gia vào nhóm multicast bằng cách gọihàm setsockopt struct ip_mreq mreq; setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); ip_mreq có cấu trúc như sau: struct ip_mreq { struct in_addr imr_multiaddr; /* multicast group to join */ struct in_addr imr_interface; /* interface to join on */ } Chương 3 3. Truyền/ nhận multicast Ví dụ tham gia vào một nhóm multicast SOCKET s; SOCKADDR_IN localif; struct ip_mreq mreq; s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); localif.sin_family = AF_INET; localif.sin_port = htons(5150); localif.sin_addr.s_addr = htonl(INADDR_ANY); bind(s, (SOCKADDR *)&localif, sizeof(localif)); mreq.imr_interface.s_addr = inet_addr("157.124.22.104"); mreq.imr_multiaddr.s_addr = inet_addr("234.5.6.7"); setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq)); [...]... nbytes=recvfrom(s,msgbuf,MSGBUFSIZE,0, (struct sockaddr *) &localif, sizeof(localif))) ; Chương 3 4 Gửi tin cậy Thiết lập quá trình gửi tin cậy qua các bước sau: 1 Tạo socket multicast tin cậy 2 Bind socket to INADDR_ANY 3 Thiết lập địa chỉ giao tiếp là RM_SET_SEND_IF 4 Kết nối socket tới địa chỉ nhóm multicast Chương 3 4 Gửi tin cậy Ví dụ quá trình gửi tin cậy: SOCKET s; ULONG sendif; SOCKADDR_IN localif, multi; char buf[1024];... the session closesocket(s); Chương 3 5 Nhận tin cậy Thiết lập quá trình nhận tin cậy qua các bước sau: 1 Tạo socket multicast tin cậy 2 Bind socket địa chỉ nhóm multicast 3 Nếu chương trình nhận cần lắng nghe trên giao tiếp cụ thể thì gọi setsockopt và RM_ADD_RECEIVE_IF cho từng interface đó 4 Gọi listen 5 Chờ đợi accept Chương 3 5 Nhận tin cậy Ví dụ nhận tin cậy: SOCKET s, ns; SOCKADDR_IN multi, safrom;... localif.sin_addr.s_addr = htonl(INADDR_ANY); bind(s, (SOCKADDR *)&localif, sizeof(localif)); Chương 3 4 Gửi tin cậy // Set the outgoing interface sendif = inet_addr("157.124.22.104"); setsockopt(s, IPPROTO_RM, RM_SET_SEND_IF, (char *)&sendif, sizeof(sendif)); // Connect the socket to the multicast destination multi.sin_family = AF_INET; multi.sin_port = htons(5150); multi.sin_addr.s_addr = inet_addr("234.5.6.7");... IPPROTO_RM); multi.sin_family = AF_INET; multi.sin_port = htons(5150); multi.sin_addr.s_addr = inet_addr("234.5.6.7"); bind(s, (SOCKADDR *)&multi, sizeof(multi)); listen(s, 10); Chương 3 5 Nhận tin cậy Ví dụ nhận tin cậy: localif = inet_addr("157.124.22.104"); setsockopt(s, IPPROTO_RM, RM_ADD_RECEIVE_IF, (char *)&localif, sizeof(localif)); fromlen = sizeof(safrom); ns = accept(s, (SOCKADDR *)&safrom, . trình Multicasting Chương 3 1. Giớithiệuvề multicast - Multicast : phát tán thông tin tới một nhóm địa chỉ một cách đồng thời. Root multicast và non –root multicast o Root multicast: một thành viên. viên đóng vai trò là root phát tán thông tin tới các lá leaf, root truyền thông tin đồng thời tới các lá, lá chỉ truyền thông tin về root mà không thể truyền thông tin sang lá khác o Non root. các điểm khác, broadcast chỉ có một điểmgửi đi duy nhất. Chương 3 2. Địachỉ IP dùng cho Multicast -Sử dụng địa chỉ ở lớp D từ 224.0.0.0 tới 239.255.255.255 -Mộtsố địa chỉ IP đặc biệt dùng cho

Ngày đăng: 27/07/2014, 19:21

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

Tài liệu liên quan