网络层是找到从源IP到目的IP的路径,它有能力跨网络把数据从A主机传输到B主机(TCP指使IP进行传输)
网络层一个常用的协议叫IP协议。
特点/作用:
1.无连接、不可靠
2.建立了物理层和传输层的统一
3.寻址和路由
-
-
头部长度
也叫报头长度,有4位,4字节一个单位,分组头最小值为5,表示20字节,最大值为15,表示60字节;和TCP一样
-
服务类型
4位TOS分别表示最小延时、最大吞吐量、最高可靠性、最小成本,四者冲突只能选择一个。
-
标识
如果IP报文被分片,那么他们的标识是一样的。用来分片和组装。
-
标志
第一位保留、第二位表示禁止分片,那么超过MTU就会直接丢弃。第三位表示更多分片,1表示还有分片,0表示这是这个报文分片中最后一个。类似于结束标记。
-
分片偏移
标记了这个分片报文在原数据中的位置,位置 = 这个数*8;保证报文的连续性。
-
生存时间
数据到达目的地的最大跳数,一般是64,每经过一个路由器,会减一,减到0还没到就直接丢弃。防止路由循环。
-
协议
表示上层协议类型,哪个协议发来的
-
首部校验和
用CRC检验,鉴别头部是否损坏,保证数据的完整性。
-
选项
不定长,最多40字节。
问题1:上面提到了"分片",什么是分片?
分片和TCP拆分数据一样,因为IP也有大小限制,而且大小是由MAC协议(1500)也就是链路层协议决定的。
问题2:那各个层之间大小是怎么协定的?
在TCP三次握手中,就已经交换了自己可以接受的最大报文长度(MSS),取双方较小的。
MSS = MTU - IP报头 - TCP报头 = 1500-20-20 = 1460
MTU是由网络类型(链路层)决定的。
1.取消了首部长度,因为IPv6的首部长度是固定40个字节。
2.取消了服务类型,因为流标号和优先级结合起来实现了服务类型的功能。
3.取消了总长度字段,改用为有效载荷长度,有效载荷就是后面的扩展首部加上数据报中的数据。
4.取消了标识,标志和片偏移,因为这些功能都包含在了扩展首部里面。
5.取消了协议字段,改用为下一个首部,功能不变,这样更容易理解。
6.取消了生存时间ttl,改用为跳数限制,功能不变,这样更容易理解,更形象了。
7.取消了首部效验和,这样加快了路由器对数据报的处理速度,在数据链路层中,当我们发现有差错的帧就会抛弃,在运输层中,在udp中,当发现有差错就会抛弃,在tcp中,当发现有差错就会重传,直到传送到目的进程为止。因此在网路层的检测就可以精简掉。
8,取消了选项字段,功能归并在了扩展首部上。了解即可,IPv6并不普遍。
IP = 网络号 + 主机号
每个网络中的主机号不能相同。
自动分配主机号:DHCP技术。一般的路由器都有这个技术,因此一个路由器也可以看作一个DHCP服务器。
划分方法1:
把所有的IP划分为五类
A - 0 -网络号 - 主机号 //0.0.0.0 ~ 127.255.255.255
B -10 -网络号 -主机号 //128.0.0.0 ~ 191.255.255.255
C -110 -网络号 -主机号 //192.0.0.0 ~ 223.255.255.255
D -1110 -网络号 -主机号 //244.0.0.0 ~ 239.255.255.255
E -11110 -网络号 -主机号 //240.0.0.0 ~ 247.255.255.255
缺点:A类占有很多IP,但是经常被申请的却是B类,导致大量地址被A浪费。
这些地址不会被Internet分配,他们再Internet上也不会被路由,虽然它们不能直接和Internet网连接,但通过技术手段仍旧可以和 Internet通讯(NAT技术)。
划分方法2:
子网掩码划分
为了改进上述简单粗暴的划分方式,提出了新的技术方案,CIDR,Classless Interdomain Rounting
引入一个子网掩码来区分网络号和主机号。通常用一串0结尾。
网络号 = 子网掩码&IP
IP范围: 全0 ~ 全1
每个网段有 16-2(全0全1)=14台主机。
特殊的IP地址
(1) 0.0.0.0
严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
(2) 广播地址(255.255.255.255)
限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。
(3) 环回地址(127.0.0.1)
本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。
(4) 165.254.x.x
如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。
IP地址是四个字节,差不多就是43亿个IP。随着互联网的普及,IP数量也受到了限制。
CIDR是缓解了这个问题但并没有解决,只是提高了利用率。
所以有三种解决方法:
-
动态分配IP地址。只给介入网络的主机分配IP地址,所以说每次接入获取的IP都不一定相同。
-
NAT技术。网络地址转换,让一个局域网中的主机建立连接时,把报文中的原IP换成局域网路由器的IP。
-
IPv6 。用16个字节表示IP地址,但是还没有普及。
私有IP可以访问公有IP
公有IP不可以访问私有IP
这时候就需要一个”中间人“—路由器
一个路由有两个IP,WAN口接路由器自己的IP,LAN口连接的主机都是属于这个路由器所在的子网中。
NAT技术
协议层:网络层
解决问题:IP地址数量限制
1.私有 -> 公有
就得先将数据发送给路由器,主机A的路由器将原IP替换成WAN口IP,也就是路由器自己的IP,再发送给广域网的所在的路由器WAN口IP处,再发送给目的主机B。
2.公有 -> 私有
在数据返回的时候,传送到目的IP所在网域的路由器后,路由器根据路由地址转化表寻找最初的IP地址并发送数据(NAPT技术)。
问题1:假如局域网中同一时间多台主机都访问外部服务器,那么数据返回时,路由器怎么正确地发送回去呢?
-
引入技术NAPT,使用IP+port建立一个关联关系。由NAT路由器自动维护,在TCP建立连接时创建表,断开时自动删除。
NAT技术缺陷
NAT技术核心就是这张转换表,也就是说依赖于这张表。
-
这张表的开销是一个缺陷
-
假如NAT设备异常,即使存在备份,也会断开所有TCP连接
-
无法从外部向内部建立连接
问题2:这么说来NAT和代理服务器很相似了?
-
并不是,首先它们不在同一个协议层,NAT在网络层,直接对IP协议报文中地址进行修改操作。而代理服务器是工作在应用层,对客户端和服务器之间起一个桥梁作用。
-
在范围上来讲,NAT路由器是局域网的出口,连通了局域网内部和广域网之间的联系。而代理服务器是可以在局域网做(负载均衡),也可以在广域网做(翻墙),还可以跨网。
-
本质上看,NAT一般集成在路由器、防火墙上。而代理服务器就是一个软件程序,需要部署在服务器上。
路由就是在路由器链路上一跳一跳问路的过程。
是MAC地址 -> MAC地址的过程。
路由器拿到一个数据包之后,查阅路由表判断这个报的目的IP,有没有能直接发给所管理的网域的主机IP,如果不能,那就按缺省路径发送给下一个路由器。
查看路由表(route命令)
traceroute/tracert命令
打印执行主机到目标主机所经过地所有路由器。
协议里,IP地址在传输过程中基本不变,而MAC地址一直在变化。(路由)
IP地址描述路途的起点终点,MAC地址描述的是途中区间的起点终点。