网络层
IP协议
主机: 有IP,但不能进行路由控制
路由器: 有IP,也能进行路由控制
节点: 主机和路由器的统称
IP协议格式
网段划分:
网络号:标识两个互连的网段
主机号:同一网段内,主机之间网络号相同,主机号必须不同。
不同的子网就是把网络号相同的主机放在一起。
一般的路由器都带有DHCP技术,该技术自动给子网内新增主机分配IP
曾经有一种管理机制把所有的IP地址和网络号划分5类
:
A类 0+7位网络号+24位主机号
B类10+14位网络号+16位主机号
C类110+21位网络号+8位主机号
D类1110+28位多播组号
E类11110+27位 留待以后再用
由于以上方案会浪费掉大量的地址/主机号,针对这种情况提出了新的划分方案,称为CIDR划分子网。
- 引入一个额外的子网掩码来区分网络号和主机号
- 子网掩码也是一个32位的正整数,通常用一段0结尾
- 将IP地址和子网掩码进行按位与,得到的结果就是网络号= IP & 子网掩码
- 网络号和主机号的划分与IP地址类型无关
- 子网主机号位全0----全1范围之间
IP地址和子网掩码更简洁的表示方法:
140.255.20.68/24,表示IP地址位140.255.20.68
子网掩码高24位为全1,即255.255.255.0
特殊的IP地址
- 将IP地址的主机地址设为全0,就成了网络号,表示这个局域网
- 将IP地址的主机地址设为全1,就成了广播地址,用于向同一链路中所有主机发生数据。
- 127.*为环回测试地址 ,通常为127.0.0.1
私有IP和公网IP
10.* 前八位网络号,后24位Ip地址
172.16.*—172.31.*前12位网络号
192.168.*前16位网络号
- List item
一个路由器可以分配两个IP地址,一个WAN口IP,一个LAN口IP(子网IP)
- LAN口连接的主机,都属于到你跟前路由器的子网。
- 不同的路由器,子网IP都一样,192.168.1.1;子网内的主机IP地址不能重复,但子网之间的IP没什么联系
- 最外层WAN口IP就是一个公网IP,子网内的主机需要和外网进行通信时,路由器会把子网IP替换成WAN口IP ,这样层层替换,最终数据包中的Ip成为公网IP,这种技术称为NAT技术
- 我们希望自己实现的服务器程序,能够在外部的公网上访问,就必须有一个公网Ip,这个IP需要购买,因为IP地址短缺。
路由
路由的过程,就是一跳一跳问路的过程。
一跳:数据链路层的一个区间。在以太网中指从源MAC地址到达目的MAC地址之间数据帧的传输区间。
IP数据包的传输过程和问路相似。
1 当IP数据包到达路由器时,路由器先查看目的IP;
2 根据目的Ip 决定发送给下一个路由器还是目的主机
3 反复,直到发送给目的主机
这个过程需要查看路由表。
路由表可以用route命令查看,
若目的IP中了路由表,直接发送即可
数据链路层
MAC地址长度48位,2^48次方个,就用了吧。
一般用16进制 数字 + :的形式来表示。
eg: 08 : 00 : 27 : 03 : fb:19
,
Mac地址是通常是唯一的,有的也可以配置。
虚拟机中的MAC地址并不是真正的MAC地址
MTU:以太网中数据长度最小46字节,最大1500字节,数据不够长,就需要在后边补填充位eg:ARP数据包
最大值MTU称为以太网的最大传输单元,不同的网络类刑MTU不同。
如果数据大于MTU了 ,就会进行分片。
MTU会对IP协议产生影响。因为IP层不负责可靠传输。
MTU对UDP协议的影响:
一旦UDP携带的数据超过1472字节(1500 -20 IP -8 UDP)就会在网络层分成多个IP数据报;
丢失任意一个,在接收端口就会重组失败,如果在发送端网络层再分片,那么丢失数据的概率大大增加了。
MTU对TCP协议的影响:
TCP数据报也受制于MTU,TCP单个数据报最大消息长度称为MSS
TCP在建立连接的过程中,双方会进行MSS协商,
双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值,然后取最小的作为最终的MSS值。,MSS值在TCP首部的40字节选项中。kind=2;
即DATA = MSS
MTU 》= IP + MSS
ARP 协议
ARP协议介于数据链路层和网络层之间
ARP协议建立了主机IP地址和MAC地址映射关系
- 在网络通信时,应用程序必须直到目的主机的IP地址和端口号,却不知道目的主机的硬件地址MAC
- 数据包首先被网卡接收到,再去处理上层协议,如果接收到的数据包的硬件地址于本季不相符,则直接丢弃。
- 因此,通信前,必须知道目的主机的Mac 地址
ARP协议工作流程
1 源主机发出ARP请求,询问某个IP地址位的硬件地址,并将这个请求广播到本地网段,硬件地址填FF:FF:FF:FF:FF:FF表示广播,
2 当目的IP主机发现ARP请求时,就会将自己的Mac地址填写在应答包中。
3 每台主机都维护着一个ARP缓存表,可以用arp -a 命令查看,缓存表20分钟后过期。
DNS域名解析协议
因为IP+port 来确定一个主机上的一个程序,不好记忆。我们用一个字符串来描述主机名,用hosts 文件描述主机名和IP地址关系
eg:www.baidu.com
.com :一级域名
baidu:二级域名
www:www只是一种习惯用法。来表示主机支持的协议
ICMP协议
网络层协议
ICMP功能:
1 确认IP包是否成功到达目的地址
2 通知发生IP包丢包的原因
3 ICMP只搭配IPv4 使用。IP v6 需要使用ICMP6
ICMP报文格式
类型 + 代码 + 校验和
ICMP分为两类报文
一类: 通知出错原因
二类:用于诊断查询
ping命令:
ping的是域名,而不是URL;域名可以通过DNS解析成IP
ping不仅能检查网络 ,还能统计响应时间和生存时间TTL
ping会先发送一个ICMP Echo Request给对端,
对端收到,回复一个ICMP Echo Reply
网络层不关注传输层的端口号
traceroute命令
基于ICMP协议实现,可以打印出可执行程序主机,一直到目标主机之前经历多少路由器。
NAT技术:
起因:解决Ipv4 不足;
方式,逐层更换IP为路由器IP,最终达到公网IP
NAT 技术缺陷;
1: 依赖路由表
2;无法从NAT外部向内部服务建立连接
3:转换表的生成和销毁都需要开销
4 通信过程一旦NA图设备异常,即使存在热备,所有TCP连接都会断开