网络基础
博客链接:https://www.blog.23day.site/articles/64
一、操作系统
1.概述
操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
2.常见系统
Windows、macOS、Linux、iOS、Android、华为鸿蒙系统
二、通信基础
1.网络协议
- internet本质就是一系列的网络协议,这些协议是为了消除各种机器之前的语言差异(就像是中国规定标准语言是普通话一样)。
- 网络协议的功能:定义计算机如何接入internet,以及其计算机通信标准
2.mac地址
每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)
ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址
3.ARP协议
ARP(Address Resolution Protocal),即地址解析协议。用于将IP地址解析为以太网的MAC地址的协议。
作为一台设备,怎么知道另一台设备的mac地址,这就是APR协议干的事
-
A查本地ARP表发现B的IP和MAC映射关系不存在
-
A通过ARP广播的形式向局域网发出消息,询问某IP对应的MAC地址是多少。比如A此时知道B的IP,但并不知道B的MAC地址是多少,就会尝试在局域网内发起ARP广播,询问局域网下所有机器,哪个机器的IP与B的IP一致。
-
B收到这个ARP消息,发现A要问的IP与自己的IP一致,就会把自己的MAC地址作为应答返回给A。
-
此时A就知道了B的MAC地址,顺便把消息记录到本地ARP表里,下次直接用表里的关系就行。
4.ip地址
iIP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异
ipv4和ipv6:简单来说,就是ipv4已经不够用了,出现了ipv6这种东西,IPv6具有比IPv4大得多的地址空间。这是因为IPv6使用了128位的地址,而IPv4只用32位。
ip地址分为网络号和主机号两部分
5.子网掩码
子网掩码,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址192.166.0.105,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
有了子网掩码,我们就可以判断两台设备是否是处于同一子网络了
6.osi协议和tcp/ip协议
- 网络协议按照功能不同分为osi七层或tcp/ip五层协议
- 其中osi是概念协议,我们平常使用的最多的还是tcp/ip协议
- 越网上越靠近用户,我们越容易感知到。越往下越靠近硬件
先来看一下该协议是怎么传输信息的吧
三、数据封装
先来看一下各层的报头的构成,下面逐一讲解
1.应用层
应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
应用层功能:规定应用程序的数据格式。
2.传输层
网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,那么传输层就是帮助我们找到开启的应用程序,也就是端口号
传输层就是建立端口到端口的通信(0-65535,其中0-1023为系统占用端口)
tcp协议(常用):
可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
以太网头 | ip 头 | tcp报头 | 数据 |
---|---|---|---|
其中tcp报头是这样的(了解一下源端口号和目的端口号) | |||
udp协议: | |||
不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。 | |||
以太网头 | ip 头 | udp头 | 数据 |
– | – | – | – |
3.网络层
首先来看一下ip报头,大概了解一下源ip地址和目的ip地址就可以了,我们在下面数据解封的时候会讲
4.数据链路层
依旧是来看一下mac报头是啥样的,了解源mac地址和目的mac地址,知道该层添加了该报头即可,后面细讲
单纯的01串是没有意义的,必须规定电信号多少位一组,每组什么意思。早期,每个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet
ethernet规定
- 一组电信号构成一个数据包,叫做‘帧’
- 每一数据帧分成:报头head和数据data两部分
head | data |
---|
- head包含:(固定18个字节)
- 发送者/源地址,6个字节
- 接收者/目标地址,6个字节
- 数据类型,6个字节 - data包含:(最短46字节,最长1500字节)
- 数据包的具体内容
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
5.物理层
到了物理层,数据会被转为01比特流,然后通过网线传输
四、数据拆封
1.物理层
物理层就是基于电器特性发送01串传输信息。
假如我们有两台电脑,我们可以通过接网线的方式,使他们能够实现信息交互。
如果电脑再多一点,我们可以使用集线器来连接(如果接网线的话浪费巨大)。
这个时候,计算机之间的通信基本靠吼。
也就是说,如果A想给B发消息,首先A会把消息通过网线输入集线器端口上,集线器再把信息输入到中继电路,然后中继电路会把收到的消息广播到集线器所有的端口上。
简单来说,就是A发出的消息会无脑复制N份,发送给所有设备,所有设备收到消息后会把消息拆开看,通过比对数据报头里的mac地址,判断是否是发给自己的,如果是就查看,如果不是就丢掉
2.数据链路层
我们上面说到,集线器是通过广播的形式分发数据包,如果设备少一点的话还是可以的,但是如果设备过多,一台设备发消息,全世界的人都能收到,岂不是大灾难。
于是交换机(switch)登场了,他的基本构造和集线器几乎是相同的。
此时,A还是想给B发消息,A就会把数据发送给交换机
交换机通过目的地址的mac地址和自己内部维护的mac地址表比对,发现目标地址连接在了2号端口,于是数据就从2号端口成功输出,到达B
可是如果交换机发现自己的mac地址表里没有目的地址记录,则会通过集线器广播的方式,对所有的设备发送信息,B收到信息后发现mac地址是自己的,则会返回消息,此时交换机便知道了B在哪个端口,并维护mac地址表。
这里再扯一个细节问题,就是电信号,是会受噪声干扰,导致信号形变出错的。
但就算是错了,也还是会原封不动的广播出去,也就是接收方收到的是错误信息。那么接收方收到消息后需要校验
这就是报文末尾FCS的作用了
FCS里存放的是发送方通过循环冗余校验CRC计算得到的值,接收方用收到的数据算一次CRC,与FCS里的值进行对比。如果一致,那证明数据没问题。如果出错,则直接丢弃,数据包重新传输。
3.网络层
上面我们说到,交换机会记录一张mac地址表,但是全世界这么多设备,记住每一台设备mac地址或广播到每一台设备都是有点不现实的。
于是路由器出现了,他的作用是连接世界各地的局域网
此时,A还是想发消息给B。
首先A发出的消息会通过交换机到达路由器(后面我们会深究过程),路由器会通过路由表(类似于交换机维护的mac地址表)找到目的地所在的端口,然后就像交换机一样把他转发出去
路由器内会发生这样的事:
- 判断目的ip和源ip是否是同一个局域网
- 如果通过路由表没找到目的ip,就会发给默认网关,也就是问问其他路由器知不知道
五、交换机概述
1.交换机分类
按照协议层的不同,可以分为四层交换机
物理层是一层,数据链路层是二层,以此类推(本文中说的交换机仅指代以太网交换机)
2.内部构造
-
集线器
这里介绍一下PHY:
首先每个网口,都可能接着网线,而每根网线的传输的格式都是有可能不同的。而PHY的作用,就是把这些格式转化为一个通用的格式。举个例子,PHY就好比一个翻译器,有的人说英文,有的人说中文。PHY会把它统一转为普通话,给内部电路处理。内部电路处理完之后,再经过PHY模块,转为英语,或中文从对应网口里输出。 -
交换机
这里需要提到的是MAC模块。消息以电信号的形式从网口进入,到了PHY会被转成通用格式的电信号。而MAC模块的作用是把这个电信号转为数字信号,这样就能提取出MAC包头,并通过MAC数据帧末尾的FCS校验这个包,如果没问题,则把数据放到内存缓冲区里,否则直接丢弃。 -
路由器
硬件部分跟交换机很像,但是在处理mac地址方面有区别(具体区别下面再讲)。数据从A网口进入,此时数据还是网线上格式的电信号,会被PHY模块转为通用信号格式,再被MAC模块转为数字信号,通过FCS进行错误校验,同时校验MAC地址是否是自己,通过校验则进入内存缓冲区,否则丢弃。
再进入软件部分,由路由选择处理器,通过一定规则(软件逻辑),查询路由表判断转发目标和对应转发口,再经由硬件部分的交换结构转发出去。
3.区别
这里主要讲解路由器和交换机的区别
路由器和交换机不同点在于,路由器的每个网口下,都有一个MAC地址和IP地址,所以它能成为数据链路层的的发送方和接收方。
而交换机,是不具备mac地址的,而mac报头是需要填上目的mac地址的。因此交换机从来都不是数据的目的地,它只简单转发数据帧到目的地。
数据到了路由器后,路由器可以组装下一站的目的MAC地址是另一个路由,通过这一点,让数据在路由和路由之间传输。
六、DHCP
想实现网络通信,每台主机需具备四要素
- 本机的IP地址
- 子网掩码
- 网关的IP地址
- DNS的IP地址
获取这四要素有两种方式
- 静态获取:手动配置
- 动态获取:DHCP
DHCP:
首先构造一个数据包
以太网头 | ip头 | udp头 | dhcp数据包 |
---|
- 最前面的”以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
- 后面的”IP标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。
- 最后的”UDP标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。
数据包构造好了之后通过以太网以广播的形式发送,同一个子网络的每台设备都收到了这个包。每台设备都会查看这个包,并检查mac地址是否是自己的,但是又去mac地址填的是FF-FF-FF-FF-FF-FF,所以还需要查看ip地址。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,DHCP服务器知道“这个包是发给我的”,而其他设备就可以丢弃这个包。
接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个“DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。
新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数
七、DNS
1.概念
问:ip地址难不难记?
答:难记
问:如果用一串有意义的字母代替ip地址,愿不愿意?
答:愿意
将ip地址和url之间进行转换,就是DNS干的事
2、缓存
DNS缓存指DNS返回了正确的IP之后,系统就会将这个结果临时储存起来。并且它会为缓存设定一个失效时间 (例如N小时),在这N小时之内,当你再次访问这个网站时,系统就会直接从你电脑本地的DNS缓存中把结果交还给你,而不必再去询问DNS服务器,变相“加速”了网址的解析。
八、NAT
1. 定义
NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。
2.工作机制
如下图所示,以 10.0.0.10 的主机与 163.221.120.9 的主机进行通信为例。利用 NAT,途中的 NAT 路由器将发送源地址从 10.0.0.10 转换为全局的 IP 地址(202.244.174.37)再发送数据。反之,当响应数据从 163.221.120.9 发送过来时,目标地址(202.244.174.37)先被转换成私有 IP 地址 10.0.0.10 以后再被转发。
- 网络被分为私网和公网两个部分(私网ip就像你家门牌号(在百度上搜不出来具体信息),公网ip就像某个国家(在百度上能搜出来)),NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关
- 网络访问只能先由私网侧发起,公网无法主动访问私网主机
- NAT 路由器在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;
- NAT 路由器的存在对通信双方是保持透明的;
3.类型
- 静态NAT
内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器 - 动态NAT
在内部本地地址转换的时候,在地址池中选择一个空闲的地址,来进行转换。数据传输或者访问完成时就会放回地址池中,以供内部本地的其他主机使用。 - 端口复用NAPT
就是利用端口映射,来提高ip地址的利用效率
总结
提示:这里对文章进行总结: