TCP/IP的心脏是互联网层,这一层主要由IP和ICMP两个协议组成。
IP相当于OSI参考模型中的第三层——网络层。而网络层的作用是实现终端节点之间的通信。这种终端节点之间的通信也叫‘点到点’通信。IP地址用于连接在网络中的所有主机中识别出进行通信的目标地址。谷在tcp/ip通信的所有主机中必须设置IP地址。
路由控制、多条路由和路由控制表使得数据包可以成功抵达要去的地方。路由控制表记录着此刻数据包应该下一步应该发送给哪个路由器。
IP为了简化和提速采用无连接的方式,而为了提高可靠性,上层TCP采用面向连接方式。
IPV4
IPV4由32位正整数来表示,在计算机内部以二进制方式被处理。
IPV4地址由网络位和主机位两部分构成。有A、B、C、D、E五类。E类为科研所用。
A类地址:首位以’0’开头,从第一位到第八位是它的网络位。0.0.0.0——127.0.0.0为A类的网络地址。A类地址的后24位为主机位。
B类地址:首位以’10’开头,从第一位到第八位是它的网络位。128.0.0.0——191.255.0.0
为B类的网络地址。B类地址的后16位为主机位。
C类地址:首位以’110’开头,从第一位到第八位是它的网络位。192.0.0.0——223.255.255.0为C类的网络地址。C类地址的后8位为主机位。
D类地址:首位以’1110’开头,从第一位到第八位是它的网络位。224.0.0.0——239.255.255.255为D类的网络地址。D类地址无主机位。
广播地址:用于在同一链路中相互连接的主机之间发送数据包。将IP地址中主机地址部分全部写成1就成为了广播地址。(广播地址分为本地广播和直接广播两种,在本网络内的广播叫做本地广播,不同网络之间的广播为直接广播)。
IP多播:多播用于将包发送给特定组内的所有主机。其直接使用IP协议,不存在可靠传输。多播使用D类地址,从首位开始到第四位是‘1110’,则可认为是多播地址,剩下的28位可以成为多播的组编号。
CIDR和VLSM
CIDR(无类域间选路):多个C类地址可以划分到一个较大的网络内,降低了路由器的负担。
VLSM(可变长子网掩码):将一个网络地址划分为多个主机数。
IPV4报头:
版本号:当前版本号为4即代表此报文为IPV4报文
首部长度:表示当前IPV4报文头部长度。一般为20字节。
优先级和服务类型:用来给特殊的数据打标记,一般用来做QOS。
总长度:表示ipv4数据包的总长度,此字段长度为16 bit,因此用十进制表示最大为65535,也就是说IP数据包最大长度为65535字节即75字节。
标识、标志、片偏移:这三个字段用于ipv4数据包的分片和重组,
生存时间:用于ipv4数据报文的防环,此字段占8个比特,总长度为256,每经过一个路由器减一,当此字段为0时,路由器将丢弃此数据包。
协议号:用于表示将要处理的上层协议类型。
头部校验和:字段长度为16 bit。可以对于IP报头纠错,它不包括被封装的数据内容。
源IP地址和目标IP地址
可选字段:可选且长度可变,但最长为40字节。此字段在实际中用得并不多。
IPV6
IPV6有地址长度有128比特,8个16位字节。IPV6的出现解决了IP V4地址不足问题。
在 IPV6的标记上一般将128比特IP地址以每16比特为一组,每组采用冒号标记,出现连续的0时可以省略,并用两个冒号隔开。一个IP地址中只允许出现一次两个连续的冒号。
全球单播地址
链路本地单播地址:在同一数据链路内唯一的地址。用于不经过路由器,在同一链路中通信。地址范围为FE80::/10。
环回地址:该地址无法在互联网通信时使用 ::1/128
多播地址:FF00::/8
IPV6报头:
版本号:和IPV4报头版本号意思相同,这里为6.
流量级别:长度为8bit,它等同于IPv4报头中的TOS字段,表示IPv6数据包的类或优先级,主要应用于QoS。
流标签:长度为20bit,它用于区分实时流量。
数据长度:定义了负载的长度,数据包封装的字节数。
下一报头:长度为8bit。该字段定义了紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,这个区域非常类似与ipv4包头中的协议字段,实际上使用的目的就是标识在下一头是一个上层协议的头(就是标识上层协议)。 同ipv4这个区域类似,这个区域也是8个bit。 但是在ipv6中,在紧随在数据包头的不一定是上层协议的头(ipv4里面的数据包头后面跟的就是上层协议的头),有可能是扩展包头(再次出现这个名词,在下一段中描述)。 所以下一报头区域的命名具有很大范围的意义。
跳限制:长度为8bit,该字段类似于IPv4报头中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个路由器,该数值减去1;当该字段的值为0时,数据包将被丢弃。
源IP地址和目标IP地址