That's a good observation. As pointed out by @Orhan Gazi Hafif, networking (TCP/IP in particular in your question) is one form of IPC. On your computer, ROS relies on your operating system's localhost
network interface (i.e., 127.0.0.1
) for single-host communication. As a "bonus" , ROS has the (nearly transparent) capability for distributed computing, which isn't possible for other forms of IPC (e.g., shared memory -- although, see nodelets for one way to handle that).
You've found a rather rich topic with a lot of history -- for instance, the (unfortunately confusingly named) ipc package came out of CMU (used in CARMEN robotics software) in the mid-90s. Note that this topic is still relevant -- ROS2 is going to use DDS as its middleware layer.
Why you need this? And offline means "local". Ros nodes are already communicating offline with TCP via localhost. If you need specific approaches; Take a look at: Wikipedia - Inter Process Communication