赞
踩
网络层主要做的事情有两方面:
四个状态:最小延时、最大吞吐量、最高可靠性、最小成本
16位总长度(字节数):描述了IP数据包最长是多长。IP协议也存在64KB大小的限制,但是IP协议自身支持“拆包组包”功能。
16位标识、3位标志位、13位片偏移:依靠这三个属性来实现“拆包组包”
16位标识:如果一个大的IP数据包需要拆分成多个小的。拆出来的这些小包的16位标识的数值就是相同的
13位片偏移:描述当前每个小的数据报(分片)的相对位置。片偏移越小,这个数据分片就越靠前。
3位标志位 :有一位表示是否允许拆包,还有一位表示是否是最后一个包,剩下的一个是保留位。
8位生存时间(TTL):描述了当前这个数据包,在网络上还能存活多久。TTL的单位是次数。数据包构造出来的时候,TTL会被设置成一个初始值(32、64、128…)数据报在转发的过程中,每次经过一个路由器转发,TTL就会-1。换句话说,就是描述这个数据包,能够经过多少个路由器。如果这个数据报,把TTL耗尽了都没有到达,就会被丢弃掉。
对网络进行了兜底。如果存在一个不存在的地址,耗尽TTL后,就不会再网络上一直传递
8位协议:描述的是,IP数据包的载荷部分是UDP数据包,还是TCP数据包(传输层是哪个协议)
16位首部校验和:这个校验和只校验IP协议的头部,不管IP的载荷。(载荷就TCP/UDP,本身就有校验和)
32位源IP地址、32位目的IP地址 (IP数据报中最关键的内容):IP地址本质上就是一个32位的整数。为了方便理解,会写作 点分十进制的方式。
IP地址,是一个32位的整数。0~2^32 ,42亿9千万。
地址理论上来说,是不应该重复的,所以这个数远远不够需求
治标不治本,只是提高了IP地址的利用率,并没有增加IP地址的数目
本质上,让一个IP地址,来代表一批设备。
把IP地址分成两个大类:
如果一个地址,是以10.* 或者172.16.* ~ 172.31.* 或者 192.168.* 就是内网IP
在同一个局域网之间,内网IP之间是不能重复的。
在不同的局域网中,内网IP之间是可以重复的。
剩下的IP就是外网IP,是唯一的,不能重复。
局域网使用一个外网IP,一个外网IP就代表了成千上万个设备
例如快递的地址,是公用一个快递驿站
内网IP无法在广域网上使用,在经过运营商路由器时(也是一个NAT设备),就会对数据包报头的源IP地址进行替换,转换成外网IP。站在服务器的视角,看到的发送方IP就是局域网对应的外网IP。运营商路由器内部,会记录一个映射关系,记录内网IP和外网IP的转换。当报文返回后,就需要把IP再替换回去。
NAT设备(运营商路由器)就相当于是一个中转站,发送和接收经过时都会替换IP地址。
当服务器返回数据之后,路由器如何决定这个数据要交给哪个设备?
快递驿站通过电话号,进行具体的区分
当前的网络环境,就是以NAT+动态分配的方式来解决IP地址不够用的情况。NAT机制最大的优势,就是“纯软件方案”。
IPv6使用16个字节来表示IP地址。IP地址数量成指数增长,解决了IP不够用的问题。
IPv4是4个字节 :2^32
IPv6是16个字节:2^128 = 2^32 *2^32 * 2^32 * 2^32
把一个IP地址分成两个部分:
网络号(标识了一个局域网)+ 主机号(标识了局域网中的一个设备)
255.255.255.0
11111111 11111111 11111111 00000000
子网掩码用来区分网络号
也是一个32位的整数。左侧都是1,右侧都是0。不会10交替。
被标记为1的部分,就是网络号。这里的1不一定是24个,可以根据网络环境进行配置。
如果一个IP地址,主机号全0,当前这个IP就表示“网络号”,代表当前的局域网,不能划分给主机
192.168.100.0
255.255.255.0
如果一个IP地址,主机号全1,表示当前这个IP就是一个“广播地址,同样不能给主机分配
192.168.100.255
255.255.255.0
之前提到,UDP天然支持广播,使用UDP socket给这个地址发送UDP数据报,此时局域网内所有的设备,都能收到这个设备。TCP则无法和这个地址建立连接。
如果一个IP地址是127开头的,这个IP就是"环回IP" (loopback)
127.0.0.1
设备自己发给自己,本质上是操作系统提供了一个特殊的“虚拟网卡”,关联到了这个IP上。主要的用途,进行一些测试性工作。能排除网络不通的因素,方便排查代码的问题。
A->B中间可能会有很多条可行的路径,具体该怎么走。
IP数据报转发的时候,每个路由器都是无法知道网络的“全貌”的,只知道一些局部信息(一个路由器能够知道哪些设备和它是相连的)。这就意味着,IP数据报在转发过程中,是“探索式”的过程。很难得到“最优解”,只能是“较优解”
一个网络层的数据报,每到达一个路由器,都会进行“问路”。每个路由器每部都有一个数据结构叫“路由表”,根据数据报当中的目的IP,查路由表。如果查到了 ,就直接按照表给的方向(从哪个网络接口进行转发)继续准发。如果没查到,路由表里有一个“默认的表项”(下一跳地址),按照默认的表项进行转发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。