10/21/2010 1 TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình ((InterInter process communication)process communication) CácCác chchủủ ññềề chínhchính – Các ñặc trưng của IPC – Truyền thông ñồng bộ và bất ñồng bộ – Biểu diễn dữ liệu ngoài vàExternal data representation and marshalling • CORBA’s Common Data Representation • Java Object serialisation – Truyền thông trong Client-Server • Client-Server Communication • Truyền thông bên trong các dịch vụ ñược một nhóm server cung cấp – Truyền thông nhóm – IP multicast NhNhắắcc llạạii: : TiTiệệpp ccậậnn llớớpp The OSI model Application Presentation Session Transport Network Data Physical Application Presentation Session Transport Network Data Physical The network A message, descends through the layers Then ascends through the layers at the receiver A HOST – A COMPUTER A HOST – A COMPUTER BàiBài nàynày ttậậpp trungtrung vàovào Middle wareMiddle ware Application: Applications, services RMI and RPC Request Reply Protocol (RRP) Marshalling and external data representation Middleware layers Transport: UDP and TCP Other lower lever layers… CácCác ccơơ ssởở ccủủaa thôngthông ñiñiệệpp • API (application programming interface) – Trong ngữ cảnh của bài này, nó ñề cập ñến một interface cho các lập trình viên ứng dụng sử dụng UDP hoặc TCP • Chuyển thông ñiệp có hai tác vụ chính – Gửi và nhận (Request and Reply) – một tiến trình gởi ñến các người nhận khác – Một yêu cầu ñơn giản là cả hai: các nơi nhận và các thông ñiệp liên quan ñến ñồng bộ hóa (synchronisation) ððồồngng bbộộ hóahóa – ðồng bộ (blocking) • Người gởi bị “khóa” nghĩa là bị “ñóng băng” trong khi gởi cho ñến khi có phản hồi từ người nhận • Người gởi và người nhận ñồng bộ với nhau – Bất ñồng bộ (non-blocking) • Người gởi có thể thực hiện xử lý một khi thông ñiệp ñã ñược gởi – Các hệ thống hiện nay nhắm ñến ñồng bộ – Bất ñồng bộ làm cho mã chương trình thêm phức tạp 10/21/2010 2 ððồồngng bbộộ ((tttt.).) • Ví dụ – Blocking: • Yêu cầu rút tiền từ máy ATM • Máy ATM bị khóa cho ñến khi nhận ñược xác nhận quyền truy xuất từ ngân hàng. – Non-blocking • Một DIS là non-blocking, nó cho pháp các xủa lý ñược thực hiện trong khi ñợi trả lời • Email là một ví dụ trong thế giớ thực về thông ñiệp non-blocking • Bạn gởi một email và rồi làm chuyện khác trong khi chờ trả lời API & IP: API & IP: truytruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình • Nơi ñến của thông ñiệp – ðịa chỉ • ðịa chỉ xác ñịnh duy nhất một phần cứng, có thể là một máy tính • Một cổng cục bộ là một nơi ñến trên một máy tính – Một hoặc nhiều thông ñiệp có thể ñược gởi ñến các cổng – Các tiến trình có thể sử dụng một hay nhiều cổng ñể nhận thông ñiệp Address + port 156.254.12.35:875 API & IP: API & IP: truytruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình • Các vấn ñề cần quan tâm trong truyền thông giữa các tiến trình – ðộ tin cậy (Reliability) • Các hệ thống có thể tin cậy không nên làm hư thông ñiệp ngay cả nếu các gói bị mất hay bị hủy – Tính thứ tự (Ordering) • Thông ñiệp ñược phân phối theo thứ tự gởi TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình A computer, IP address = 138.37.543.345 client ports server A computer, IP address = 138.37.53.349 ports Port: 1 Port: 671 Port: 1 Port: 771 TruyTruyềềnn thôngthông titiếếnn trìnhtrình vàvà SocketsSockets • Sockets – Là một sự trừu tượng theo ñó tiến trình liên kết ñến một socket có quan hệ ñến một cổng – Gán một cổng cục bộ ñến một tiến trình – Tiến trình trao ñổi với socket – liên quan ñến một cổng – Các tiến trình chỉ có thể truy xuất thông ñiệp từ các cổng liên kết ñến socket của chúng TruyTruyềềnn thôngthông gigiữữaa cáccác tiêntiên trìnhtrình A computer, IP address = 138.37.543.345 client ports server A computer, IP address = 138.37.53.349 ports Port: 1 Port: 671 Port: 1 Port: 771 Socket maps to a port Socket maps to a port 10/21/2010 3 TruyTruyềềnn thôngthông theotheo UDPUDP ◦ UDP và phương pháp Datagram Datagram ñược gởi từ một tiến trình ñến tiến trình nhận Trước hết người gởi (the client) và người nhận (the server) phải ñược liên kết ñến cùng một socket Client có thể liên kết ñến bất kỳ cổng nào Server liên kết ñến cổng bảng bá ñã xác ñịnh ñể nhận thông ñiệp client gởi thông ñiệp của nó ñến server bao gồm dịa chỉ nguwowgi gởi (ñể nhận trả lời) server nhận và xử lý server gởi trả lời cho client thông qua ñịa chỉ và cổng TruyTruyềềnn thôngthông UDP (UDP (tttt.).) Phương thức send là non-blocking (asynchronous) ◦ như vậy chúng ta tự do khi ñã gởi Phương thức nhận là blocking (synchronous), mặc dù các threads khác có thể ñược dùng ñể tiến hành các công việc khác. Nhận có thể dùng time-outs ñể giới hạn thời gian bị block. ◦ Tuy vậy việc xác ñịnh gia trị timeout tốt là khó Thông ñiệp nhận ñược ñược lưu trữ trong hàng ñợi liên kết với socket. Người nhận kiểm tra socket liên kết ñể nhận thông ñiệp Các thông ñiệp nhận ñược có thể ñến từ khắp nơi TruyTruyềềnn thôngthông UDPUDP ◦ Sử dụng UDP và phương pháp Datagram Hiệu quả khi không quan tâm ñến sự cố và khả năng chịu lỗi i.e. naming services Hiệu quả vì giảm các truyền thông bắt tay ñể bảo ñảm các phương thức phân phối TruyTruyềềnn thôngthông UDP UDP UDP và phương pháp Datagram ◦ Ví dụ về phương thức: aSocket.send(request) aSocket.recieve(reply) ở ñây cả hai request và reply và các gói Datagram ◦ Các phương thức khác: setSoTimeout connect API & IP: API & IP: truytruyềềnn thôngthông UDPUDP • In Java • A DatagramPacket class contains: • i.e. In Java a DatagramPacket is constructed: myPacket = new DatagramPacket(m,args[0].length(), aHost, serverPort); Note: the DatagramPacket contains the host address (aHost) and the host port (serverPort) The message Length of message Internet address Port 3432 543 4531 13 145.25.123.871 589 API & IP: API & IP: truytruyềềnn thôngthông UDPUDP • Trong Java Trong Java, một DatagramPacket được gởi và nhận như sau: aSocket.send(myPacket); aSocket.recieve(myPacket); Ghi chú: aSocket là một thể hiện của lớp DatagramSocket . . cáccác titiếếnn trìnhtrình • Các vấn ñề cần quan tâm trong truyền thông giữa các tiến trình – ðộ tin cậy (Reliability) • Các hệ thống có thể tin cậy không nên làm hư thông ñiệp ngay cả nếu các. 10/21/2010 1 TruyTruyềềnn thôngthông gigiữữaa cáccác titiếếnn trìnhtrình ((InterInter process communication)process communication) CácCác chchủủ ññềề chínhchính – Các ñặc trưng của IPC – Truyền thông ñồng bộ. trình – Tiến trình trao ñổi với socket – liên quan ñến một cổng – Các tiến trình chỉ có thể truy xuất thông ñiệp từ các cổng liên kết ñến socket của chúng TruyTruyềềnn thôngthông gigiữữaa cáccác