TCP/IP的心脏是互联网层。这一层主要是IP和ICMP两个协议组成。
IP相当于OSI参考模型中的第三层——网络层。
网络层的主要作用是:“实现终端节点之间的通信”,点对点通信。
协议头格式
4位版本号:指定IP协议的版本(IPv4、IPv6等)。
4位首部长度:表明IP首部的大小,单位4字节(32位),对于没有可选项的IP包,首部长度设置位“5”,也就是说,对于没有可选项的IP包首部长度为4*5=20(字节)。有选项的4bit可以表示的最大数字是15,因此IP头部最大长度为60字节。
8位服务类型:
其中前3位已经弃用,4位TOS字段和一位保留字段(必须置为0),4位TOS相互冲突只能选择一个.
16位总长度:表示IP首部和数据部分合起来的总字节数,故长度位65536字节。不过目前还不存在能够传输最大长度65536字节的IP包的数据链路,不过由于有IP分片处理,从IP的上一层角度来看,不论底层采用何种的IP链路,都可以认为能以IP的最大包长传输数据。
16位标识:用于分片重组,同一个分片的标识值相同,通常,每发送一个IP包它的值也在逐渐递增。此外,即使ID相同,如果目标地址,源地址或者协议不同的话,也会的分片。
3位标志:
13位片偏移:是分片相当于对原始IP报文开始处的偏移,其实就是在表示当前分片在原始报文中的哪个位置,实际偏移的字节数也就是这个值*8.除了最后一个报文外,为了确保报文连续其他报文的长度必须是8的整数倍。
8位生存时间:可以中转多少个路由器。每经过一个路由器,TTL = TTL -1,直到变成0,不为0就丢弃。
8位协议:表示IP首部的下一个首部隶属于哪一个协议。
16位首部检验和:使用CRC进行校验,鉴别头部是否损坏。
源IP地址和目的IP地址分别表示发送端和接收端IP地址。
网段划分:
在TCP/IP通讯时,用IP地址识别主机和路由器,为了保证正常通信,有必要给每个设备配置正确的IP地址。
IP地址分为两部分:网络号和主机号
IP地址的主机标识:
IP地址的网络标识:
不同的子网其实就是把网络号相同的主机放在一起,如果子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致,但是主机号不能和这个子网中的主机重复。
DHCP:
但是手动管理子网中的IP其实相当麻烦,所以有一种技术叫做DHCP。能够自动的给子网内新增主机分配IP地址,避免了手动管理的不便。
IP地址的分类:
A类:0.0.0.0到127.255.255.255
B类:128.0.0.0到191.255.255.255
C类:192.0.0.0到223.255.255.255
D类:224.0.0.0到239.255.255.255
E类:240.0.0.0到247.255.255.255
但是随着Internet的的飞速发展,这种网段划分的局限性就暴露出来,大部分的组织都在申请B类网络地址,导致A类的浪费。申请一个B类地址,一个子网理论上是可以允许6万5千多个主机,A类的更多。
针对这种情况又出现了新的网段划分(CIDR)
1.引入一个额外的子网掩码来区分网络号和主机号。
2.子网掩码也是一个32位的正整数,通常用一串"0"结尾。
3.将IP地址和子网掩码进行“按位与”,得到的结果就是网络号。
特殊的IP地址:
1.将IP地址中的主机地址全部设为0,就成了网络号,代表这个局域网。
2.将IP地址中的主机地址全部设为1,就成了广播地址,
3.127.*的IP地址用于本机环回,通常是127.0.0.1
IP的数量限制:
IPv4大概有43亿左右个地址,意味着只有43亿台主机能够接入网络,但由于一些特殊的IP地址,实际上接入网络的远不足43亿,而且每一个网卡都需要配置一个或者多个IP地址。
路由(在复杂的网络结构中,找到一条通向终点的路线)
发送数据包时使用是IP地址,然而仅有IP地址还不足以实现将数据包发送到对端的目标地址,在数据发送过程中还需要类似于指明路由器或者主机的信息。一边真正的发往目标地址。保存这种信息的就是路由控制表。实现IP通信的主机和路由器必须持有这样一张表。
IP地址的网络地址部分用于进行路由控制。路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
IP数据包的传输过程和问路一样:
1.当IP数据包到达路由器时,路由器会先查看目的IP。
2.路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个路由器
3.一次反复,一直到达目标IP地址。
路由表查看;route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.16.252.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Destination:目的网路地址;
Gateway:下一跳地址;
Genmask:子网掩码;
Flags:U标志着此条目有效,G标志着下一条地址时某个路由器的地址。没有G表示是目的网络地址是与本机接口直接相连的网络,不经路由器直接转发。