http://baike.baidu.com/view/21992.htm
这里是IPv4的一点资料,更多的请参考TCP/IP网络编程相关书籍资料。
不过我觉得你还是先把基本概念搞清楚:
协议是数据交换的一个约定,规定了怎么进行控制和数据的传输,比如IPv4,ICMP等都是不同的协议。
数据报你可以理解为进行传输的一组数据,不同的协议会有不同的报头来进行区分;你可以理解为数据报就是“报头+数据”。但是因为网络层次等关系,所以你一个上层来的数据报在下层看来就是一堆数据了,于是他也会按“当前层的报头+数据”进行封装交给更下层。所以你一个最终发送的报文里嵌套了很多层的,有很多层的报头。
而接受的时候就是反过来,像剥蒜皮一样一层一层地把下层的报头去掉最后拿到想要的数据。
再来说你传送的数据,或者说你放到缓存区里的数据,不过是一堆01代码对么。而这些数据进一步会按照字节(8个0或1这样的bit位)组织在一起,这些数据在你确定好具体划分之前是没啥意义的。而协议报头则规定了怎么把这些缓存读出来。比如IPv4协议前4个bit表示了当前协议,之后的32个bit(4字节)说明了这个报头的长度(还记得“报头+数据”么,这个字段说明了你的报头的长度,剩下的是数据)。