Thông tin tài liệu:
Bài giảng Hệ phân tán - Chương 4: Trao đổi thông tin trong hệ phân tán. Chương này cung cấp cho sinh viên những nội dung gồm: trao đổi thông tin giữa các tiến trình; lời gọi thủ tục từ xa; trao đổi thông tin hướng thông điệp; trao đổi thông tin dòng;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ phân tán - Chương 4: Trao đổi thông tin trong hệ phân tán 1 TRAO ĐỔI THÔNG TIN TRONG HỆ PHÂN TÁN(Giáo trình này được xây dựng dựa trên giáo trình của PGS. TS. Hà Quốc Trung)TS. Trần Hải Anh Nội dung2 1. Trao đổi thông tin giữa các tiến trình 2. Lời gọi thủ tục từ xa 3. Trao đổi thông tin hướng thông điệp 4. Trao đổi thông tin dòng1. Trao đổi thông tin giữa các tiếntrình1.1. Các giao thức phân tầng1.2. Trao đổi thông tin bằng UDP1.3. Trao đổi thông tin bằng TCP1.4. Một số vấn đề cần thảo luận I. Khái niệm4 ¨ Giao thức ¤ Cấu trúc thông điệp ¤ Kích cỡ thông điệp ¤ Thứ tự gửi thông điệp ¤ Cơ chế phát hiện thông điệp hỏng hay bị mất ¤ V.v… ¨ Phân tầng ¨ Các loại giao thức ¤ Hướng kết nối, không hướng kết nối, tin cậy, không tin cậy ¨ Các vấn đề của giao thức ¤ Send, receive primitives ¤ Đồng bộ/không đồng bộ, dừng, không dừng Đặc tính của giao tiếp giữa các tiến5 trình ¨ Giao tiếp đồng bộ và bất đồng bộ ¨ Đích đến của thông điệp ¨ Độ tin cậy ¨ Thứ tự Socket-port6 agreed port socket any port socket message client server other ports Internet address = 138.37.94.248 Internet address = 138.37.88.249TCP Port Numbers and ConcurrentServers (1)TCP Port Numbers and ConcurrentServers (2)TCP Port Numbers and ConcurrentServers (3)TCP Port Numbers and ConcurrentServers (4) Buffer Sizes and Limitations¨ Maximum size of an IPv4 datagram: 65,538 bytes¨ MTU (Maximum transmission unit)¨ Fragmentation when the size of the datagrram exceeds the link MTU. ¤ DF bit (don’t fragment)¨ MSS (maximum segment size): that announces to the peer TCP the maximum amount of TCP data that the peer can send per segment.¨ MSS = MTU – fixed size of headers of IP and TCPTCP outputUDP output Hỗ trợ của Java14 ¨ Class InetAddress: ¨ Working with IP address and domain name ¨ InetAddress aComputer = InetAddress.getByName(bruno.dcs.qmul.ac. uk); 1.2. Trao đổi thông tin bằng UDP15 ¨ Đặc điểm: ¤ Không hướng kết nối ¤ Không tin cậy ¤ Không đồng bộ ¨ Vấn đề: ¤ Kích cỡ thông điệp ¤ Blocking (send không dừng; receive bị dừng) ¤ Timeouts ¤ Receive from anyimport java.net.*;import java.io.*;public class UDPServer{ public static void main(String args[]){ DatagramSocket aSocket = null; try{ aSocket = new DatagramSocket(6789); byte[] buffer = new byte[1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer,buffer.length); aSocket.receive(request); DatagramPacket reply = new DatagramPacket(request.getData(), request.getLength(), request.getAddress(), request.getPort()); aSocket.send(reply); } }catch (SocketException e){System.out.println(Socket: + e.getMessage()); }catch (IOException e) {System.out.println(IO: + e.getMessage());} }finally {if(aSocket != null) aSocket.close();} }} 16import java.net.*;import java.io.*;public class UDPClient{ public static void main(String args[]){ // args give message contents and server hostname DatagramSocket aSocket = null; try { aSocket = new DatagramSocket(); byte [] m = args[0].getBytes(); InetAddress aHost = InetAddress.getByName(args[1]); int serverPort = 6789; DatagramPacket request = new DatagramPacket(m, m.length, aHost,serverPort); aSocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); aSocket.receive(reply); System.out.println(Reply: + new String(reply.getData())); }catch (SocketException e){System.out.println(Socket: + e.getMessage()); }catch (IOException e){System.out.println(IO: + e.getMessage());} }finally {if(aSocket != null) aSocket.close();} }} 17 1.3. Trao đổi thông tin bằng TCP-IP Thiết lập liên kết TCP :18 Giao thức bắt tay 3 bước ¨ Bước 1: A gửi SYN cho BA ...