目录
ip协议针对传输层的UCP协议或者TCP协议,进行传输的时候,需不需要进行分片传输(拆包传输)
一、IP协议格式
16位总长度
在数据链路层传输的数据大小有一个限制:MTU
理论上单个ip数据包最大是65536字节,但是数据链路层给网络层提了要求说单个数据不能超过1500字节,这直接就导致超过1500字节的数据包就要进行拆包
ip协议针对传输层的UCP协议或者TCP协议,进行传输的时候,需不需要进行分片传输(拆包传输)
首先我们要知道: 要不要分片,取决于 数据的大小 + ip协议头部之后, 是否超过MTU
IP协议是不可靠的,一个分片在网络中丢失的话,这整个数据就相当于是丢掉了,
因为TCP为了保证可靠,他就在数据上保证了不会分片,这样就不用因一个分片丢掉,就重传所有数据(这是很痛苦的)
如何进行分片 和 组合分片
分片:
组合分片
8位生存时间:
8位协议、16位校验和、32位源端口、32位目的端口
8位协议:标识传输层使用什么协议的
目的: 在接收方解析IP协议的时候,就知道这个数据要交给传输层的哪一个协议
16位校验和:校验IP协议在传输过程当中是否失真
32位: 源IP地址
32位: 目的IP地址
二、IP地址管理
网络号和主机号
2.1 早期分配方式
A类: 0 7位网络号 24位主机号
B类 : 10 14位的网络号 16位的主机号
C类: 110 21位网络号 8位的主机号
特殊ip地址 :
127.0.0.1 :本地回环地址(自己),通常是用于测试本地网络协议栈的
0.0.0.0 : 代表所有网卡地址,服务端bind函数调用的时候,0.0.0.0,绑定当前机器的所有网卡
2.2 CIDR方式 :
1、引入了子网掩码,用子网掩码标识ip地址当中,网络号范围 和 主机号范围
2、子网掩码的本质:uint32_t的整数
要求:必须从最高的比特位到低位的某个比特位之前全为1,才是有效的子网掩码
网络号 = ip地址 & 子网掩码
最大的主机号 = ~(子网掩码)
例题 一:
ip地址为 42.192.83.143 子网掩码为255.255.255.0
问题1 : 请问该子网的的网络号是多少?该子网拥有多少个主机?
问题2 :如果要将该网络划分为4个子网, 请问每个子网拥有多少个主机号, 每个子网的网络号是多少?
例题 二:
私网ip
1、私网ip不具备访问互联网的效力(数据包当中的源ip或者目的ip为私网ip,则该条数据包不会在网络当中传输),不能访问互联网
2、私网ip在三个段
3、私网ip存在的意义
私网IP可以在不同的子网当中进行复用,可以使用私网ip构建私网网络,缓解IP地址枯竭的问题
三、路由选择
背景知识:
1、网络数据在网络当中传输的时候,传输的路径不是一开始就确定好的
2、一定是到达某个路由器(转发设备)之后,由路由器再选择一个合适的路径
3、下一个路由器的转发负载到底大不大
我们将每一次设备的选择路径,称之为路由选择
1、认识 WAN/LAN口
WAN口:连接上级路由器
LAN口:用来组建当中路由器的子网
2、路由查找规则
路由查找就是通过目的IP查找去往下一个主机的路由(确定方案),怎么选择有数据链路层实施(具体实施)
1、从一个点到另外一个点需要选择合适的路径,这叫路由(探路)
2、数据链路层负责相邻设备之间的传播,数据链路层负责由主机A到路由器A(赶路)
选择路的前提是,要知道都有哪些路
路由表保存了多条路由(多条路)
2.1 规则
例子:
IP数据包的传输过程也和问路一样.
当IP数据包,到达路由器时,路由器会先查看目的IP;
路由器将拿到的数据进行分用, 获取到了目的IP
路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器:依次反复,一直到达目标IP地址:
现在已经知道要走那条路由了,怎么走的工作就交给了数据链路层