前言
网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。
IPv4报文组成(了解)
IPv4首部:IPv4首部包含了用于路由和传输数据的控制信息,其长度为20个字节(固定长度)。
- 版本(Version):表示使用的IP协议版本,通常为4。如果版本号是6,则ipv6
- 4位首部长度(Header Length):表示IPv4首部的长度,以4字节为单位。4个比特位表示的数字范围0~15,有选项(0~15)*4
- 8位服务类型(Type of Service):可以让ip协议切换形态。有1位保留位(必须设置成0),4位tos标志位,3位优先权字段。4位tos分别表示最小延时,最大吞吐量,最高可靠性,最小成本。指定了数据包的优先级和服务质量要求。最小延时:尽可能快的传输数据包以减小传输延时;最大吞吐量表示数据包的传输速率被最大化以提供高效的数据传输。最小成本表示通过降低带宽和资源占用来减少成本。4选一
- 16位总长度(Total Length):表示整个IP数据报的长度,包括首部和数据部分。ip协议确实存在64kb的限制,但是它自身支持拆包和组包
- 16位标识(Identification):用于将分片的数据包进行重新组装时的标识。
- 3位标志(Flags):包括3位,用于指示是否进行数据分片以及分片的位置。3位标志中有1位允许拆包,还有一位表示是否允许拆包。
- 13位分片偏移(Fragment Offset):指示分片在原始数据报中的位置。
- 生存时间(Time to Live):表示数据包在网络中可以经过的最大跳数,每经过一个路由器减1。单位次数。如果数据包已经把ttl耗尽了,还没到达就会被丢弃。数据包构造出来的时候,ttl会被设置成一个初始值32,64.....
- 协议(Protocol):指定了数据部分即载荷使用的上层协议,如TCP、UDP等。
- 首部校验和(Header Checksum):用于检测IPv4首部在传输过程中的错误。载荷中udp或者TCP都有自己的校验和方法。
- 源IP地址(Source IP Address):表示数据包的源地址。
- 目标IP地址(Destination IP Address):表示数据包的目标地址。
可选字段(Options):IPv4首部中可以包含一些可选字段,用于提供额外的功能或进行特定的处理。可选字段的长度是可变的,因此必须使用首部长度字段来确定首部的结束位置。
数据部分:数据部分是传输的实际数据,它的长度可以根据需求而变化
IP 地址是一个 32 位的二进制数,2^32=42亿9千万,通常被分割为 4 个 “8 位二进制数 ” (也就是 4 个字节),如:01100100.00000100.00000101.00000110 。通常用 “ 点分十进制 ” 的方式来表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之间的十进制整数)。如:100.4.5.6 。
地址管理
地址管理描述设备在网络中的那个位置。ip地址是32位整数,2^32=42亿9千万,并不够用。理论上IP地址不能重复。
1. 动态分配;
2. NAT机制(网络地址转换)
让一个IP地址代表一批设备,NAT技术不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。相当于一个中转站,内部存有映射表。用于将一个网络的IP地址转换成另一个网络的IP地址。NAT通常在路由器上实现,给设备分配·私有地址,当这些内部设备要发送数据到外部主机或者服务器,路由器将私有IP地址转换为公共IP地址,并且使用端口号进行标识,当数据回来的时候,再把共有地址转变为私有地址,私有地址是不能被共有地址直接访问的,以便在私有网络上使用Internet。当数据返回回来,路由器需要结合端口号(区分不同的主机)知道返回给哪个主机,路由器也可以把相同端口号替换成不同的端口号。
1)内网(局域网)IP 192.168/172.16
在同一个局域网,IP不能重复;不用局域网,IP可以重复
2)外网(广域网)IP必须唯一
nat机制+动态分配可以用来解决ip不够用的情况,除非局域网内同一时刻访问同一服务器超过了65535,nat可能会不够用。nat是纯软件的方案!因为nat,局域网内部的机制可以主动去访问外网的设备,而外网设备不能主动访问局域网的设备
IPv6
用16字节128位来表示一个IP地址,2^128二进制转十六进制,能够大大缓解IP地址不足的问题。但IPv6并不是IPv4的简单升级版,它们是互不相干的两个协议,彼此并不兼容,目前已经70%升级了。
ip网段划分
网络号(标识一个局域网)+主机号(局域网中的设备)
IP地址组成为:网络号+子网号+主机号
子网掩码
之前我们使用五类划分,当前都是子网掩饰
在cmd窗口输入ipconfig
无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::be76:c0d0:8d69:c6f8%20 IPv4 地址 . . . . . . . . . . . . : 192.168.8.192 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.8.1
其中子网掩码255.255.255.0,这·也是32位整数,左边全是1,右边是0,不会1,0交替出现。
1111 1111 1111 1111 1111 1111 0000 0000,
被标记为1的就是网络号,1的个数根据实际定。
如果一个IP地址的主机号全是0,那他表示网络号。eg:192.168.100.0
如果一个ip地址主机号全是1,那他就是个广播地址。使用UDP socket给这个地址发送udp数据报,此时局域网内所有设备都能收到这个数据报。eg:192.168.100.255
如果以127开头的ip就是环回IP,eg:127.0.0.1就是发送给自己设备的,这个是操作系统提供了一个特殊的虚拟网卡关联到这个ip上。
路由选择
描述ip数据报的转发过程。
是 探索式 的过程......
一个网络层数据报,每次到达一个路由器,都会进行一个类似“问路”的操作。每个路由器内部都有一个路由表的数据结构,根据目的IP,去查询路由表,
如果查到了,就按照路由表给定的方向(从哪一个网络接口进行转发),继续转发;
如果没查到,路由表里有一个默认的选项,就是下一跳地址,按照默认的表项继续转发;
IP 地址描述的是 路途总体的起点和终点 ;是给人使用的网络逻辑地址。MAC 地址描述的是路途上的每一个区间的起点和终点,即 每一跳的起点和终点 ;是给网络硬件设 备使用的网络物理地址。