网络基础(四)—— 网络层

本文深入讲解IP协议的工作原理,包括IP地址的分类与划分、子网掩码的应用、CIDR技术以及路由选择的过程。此外还介绍了ICMP协议的作用及其在网络故障排查中的应用。

网络层

IP协议头格式

在这里插入图片描述

16位标识,3位标志字段,13位片偏移组成IP的分片与组装功能,一般不建议分片,有可能会丢包,一旦丢包,TCP全部都得重传,要避免这种情况,要严格按照MSS传输。

IP协议根据8位协议类型进行交付。
IP协议并不提供可靠传输,如果丢包,IP协议并不能通知传输层是否丢包以及丢包的原因。

网段划分

IP地址分为两个部分,网络号和主机号。

  • 网络号:保证相互连接的两个网段具有不同的标识。
  • 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号。
  • 不同的子网其实就是把网络号相同的主机放到一起。
  • DHCP技术能自动给子网内新增主机节点分配IP地址,避免了手动管理IP的不便。

子网内主机号为1的是路由器。

IP地址划分

分类划分法
在这里插入图片描述

1、主机号全为1,就成了广播地址;主机号全为0,就成了网络号,代表这个局域网。
2、每个网络最多申请 2^(主机号位数) - 2 台主机,比如,B类网络最多申请 2^16 - 2台主机。

上面这种IP地址划分方法有很多局限性,所以有一个新的划分方案,称为CIDR。

1)引入一个额外的子网掩码来区分网络号和主机号
2)子网掩码也是一个32位的正整数,通常用一串“0”来结尾
3)将IP地址和子网掩码进行按位与操作,得到的结果就是网络号
4)网络号和主机号的划分与这个IP地址是A类,B类,还是C类无关

子网掩码划分法
举个栗子:
在这里插入图片描述

IP地址和子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。
127.*的IP地址用于本机环回测试,通常是127.0.0.1

CIDR在一定程度上缓解了IP地址不够用的问题,但仍然不够用,有三种解决方法:
1)动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中得到的IP地址不一定是相同的。
2)NAT技术。
3)IPv6:与IPv4互不相干,彼此不兼容,用16字节128位来表示一个IP地址。

私有IP地址和公网IP地址

区别:
私有IP地址在局域网内,有可能重复,但是公网IP地址全球任何主机都可以访问,是真正的互联网,不可以重复。

1、一个路由器可以配置两个IP地址,一个是WAN口IP,一个是LAN口IP(子网IP),WAN口用爱访问外网。
2、路由器LAN口连接的主机,都从属于当前路由器的子网中。
3、不同路由器,子网IP都是一样的(192.168.1.1),子网内的主机IP地址不能重复,但是子网之间的IP地址可以重复。
4、子网内的主机需要和外网进行通信时,路由器将IP首部中的IP地址进行替换(替换成WAN口IP),这样主机替换,最终数据包中的IP地址变成一个公网IP,这种技术称为NAT(Network Address Translation,网络地址转换)。

路由

IP数据包的传输过程:
当IP数据包到达路由器时,路由器会先查看目的IP,路由器决定这个数据包是直接发送给目标主机,还是需要发送给下一个路由器,依次反复,一直到达目标IP地址。(依靠每个节点内部维护的路由表来判断当前这个数据包该发送到哪里)
如果目的IP命中了路由表,就可以直接转发。路由表中Flags的U标志表示此条目有效,G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本地接口直接相连的网络,不必经过路由器转发。

ICMP协议

ICMP协议是一个网络层协议,定位网络不连通问题,主要功能包括:
1)确认IP包是否成功到达目标地址
2)通知在发送过程中IP包被丢弃的原因
3)ICMP也是基于IP协议工作的,但它并不是传输层的功能
4)ICMP只能搭配IPv4使用,IPv6需要使用ICMPv6

举个栗子:
主机A给主机B发送数据,经过路由器1和路由器2,路由器2为了知道主机B的MAC地址发送了一个ARP包给主机B,但是主机B电源关闭了,路由器2一直给主机B发送ARP请求包,多次发送后,由于始终无法到达主机B,路由器2返回一个ICMP Destination Unreachalbe的包给主机A,并且将报文丢弃。

ICMP的报文格式
在这里插入图片描述
ICMP大概分为两类报文:

  • 通知出错原因
  • 用于诊断查询
ping命令

例如:ping www.baidu.com
在这里插入图片描述

注意:
此处ping的是域名,不是URL,一个域名可以哦通过DNS解析成IP地址。
ping命令既可以验证网络的连通性,也会统计响应时间和TTL(IP包中的生存周期)。
ping命令会先发送一个ICMP Echo Request给对端,对端接收到后会返回一个ICMP Echo Reply,以次来确认主机A到主机B是否可达。

可能入的坑!!! telnet是23端口,ssh是22端口,那么ping是什么端口? 注意,ping命令基于ICMP,在网络层,而端口号是传输层的内容。

traceroute命令

也是基于ICMP协议实现,能够打印出可执行程序主机,一直到目标主机之前经历多少路由器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值