计算机网络--网络层/链路层

网络层:负责地址管理和路由选择;
ip协议格式:
在这里插入图片描述
地址管理
  IP地址:ipv4/ipv6
  ipv4-uint32_t ---- 总共不到43e个IP地址,用于在网络中表示唯一主机
  我们在上网的时候,应该如何分配IP地址:手动分配/计算机进行分配
  IP地址分配的如何做到,所有的主机都不会分配冲突?----划分网络进行分配
划分网络:每个小网络给自己网络中的主机分配固定的某些IP地址,只要保证每个网络之间固定分配的IP不冲突
IP地址组成: 网络号 + 主机号
网络号:是一个网络的标识,这个网络中所分配的IP地址都会带有这个网络的标识,这样的话每个网络的网络号保证不同,就可以保证他们分配的IP地址不同
主机号:一个主机在一个网络中的标识

  • A类 0.0.0.0 到127.255.255.255    用于组建大型网络 高1位固定为0,7位网络号,24位主机号
  • B类 128.0.0.0到191.255.255.255  
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255

早期的这种划分方法,造成大量的IP地址浪费(大量的公司申请都是B类网络)----划分的不够精细

当前解决方案:CIDR方案 ---- 如何将网络划分的更加精细? -----使用子网掩码划分网络
 子网掩码uint32_t类型,这个数字由连续的二进制1组成----255.255.255.0
  子网掩码与IP地址取反
  子网掩码取反:得到这个网络中的主机号范围 255.255.255.0 从这个网络中的主机号范围:0~255
eg:
有一个公司,公司申请了一个C类网络:192.128.2.0/24,公司中有4个部门,希望从这个网络中平均划分出4个子网,请问每个子网的网络号是多少,子网掩码是多少,ip地址范围是多少?
 1.一个C类网络中,每个网络可以有256个主机,平均划分为4个子网,每个子网中有64个主机号,主机号范围0~63
 2.最大主机号取反就可以得到子网掩码:0.0.0.63-> 255.255.255.192
 3.每个子网64个主机号,逐个加上
 ①.192.128.2.0~192.128.2.63 网络号:192.128.2.0;
 ②.192.128.2.64~192.128.2.127 网络号:192.128.2.64;
 ③.192.128.2.128~192.128.2.191 网络号:192.128.2.128;
 ④.192.128.2.192~192.128.2.256 网络号:192.128.2.192;
划分五个子网:256/5 = 51.2 但是对51取反的话,子网掩码的1就不连续了,所以一个网络中可以有31个主机号

特殊的IP地址:

0.0.0.0 可以识别当前主机上的任意网卡地址,常用于服务端的监听地址(表示绑定监听本机上的所有地址)
255.255.255.255 全网广播地址(任意一个主机收到这个地址的数据,都会认为发送给自己的----适配所有IP地址,常用于DHCP请求)
127.0.0.1 本地虚拟回环网卡(常用于本地的网络通信测试)
主机号全为0:实际就是网络号,是网络的表示,因此为0的主机号是不能分配给网络中的主机的
主机号全为1:实际是UDP局域网广播地址( 适配于当前网络中的所有主机)

公网/外网/私网/内网:

公网/外网:我们常说的互联网
私网/内网:一个私有网络,仅限于内部通信
IP地址不够用----1.DHCP动态地址分配 / 2.NAT网络地址转换(主要用于组建私网,私网中的主机要么只能内部通信,要么就使用统一一个对外的IP地址上网)
用于组建私网的网络号:10.***.***.***, 172.16.***.*** ~ 172.32.***.***, 192.168.***.***

NAT:网络地址转换服务,将源端私网地址转换为对外的地址
路由选择:路由器为每一个流经的数据根据目的IP地址进行路径选择
在这里插入图片描述
如果PC0与PC3不能进行数据传输,那么如何在QQ上进行通信呢?
在这里插入图片描述
互联网中路由器上记录的路由表(包含的不仅仅是与自己相连的网络的路由信息,与自己不想连的也会记录----路由器会广播自己的路由表多少层网络)路由表生成算法有很多种

