目录
网络层:
网络层:负责地址管理与路由选择 --- IP协议,地址管理,路由选择
IP协议
数据格式 :
4位协议版本 :4-ipv4协议版本
4位首部长度 :以4字节为单位
8位服务类型 :3位优先权弃用,4位TOS,1位固定为0
16位数据报长度 :IP报文最大大小64k;udp报文中数据最大大小 < 64k-28
16位分片标识 :udp报文大小大于MTU但是小于64k-18,则会在网络层进行数据分片,将一个完整的大的报文分割成为多个小的数据分片,封装IP报头进行传输;TCP的传输不会再网络层进行数据分片,tcp再三次握手阶段就会双方协商mss(最大数据段大小)网络通信时,数据大小都不会大于mss,而mss就是根据mtu计算出的最合适的数据传输大小。16位分片标识:标识当前分片属于哪个报文
3位分片标志 :1位保留,1位禁止分片
13位分片偏移 :多个数据分片在对端会进行分片重组,而分片偏移就是用于标识当前分片再原始报文中的位置(相对于起始位置的偏移量)。13个比特位最大数字:8192,无法在64k报文中标识偏移量,因此分片偏移是以8字节为单位的。
8位TTL :报文生存周期 -- 当前默认是64/128,每经过一次路由转发就会-1,为0时,则将数据丢弃。
8位上层协议 :当前数据所使用协议 -- 用于数据分用时选择解析协议
16位校验和 :校验数据一致性
32位源端-对端IP地址 :描述通信两端主机
0~40的选项数据 :保存一些路由信息...-
地址管理
地址管理 :
IP地址的管理是按照网络进行管理的(大的网络也是由许多小网络组成)
IP地址组成:192.168.2.13
网络号 :是一个网络的标识,一个网络中分配的地址都拥有相同的标识只要保证每个网络的网络好不同,则每个网络分配的IP地址不会冲突
主机号 :在一个网络内主机的标识
网段的划分 :
A:高1位固定为0,7位网络号,24位主机号A类网络,网络号范围:0~127;每个网络拥有256256 256个主机
B:高2位固定10,14位网络号,16位主机号B类网络,网络号范围128.0~191.255
C:高3位固定110,21位网络好,8位主机号C类网络,网络号范围192.0.0~223.255.255;每个网络拥有256主机
当前划分-CIDR :在早期基础上,使用子网掩码进行更细致的网络划分
子网掩码 :无符号4字节整数,必须由连续的二进制1组成
1 .子网掩码取反可以得到一个网络最大的主机号最大主机号+1就是子网中的主机号个数
192.168.2 子网掩码:255.255.255.240,取反后前三个为0,最后一个00001111,为15,因此在该网络中能分配的IP范围是192.168.2.0~192.168.2.15
2 .子网掩码与IP地址相与,可以得到网络号。与相邻网络的子网掩码逐个相与判断当前目标地址属于哪个网络
举例 :有一个公司,申请了一个C类网络号1992.58.45.0,公司由四个部分,需要将这个C类网络平均划分为四个子网,请问如何划分,每个子网的子网掩码是多少,IP地址分配范围是多少,网络号是多少?解答:这是C类网络,拥有256个主机号,平均划分四个子网,则每个子网拥有64个主机号,0~63,子网掩码是63取反,得到子网掩码:255.255.255.192
即四个子网为:
192.58.45.0~192.58.45.63;255.255.255.192;192.58.45.0
192.58.45.64~192.58.45.127;255.255.255.192;192.58.45.64
192.58.45.128~192.58.45.191;255.255.255.192;192.58.45.238
192.58.45.192~192.58.45.255;255.255.255.192;192.58.45.192
特殊的IP地址 :
0.0.0.0 -- 可被识别为本机任意网卡IP地址 - 常用于服务器绑定监听地址
255.255.255.255 -- 全网广播地址
127.0.0.1 :每个主机的虚拟回环网卡的地址 -- 进行本地网络回环测试主机号全为0的IP地址:就是网络号 -- 不能分配给某个主机
主机号全为1的IP地址:UDP局域网广播地址 --- 不能分配给某个主机
一个网络内所能分配的主机号个数是总的个数-2
公网与私网 :外网与内网公网/外网:通常是我们所说的互联网
私网/内网:一个组织所建立的内部私有网络(无法直接与外部通信)
私网内部的主机,如果仅是私网内部通信,则没有什么特殊的
如果私网内部主机想要向外通信,最终实际上使用的是私网对外的这个公网网卡进行的。
私网内的多个主机对外通信,都是用的是同一私网对外的IP地址,因此组建私网可以节省大量的公网IP地址
主要因为不同的私网可以使用相同的私网IP地址而不冲突,因为私网内部主机对外通信时使用的是不同的对外公网IP
组建私网的IP地址与公网中的IP地址不能重复:组建私网的IP地址是有固定地址的,这些地址不会再公网中被使用:10.*.*.*:大型私网;172.16.*.*~172.31.*.*:中型私网;192.168.*.*:小型私网
路由选择
路由选择:在复杂的网络环境中为每一条数据选择合适的路径进行转发
路由表:每个路由器上都会拥有的一个信息
Destination :目标网络号
Gateway :网关地址
Genmask :子网掩码
Iface:连接这个网络的网卡
链路层
链路层:负责相邻设备之间的数据传输
以太网协议:ehternet
协议格式:
48位源端-对端mac地址 :识别指定相邻设备mac地址:uint8_t mac[6] -- 网卡的物理硬件地址--出厂时设定
16位协议类型:用于数据分用时上层解析协议的选择
32位数据帧尾:校验和进行差错校验
如何获取相邻指定设备的MAC地址 :ARP协议
ARP协议 :介于网络层和链路层之间的协议--通过IP地址获取MAC地址在局域网广播ARP请求(smac+sip+0+dip)(以太网帧中的对端MAC地址全为1--广播地址)
相邻设备收到ARP请求后,检测目的IP地址是否与自己符合,不符合则直接丢弃,符合则组织ARP应答,将自己MAC地址填充进行回复。
两端都会将MAC-IP的映射关系保存一段时间(20~30分钟)
MTU :链路层限制的最大传输单元 - 以太网默认1500字节MSS-最大数据段大小 = MTU - IP最小报头长度 - TCP最小报头长度
TCP:MTU=1500;则MSS=1460
UDP;MTU=1500;则MSS=1472
MTU对TCP传输的影响 :TCP传输三次握手阶段会协商MSS,双方取较小的乙方的mss作为最大数据段大小进行传输,每次从发送缓冲区中取出不大于mss大小的数据封装报头进行传输。 因此我们说,tcp在传输层会自定进行数据分段,因此不会再网络层进行数据分片
MTU对于UDP传输的影响 :UDP可没有MSS协商,只要数据段大小小于64k-28就可以传输,但是若大于MTU大小,则会在网络层会进行数据分片,而分片在对端会进行分片重组,一旦一个分区出问题整个报文都会被丢弃(udp不保证可靠传输,丢弃就没了),因此,分片越多,传输出问题的几率就越高。因此使用UDP传输,程序员最好在上层分包时就计算MSS大小分包,尽量减少分片概率。