Linux-网络层IP协议、链路层以太网协议解析

目录

网络层:

网络层:负责地址管理与路由选择 --- 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大小分包,尽量减少分片概率。

相关推荐
QMCY_jason40 分钟前
Ubuntu 安装RUST
linux·ubuntu·rust
慕雪华年43 分钟前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
苦逼IT运维1 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
前端张三1 小时前
Mac 电脑pink 后端ip地址进行本地联调
服务器·tcp/ip·macos
仍有未知等待探索1 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
卑微求AC1 小时前
(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)
linux·c语言·开发语言·嵌入式·c语言贪吃蛇
Hugo_McQueen2 小时前
pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)
linux·服务器·网络安全
XY.散人2 小时前
初识Linux · 文件(1)
linux·运维·服务器
秋夫人3 小时前
http cache-control
网络·网络协议·http