1) You actually are dumping a collection of bits into a structure and then you are using the individual members. If you would do what you actually said in paragraph one, there would be no problem. Breaking the data up as it arrives and storing it into the individual members is the way to go.
2) I would hope so
3) I know. You're hardly alone. But the practice still saddens me. I'll get over it.
4) You would be better off to stop thinking like that. You don't transfer a structure from one system to another. You tranfer a collection of data that might be called a frame, or a packet, or a cell, or a datagram. The data might be stored in structures at both ends. But the data comes out of the structure and is used to assemble a packet. The packet arrives at the other end. The data gets broken up and stored back into a similiar structure. I know, you want the packet to
be the structure. I know it looks attractive to do that. I know it looks like it saves a lot of effort. But this why you're having trouble now.
Suppose, for a minute, that c had nothing called a structure. How would you write the code then? For the most part, that is what you should do. That would force you to code the algorithms correctly. Then go back and use structures only to organize collections of variables. That is all that structures are intended to do.