Bằng cách sử dụng một kiến trúc được phân tầng, thì mỗi tầng của nó có thể được nâng cấp và được thay thể mà không ảnh hưởng gì tới những tầng còn lại của hệ thống. Ví dụ tầng giao vận có thể được thay thế bởi một tầng UDP/IP mà không hề ảnh hưởng tới các tầng ở trên. Bây giờ ta đi vào tìm hiểu chi tiết từng tầng.
Tầng Stub và Skeleton
Tầng Stub và Skeleton của RMI nằm ở ngay phía dưới tầm nhìn của các nhà phát triển Java. Trong tầng này thì RMI sử dụng kiểu thiết kế Proxy. Trong kiểu thiết kế Proxy, thì một đối tượng trong một ngữ cảnh này thì sẽ được trình diễn bởi một đối tượng khác trong một ngữ cảnh khác. Proxy sẽ biết cách để gửi các lời gọi phương thức giữa các đối tượng tham gia.
Skeleton là một lớp trợ giúp, nó được sinh ra để cho RMI sử dụng. Lớp Skeleton sẽ biết cách để giao tiếp với lớp Stub qua một liên kết RMI. Lớp skeleton điều khiển cuộc trao đổi với lớp stub. Nó đọc các tham số từ lời gọi phương thức từ liên kết, sau đó tạo ra lời gọi phương thức tới đối tượng thi hành dịch vụ từ xa, sau đó nhận giá trị trả về, rồi chuyển giá trị trả về đó cho lớp Stub.
Tầng tham chiếu từ xa
Tầng này hỗ trợ một đối tượng RemoteRef, đối tượng này thể hiện một liên kết tới một đối tượng thực thi dịch vụ từ xa. Các đối tượng stub sử dụng phương thức invoke() trong đối tượng RemoteRef để gửi lời gọi phương thức.
Sự thi hành của RMI trong phiên bản JDK 1.1 chỉ cung cấp một cách thức để các client kết nối tới các đối tượng thi hành dịch vụ từ xa, đó là kết nối điểm - điểm . Trước khi một client có thể sử dụng một dịch vụ từ xa, thì dịch vụ từ xa đó phải được trình diễn trên server và được đăng ký tới hệ thống RMI ( nếu nó là dịch vụ chính, thì nó cũng phải được đặt tên ,và được đăng ký trong register RMI)
Trong phiên bản Java2 JDK sự thi hành của RMI thêm vào một semantic cho kết nối client-server. Trong phiên bản này RMI hỗ trợ các đối tượng từ xa có khả năng tự kích hoạt, khi một lời gọi phương thức được tạo ra từ Proxy tới đối tượng có khả năng tự kích hoạt. Lúc đó RMI sẽ xác định xem: nếu sự thi đối tượng dịch vụ từ xa là chưa được kích hoạt, thì RMI sẽ kích hoạt nó và khôi phục trạng thái của nó tới một file trên đĩa
Tầng giao vận
Tầng giao vận tạo ra các kết nối giữa các máy ảo. Tất cả các kết nối đó là các kết nối mạng dựa trên luồng sử dụng giao thức TCP/IP.
Thậm chí hai máy ảo chạy trên cùng một máy tính vật lý, thì chúng sẽ kết nối thông qua giao thức mạng TCP/IP nằm ở trên máy chủ có địa chỉ cục bộ localhost (127.0.0.0). Biểu đồ sau đã đưa ra khả năng sử dụng không giới hạn của các kết nối TCP/IP giữa các máy ảo.
Như chúng ta đã biết, TCP/IP cung cấp kết nối có tính liên tục, theo luồng giữa hai máy dựa trên địa chỉ IP và số của cổng (port number) tại mỗi điểm cuối. Thông thường, tên một DNS được sử dụng thay cho địa chỉ IP; điều đó có nghĩa là chúng ta có thể nói về kết nối TCP/IP giữa flicka.magelang.com:3452 và
rosa.jguru.com:4432. Trong phiên bản này, kết nối TCP/IP được sử dụng cho tất cả các kết nối máy tới máy.
Trong top của TCP/IP, RMI sử dụng mức giao thức dùng dây gọi là Java Remote Method Protocol (JRMP). JRMP là một giao thức dựa trên luồng, và hiện tại có hai phiên bản. Phiên bản thứ nhất JDK 1.1 yêu cầu phải sử dụng các lớp Skeleton trên server. Phiên bản thứ hai Java 2 SDK được tối ưu cho sự thi hành và không yêu cầu các lớp skeleton.