intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting

Chia sẻ: Đinh Trường Gấu | Ngày: | Loại File: PPT | Số trang:21

96
lượt xem
11
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung "Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting" trình bày những nội dung về kỹ thuật IP Multicasting, Socket Multicasting trong .Net và một số bài tập. Mời các bạn tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng nâng cao - Chương 3: IP Multicasting

  1. LẬP TRÌNH MẠNG NÂNG CAO Chương 3. IP MULTICASTING Nguyễn Vũ – IT Faculty, Viet Han Friendship 1
  2. Kỹ thuật IP Multicasting  BroadCasting là gì?  Dùng để gửi một gói tin đến tất cả các nút trong mạng  Để thực hiện hình thức quảng bá, địa chỉ đến của gói tin sẽ là địa chỉ quảng bá.  Có hai loại là: Local BroadCast Global BroadCast  Ví dụ: Cho mạng lớp B có địa chỉ IP là 192.168.0.0 có SubNet Mask là 255.255.0.0, địa chỉ Local Broadcast là: 192.168.254.255 Nguyễn Vũ – IT Faculty, Viet Han Friendship 2
  3. Kỹ thuật IP Multicasting  Theo mặc định, Socket không được phép gửi tin nhắn quảng bá:  Gửi gói dữ liệu BroadCast: class BadBroadcast { public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050); byte[] data = Encoding.ASCII.GetBytes("This is a test message"); sock.SendTo(data, iep); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 3
  4. Kỹ thuật IP Multicasting Dùng kỹ thuật BroadCasting để gửi dữ liệu đến nhiều máy trong mạng cục bộ Đối với một ứng dụng C # để gửi các gói dữ liệu Broadcast, ta dùng phương thức SetSocketOption() của lớp Socket : Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); Nguyễn Vũ – IT Faculty, Viet Han Friendship 4
  5. Kỹ thuật IP Multicasting Dùng kỹ thuật BroadCasting để gửi dữ liệu đến nhiều máy trong mạng cục bộ  Gửi gói dữ liệu: class Broadcst { public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 9050); IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.1.255"), 9050); string hostname = Dns.GetHostName(); byte[] data = Encoding.ASCII.GetBytes(hostname); sock.SetSocketOption(SocketOptionLeyel.Socket, SocketOptionName.Broadcast, 1); sock.SendTo(data, iep1); sock.SendTo(data, iep2); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 5
  6. Kỹ thuật IP Multicasting  Nhận gói dữ liệu: class RecvBroadcst { public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050); sock.Bind(iep); EndPoint ep = (EndPoint)iep; Console.WriteLine("Ready to receiye…"); byte[] data = new byte[1024]; int recv = sock.ReceiveFrom(data, ref ep); string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString()); data = new byte[1024]; recv = sock.ReceiveFrom(data, ref ep); stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("received: {0} from: {1}",stringData, ep.ToString()); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 6
  7. Kỹ thuật IP Multicasting  Sử dụng Broadcast Packet để thông báo có sự hiện diện của Server class Advertise { public static void Main() { Advertise server = new Advertise(); } public Advertise() { Thread advert = new Thread(new ThreadStart(sendPackets)); advert.IsBackground = true; advert.Start(); Console.Write("Press Enter to stop"); string data = Console.ReadLine(); } Nguyễn Vũ – IT Faculty, Viet Han Friendship 7
  8. Kỹ thuật IP Multicasting  Sử dụng Broadcast Packet để thông báo có sự hiện diện của Server void sendPackets() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9050); string hostname = Dns.GetHostName(); byte[] data = Encoding.ASCII.GetBytes(hostname); while (true) { sock.SendTo(data, iep); Thread.Sleep(6000); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 8
  9. Kỹ thuật IP Multicasting  Multicasting là gì?  Một địa chỉ Multicasting cho phép thiết bị gửi dữ liệu tới một tập xác định trước các host, được biết đến như các nhóm Multicast, trong các mạng con khác nhau. Range Assignment 224.0.0.0–224.0.0.255 Local network control block 224.0.1.0–224.0.1.255 Internetwork control block 224.0.2.0–224.0.255.0 AD­HOC block 224.1.0.0–224.1.255.255 ST multicast groups 224.2.0.0–224.2.255.255 SDP/SAP block 224.252.0.0–224.255.255.255 DIS transient block 225.0.0.0–231.255.255.255 Reserved 232.0.0.0–232.255.255.255 Source­specific multicast block 233.0.0.0–233.255.255.255 GLOP block 234.0.0.0–238.255.255.255 Reserved 239.0.0.0–239.255.255.255 Administratively scoped block Nguyễn Vũ – IT Faculty, Viet Han Friendship 9
  10. Kỹ thuật IP Multicasting  Một số địa chỉ Multicast: Nguyễn Vũ – IT Faculty, Viet Han Friendship 10
  11. Kỹ thuật IP Multicasting  Có hai kỹ thuật Multicast được sử dụng:  Peer to peer: Nguyễn Vũ – IT Faculty, Viet Han Friendship 11
  12. Kỹ thuật IP Multicasting  Có hai kỹ thuật Multicast được sử dụng:  Central Server: Nguyễn Vũ – IT Faculty, Viet Han Friendship 12
  13. Kỹ thuật IP Multicasting  Gửi multicast Packets qua Router Nguyễn Vũ – IT Faculty, Viet Han Friendship 13
  14. Socket Multicasting trong .Net  Sử dụng phương thức SocketOption():  Phương thức SocketOption() dùng để:  Thêm một socket vào nhóm Multicast  Loại một socket khỏi nhóm Multicast  SetSocketOption(SocketOptionLevel,SocketOption Name, optionValue)  SocketOptionName: AddMembership DropMembership Nguyễn Vũ – IT Faculty, Viet Han Friendship 14
  15. Socket Multicasting trong .Net  Sử dụng phương thức SocketOption():  Ví dụ thêm một Socket vào nhóm Multicast 224.100.0.1 ta viết như sau: sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1")); Nguyễn Vũ – IT Faculty, Viet Han Friendship 15
  16. Socket Multicasting trong .Net  Gửi dữ liệu Multicast class MultiSend{ public static void Main() { Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050); byte[] data = Encoding.ASCII.GetBytes("This is a test message"); server.SendTo(data, iep); server.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 16
  17. Socket Multicasting trong .Net  Nhận dữ liệu Multicast class MultiRecv{ public static void Main() { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Console.WriteLine("Ready to receive…"); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050); EndPoint ep = (EndPoint)iep; sock.Bind(iep); sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1"))); byte[] data = new byte[1024]; int recv = sock.ReceiveFrom(data, ref ep); string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString()); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 17
  18. Socket Multicasting trong .Net  Multicast với lớp UdpClient  JoinMulticastGroup()  DropMulticastGroup()  JoinMulticastGroup() là phương thức overload  JoinMulticastGroup(IPAddress)  JoinMulticastGroup(IPAddress,int) Nguyễn Vũ – IT Faculty, Viet Han Friendship 18
  19. Socket Multicasting trong .Net  UdpClient Multicast Receiver class UdpClientMultiRecv { public static void Main() { UdpClient sock = new UdpClient(9050); Console.WriteLine("Ready to receive…"); sock.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0); byte[] data = sock.Receive(ref iep); string stringData = Encoding.ASCII.GetString(data, 0, data.Length); Console.WriteLine("received: {0} from: {1}", stringData, iep.ToString()); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 19
  20. Socket Multicasting trong .Net  UdpClient Multicast Sender class UdpClientMultiSend { public static void Main() { UdpClient sock = new UdpClient(); IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050); byte[] data = Encoding.ASCII.GetBytes("This is a test message"); sock.Send(data, data.Length, iep); sock.Close(); } } Nguyễn Vũ – IT Faculty, Viet Han Friendship 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
20=>2