本文将不断更新~
网络模型
OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
数据链路层对应的数据为Frame,网络层对应的数据为Packet,传输层对应的数据为Segment。
网络数据首先会打到TCP的Segment中,然后TCP的Segment会打到IP的Packet中,然后再打到以太网Ethernet的Frame中,传到对端后,各个层解析自己的协议,然后把数据交给更高层的协议处理。
TCP/IP四层模型:链路层、网络层(IP/ICMP/IGMP)、传输层(TCP/UDP)、应用层(如Telnet/HTTP/FTP)
IPv4 and IPv6 Headers
IPv4 Datagram分为首部(Header)和数据两部分。IPv4 Header由固定部分(Basic)和选项部分(Options)组成,其中固定部分的大小为20 bytes。IPv4 Header最大为60 bytes。
总结几个重要的field:
- ToS(Type of Service):DS Field(Differentiated Services Field) + ECN(Explicit Congestion Notification, 显式拥塞通知)
- TTL(Time-to-Live):数据报可以经过的最多路由数,指示了数据报的生存时间
与IPv4 Header不同,IPv6 Header具有固定的大小(40 bytes),并且没有选项部分。但是IPv6 Header可以有扩展首部(extension headers),其作用与Options类似。Next Header字段用于指示extension headers。
大端、小端与网络字节序
大小端是面向多字节定义的字节存储顺序。
大端(Big-Endian)就是最高有效字节(MSB)在前,内存存储体现上,数据的高位更加靠近低地址。
小端(Little-Endian)就是最低有效字节(LSB)在前,内存存储体现上,数据的低位更加靠近低地址。
比如对字0x01234567
,最高有效字节为0x01,最低有效字节为0x67,那么其对应的大端存储顺序为01 23 45 67
,小端存储顺序为67 45 23 01
。
对于IP数据报来说,RFC标准要求数据在网络中传输时都要求以大端字节序传输,因此网络字节序就对应Big-Endian字节序。