链路层就是负责每一个相邻节点直接的数据传输,相邻设备之间也需要描述识别(因为一个设备可能有多个相邻设备),链路层相邻设备之间的识别是通过MAC地址实现的

mac地址:网卡的硬件地址 uint8_t mac[6]

在这里插入图片描述
48位对端mac地址/48位源端mac地址:描述识别相邻的设备—描述了相邻设备之间的数据传输
16位上层协议类型:网络层的协议类型,进行数据分用时选择上层的解析协议
32位CRC校验和:数据帧尾,包含校验和

如何获取对端的mac地址?
  一个主机,第一次通过网线连接到路由器上,然后发送dhcp请求,路由器收到之后就会进行响应,给主机分配IP地址
arp协议:是一个介于网络层与链路层之间的协议----通过IP地址获取mac地址
 封装arp请求,然后将arp请求广播到整个局域网中,(以太网头中设置的对端mac地址,arp请求中描述自己的mac地址和ip地址,以及对端ip地址, 对端的mac地址空白)相邻设备收到这个arp请求后,检测目的ip是否与自己相符,若相符则组织arp响应,填充自己的mac地址回复出去,若不符合直接丢弃

arp局域网欺骗攻击:恶意主机收到arp广播请求,伪装自己,告诉主机自己就是目标,将自己的mac地址发送过去

MTU:最大传输单元----链路层限制数据帧大小(根据组网方式不同,默认数值也不同,以太网中默认1500字节)

mtu对上层协议应用的影响:
 tcp协议:tcp在传输层,三次握手的时候,进行MSS-最大数据端大小协商,告诉对方自己的mss是多少,然后双方取较小的一方作为最大传输数据段大小,每次从发送缓冲区中取出不大于mss大小数据进行传输-----因此通常也说tcp在传输层会自动进行数据分段

MSS = MTU - 最小IP报头长度 - 最小TCP报头长度
udp协议:因为udp不考虑mss(对于udp不存在mss的概念),只要数据段大小小于64K-28
就可以进行传输,但是这个数据大小若是大于mtu则会在网络层进行数据分片,udp不保证数据可靠传输,一个udp报文若在网络层被分片,则传输过程中,一个分片出问题,整个udp报文都会被丢弃;意味着udp传输过程中,分片越多,在传输问题的几率就越大。
解决方案:程序员在应用层使用udp协议的时候最好考虑mss的问题,将udp数据段按照计算的mss进行分包处理

其他典型协议与技术: DNS / ICMP / NAT / NAPT / 代理

DNS:域名系统----用于存储IP地址与域名的映射关系,提供域名解析,通过域名获取服务器IP地址的服务
 域名:服务器地址的别名----便于记忆,但是终归通过域名访问服务器的时候还是进行解析最终通过IP地址访问服务器

域名服务器的划分:根据域名服务器->顶级域名服务器->二级域名服务器->三级域名服务器

域名的划分:根域名服务器(13组)->顶级域名(.com / .org / .cn / .jp)->二级域名(.baidu.com) ->(.zhidao.baidu.com)

域名解析流程:www.zhidao.baidu.com
在这里插入图片描述
浏览器中输入url回车后都发送了什么?
1.域名解析
2.根据http协议格式组织http请求数据
3.搭建tcp服务端与服务器建立连接,发送数据请求
4.等待响应,得到后进行解析渲染

ICMP协议:网络层协议----用于进行网络探测
 ping----ssh协议使用22号端口 / telnet协议使用23号端口,ping使用多少端口呢?
  ping工具通过ICMP协议实现,进行网络探测,而网络层的协议不涉及端口(端口是传输层的信息)
NAT / NAPT服务: 网络地址转换服务
在这里插入图片描述
主要用于组建私网,对外统一地址,防止与外部地址冲突
NAT服务,通常部署在网关设备上,工作在网络层(进行IP报头中源端地址替换),通过网关设备进行数据转发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值