目录
前言:
IP协议
提出问题
解决方案
地址管理
子网掩码
路由选择
小结:
IP协议作为网络层知名协议。当数据经过传输层使用TCP或者UDP对数据进行封装,然后当数据到达网络层,基于TCP或UDP数据包继续进行封装。逐级向下封装直到物理层,通过网卡把数据发送出去。
解释:
1)4位版本号:此时的取值只有两个(4,6)IPV4 ,IPV6。
2)4位首部长度:描述了IP报头有多长,单位4字节。报头中的选项部分是变长,可有可无的。
3)8位服务类型
说是8位其实只有4位有效。这4位中只有一位可以是1其他都是0,4位就表示IP协议的4种工作模式。(最小延时,最大吞吐量,最高可靠性,最小成本)
最小延时:数据发送的最快(耗时最短)。
最大吞吐量:单位时间内可发送的数据最多。
最高可靠性:丢包概率最小。
最小成本:数据发送需要的成本最小。
4)16位总长度
描述了IP数据报的长度(头 + 载荷)。这个长度 - IP报头长度 = 完整TCP/UDP数据报长度。16位最大只有64k,那么IP最大只能发送64k的数据吗?
如果IP数据报超过了64k,就会在网络层针对数据进行拆分。把一个数据拆成多个小于64k的数据报,再分别发送。接收方在网络层针对载荷进行拼接。
5)16位标识:同一个数据拆成多个包,标识都是一样的。(5,6,7都是辅助拆包/组包提供的)
6)3位标志:拆包的结束标志。
7)13位片偏移:标识了多个包的先后顺序。
8)8位生存时间:一个数据在网络上能够传输的最大时间(单位:次数)。一个数据构造出来会有一个TTL初值,每经过一个路由器转发 TTL - 1。如果TTL为0,则直接丢弃。
9)8位协议:描述了载荷部分属于哪一个协议(TCP/UDP)。
10)16位首部校验和:此处只需要对首部进行校验,载荷已经在传输层校验过了。如果校验失败直接丢弃,IP不负责重传。
11)32位源IP地址,32位目的IP地址:一次通信中的五元组之二。这里的IP地址是32位的整数,但我们平时看到的是一串数字。使用 “点分十进制” 的方式转换(每个字节为一组,用十进制表示,共4个字节)。
32位只能表示32亿9千万个数字。对于全球可以上网的设备可以说是非常小的,就会造成IP地址不够用。
1)动态分配IP地址
动态分配IP地址(可以省下一批ip)。电脑联网就动态的分配ip地址,那么同一时间关机或者没联网的设备就不需要ip地址了。
2)NAT网络地址转换
NAT网络地址转换,本质是使用一个IP代表一批设备,使用端口号区分。
在NAT背景下将IP地址分为两类:
1.内网IP(私有IP),10.*;172.16.* -- 172.31.*;192.168.*
2.外网IP(公网IP),剩下的都是公网IP。
注意:
NAT要求公网IP必须是唯一的,内网IP可以在不同局域网重复出现。
如果某个内网设备想要访问公网设备,就需要通过NAT(路由器)将内网IP转换为公网IP,完成访问。公网设备无法直接访问内网设备。不同局域网的内网设备无法直接访问。
注意:
服务器接收的数据,所看到的源IP都是运营商路由器对内网设备的IP的转换。
服务器响应数据,会先发给运营商路由器,然后根据设备的不同端口号来区分,要发给哪个设备。
因此服务器只是拿到路由器的IP,不能拿到设备的内网IP。如果我的设备不主动和服务联系,那么服务器就不清楚我的端口,就无法主动找到我的设备。
3)IPV6
IPV6使用了16个字节表示IP地址(这个数字让全世界每一粒沙子都有IP也完全够用),从根本上解决了IP地址不够用的问题。
网络号:标识网段,保证相互连接的两个网段具有不同的标识。(通俗说就是标识两个不同的局域网)
主机号:标识主机,同一网段内所有主机都有相同的网段号,但必须有不同的主机号。
注意:
内网IP地址由网络号和主机号组成。网络号用来区分不同的局域网(相邻的局域网网络号必须不同),主机号用来区分同一个局域网下不同的主机。
路由器都是有两个IP,分别属于不同的网段,用来连接两个局域网。
用来区分IP地址哪部分是网络号,哪部分是主机号。
例如:255.255.255.0。二进制为1的部分描述了多少位是网络号,0的部分就是主机号。
路由选择就是规划网络传输的路径。
核心机制:
问路的方式。每个路由器都会保存周围的设备(路由表),每经过一个路由器就会询问接下来怎么走,路由器就会查找路由表。如果有匹配的就按照路由器提供的走。如果没有匹配的,路由器会默认提供一个路径,大体方向都是正确的。
理解网络传输的过程,还有一些历史背景,会使我们对于网络有更深层次的认识。