Linux网络(网络层,数据链路层,物理层)

文章目录

        • 网络层:负责地址管理与路由选择
          • 路由选择:在复杂的网路传输中对数据的传输选择一条合适路径
          • 地址管理
          • 一个路由器组建局域网的时候,网段并不能随意给
          • 特殊的IP地址:192.168.122.132 255.255.255.0
          • IP协议
        • 链路层:负责相邻设备节点之间的数据帧传输;eth-以太网协议;交换机
          • MTU:最大传输单元
        • 其它典型协议与技术:DNS/ICMP/NAT

网络层:负责地址管理与路由选择

路由选择:在复杂的网路传输中对数据的传输选择一条合适路径

1、在复杂的网络中,两台主机进行通信,数据需要经过多个网络中的数据节点进行传输;而在整个复杂的网络中如何选择一条最佳路径;这就是网络层的功能
Linux网络(网络层,数据链路层,物理层)_第1张图片
Linux网络(网络层,数据链路层,物理层)_第2张图片

地址管理

IP地址的组成: 网络号+主机号
IP地址不能随意分配,因为随意分配就有很大概率造成IP地址冲突(数据无法发送),导致网络瘫痪;规范网络的分配

解决方法: 将IP地址的分配规范起来

每个路由器都能组建一个局域网,这个局域网就应该具备自己的网络标识(网络号),这个路由器向自己组建的局域网中的主机分配的IP地址都应该包含这个网络标识;
同时为了在局域网中,能够唯一表示一个主机,IP地址中还应该包含主机标识(主机号

网段的划分:

早期将IP地址划分成了五类:

A(0~ 127)/B(128~ 191)/C(192~ 223)/D(224~ 239)/E(240~ 247)

现在的划分方案: CIDR(子网掩码):由一串连续的二进制1组成的数字
子网掩码的作用:

==1、子网掩码与IP地址相与得到网络号:==192.168.122.132 &255.255.255.0
2、子网掩码取反,可以得到局域网中主机号个数:~255.255.255.0

有一个网络ip:192.168.122.132,netmask:255.255.255.0;
现在要将这个网路平均划分成四个子网,请问每个子网的ip地址范围以及子网掩码

通过ip地址和子网掩码得到原网络的主机号个数:256
通过ip地址和子网掩码得到原网络的网络号:192.168.122.0

平均划分四个子网,则每个子网主机号个数64个(0~63) 子网掩码=~63

~0011  1111 = 11111111  11111111  11111111  11000000 = 
255.255.255.192      192.168.122.0~192.168.122.63     255.255.255.192      192.168.122.0
00000000~00111111 & 11000000
192.168.122.64~192.168.122.127

Linux网络(网络层,数据链路层,物理层)_第3张图片

一个路由器组建局域网的时候,网段并不能随意给

1、IP地址的分配规范起来后,只需要对网络号的取值进行规范就可以了: 相邻的网络不能具备相同网络号
2、一个路由器上相连的所有网络号不能相同—因为这些网络都数据相邻网络,数据到了路由器上之后,一旦网络号冲突就会导致路由器不知道数据该给谁
3、RFC1918规定,能够用于组建私网的网段,只有以下几种:

10...* 172.16..~172.31.. 192.168..

特殊的IP地址:192.168.122.132 255.255.255.0

1、主机号全为1的IP地址 局域网udp广播地址:192.168.122.255
2、主机号全为0的IP地址 网络号-标识一个网络:192.168.122.0
每一个局域网中,这两个主机号是不能分配给主机的
意味着主机号虽然有256个,但是能够分配给主机的只有254个
3、172.0.0.1 本地回环网卡地址—虚拟网卡地址–用于本机内的网络回环测试

IP协议

4位版本:IPV4/IPV6
4位首部长度:ip头有多长
8位服务类型:4位TOS字段对应不同应用场景
16位总长度:数据报总长度—64K
链路层:MTU-最大传输单元 1500 -20 -20 = 1460
一个报文最大大小64K包含ip头部和udp头部 udp数据大小不能超过64K -20 -8
udp数据大小 mtu MSS—最大报文段大小—实际的最大数据大小
TCP在三次握手的时候,会进行mss协商,自动进行数据分段,因此不会在网络层进行数据分片
16位标识:标识这个数据分片属于哪一个完整udp数据包
3位标志:1位是否禁止分片,1位结束标志
13位片偏移:以8字节为单位,相对于完整udp数据报起始位置的偏移量(分片大小是8的倍数)
8位生存时间TTL:报文生存周期,存储所能经过的路由条数
8位协议:上层传输使用的协议—数据分用时决定数据有哪一个上层协议解析
16位首部校验和:校验数据一致性
32位地址:源IP地址/目的IP地址
40字节的选项数据

链路层:负责相邻设备节点之间的数据帧传输;eth-以太网协议;交换机

MAC地址: 物理网卡设备的硬件地址 uint8_t mac[6] 负责定位相邻的设备
ether协议字段: 6字节的源mac地址/目的mac地址,2字节上层协议类型,4字节数据帧尾

在发送数据时必须获取相邻设备的mac地址:

arp协议: 介于网络层与链路层之间的协议,通过IP地址获取相邻设备的mac地址;建立IP地址与MAC地址的映射关系

广播arp请求,相邻设备收到arp请求后,判断目的IP地址是否是自己,若不是则丢弃;否则组织arp响应包带有自己mac地址返回
局域网arp攻击

获取到mac地址后,将ip地址与mac地址的映射关系缓存一段时间(很短)

MTU:最大传输单元

Linux网络(网络层,数据链路层,物理层)_第4张图片
mtu对tcp数据的影响:

tcp通信双方在三次握手建立链接的时候,会通过本机mtu计算mss大小并进行双方协议;取较小的一方mss作为最大数据段大小;
tcp在传输数据的时候,每次从缓冲区中取出的数据大小将不大于mss大小
send可以给很大的数据,但是实际传输时候,会分段为合适大小;
因此说tco在传输层会自动进行数据分段

mtu对udp数据的影响

因为udp通信双方不会协商数据段大小,并且字段中规定数据不大于64K-8即可;
意味着udp数据大小:maa udp传输过程中,任意一个分片出问题,整个数据报都会被丢弃;分片越多,危险越高
因此udp数据包在应用层都需要由用户根据mss分割成合适大小

其它典型协议与技术:DNS/ICMP/NAT

DNS: domain name system—通过域名获取服务器IP地址
域名服务器的发展背景:
Linux网络(网络层,数据链路层,物理层)_第5张图片
域名服务器: 根域名服务器—>顶级域名服务器—>二级域名服务器
域名的划分:

顶级域名:(.com/.org/.gov/.cn/.jp/.us)
二级域名:.baidu.com / .qq.com
三级域名:.image.baidu.com

域名的解析流程: http://image.baidu.com/search/index
Linux网络(网络层,数据链路层,物理层)_第6张图片

当浏览器敲入一个url按下回车都发生了哪些事情?

  1. 域名解析,获取到服务器IP地址
  2. 组织http请求数据(http协议格式)
  3. 搭建tcp客户端,发送http数据(http时应用层协议,传输层使用tcp协议实现)(为什么选择tcp)
  4. 可以吹一吹网络层/链路层

Linux网络(网络层,数据链路层,物理层)_第7张图片

ICMP协议: 主要用户网络探测
发送icmp请求应答报文
Linux网络(网络层,数据链路层,物理层)_第8张图片
ssh使用22号端口,telnet使用23号端口,ping使用多少?
ping工具使用icmp协议实现,而icmp协议是网络层协议,不涉及到端口

NAT: 网络地址转换技术
对数据中的源端地址进行修改,修改为自己主机的地址信息;
目的是为了保证数据发送出去后响应能够原路返回
通常部署在网关设备上——工作在网络层

代理服务:
Linux网络(网络层,数据链路层,物理层)_第9张图片
代理程序工作在应用层,进行数据转发,可以部署在任意设备上
nat在网络层进行地址替换,目标地址永远不变
代理服务,主机请求的地址就是代理服务器地址,而不是直接目标

你可能感兴趣的:(Linux网络)