You obviously know your stuff Phillip, and I again apolgize for my outburst.
If I could offer the following though.
CIP is the application layer for the 3 open networks of AB.
Take EtherNet and it's 7 layers. The bottom layer is the physical layer which lays out how it connects to the wire, and the top layer is the application. Everything from the TCP/IP down is generic in the terms that all EtherNet devices can connect together. What determines if they can talk to each other is the application. ie someone who is using a windows explorer to try and connect to an IBM mainframe. They both can connect together on the EtherNet network, but they do not speak the same language.
CIP is the new application layer for EtherNet/IP (The IP stands for Industrial Protocol not InterNet protocol) , which is also the same layer for ControlNet and for DeviceNet. This is how NetLinx works, and how you can go from EtherNet, down through ControlNet, and configure a device on DeviceNet. Even though the wire connection is different (Cat5, Coax, etc) , the main language (CIP) is the same throughout.
Contrary to belief, EtherNet/IP doesn't use TCP/IP, it uses UDP/IP (User Datagram Protocol). The difference between TCP and UDP is that TCP sends the message and then gets a message back saying that its been recieved, where as UDP just sends the message out as fast as it can with no message back. Now for I/O control this doesn't make sense, as you would want to make sure the message got to the I/O; and in fact it does do a check. Go a little higher up to the application layer (CIP) and this is where the confirmation takes place. There is no need for both the TCP and the CIP to ensure the message to to it's intended destination, so why not let one take care of it (CIP) and then use the UDP to send the info out as fast as possible.
I could go on and I know that someone else could go beyond what I know, but it gives you the jist of how the grand scheme works.