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