今日 任务量不大 回顾一下计算机网络
这世界上计算机 千千万 计算机是通过何种方式才能精准的找到对方的呢 ?
大家应该都听过五层模型 但是可能都不是很清楚 下面一起回顾一下 网络通讯的五层模型。
应用层 --》传输层 --》 网络层 --》数据链路层 --》物理层
1.物理层
一个计算机要跟另外一个计算机进行通信 第一件要做的事就是要把两台计算机连接起来 这样我们才能传数据过去 比如光缆 电缆什么的 也就是说 物理层 通过0 1 这样的电信号通过物理层以高低电频的方式传输信息
2,数据链路层
物理层 只是传递了 了 0 1这样的电信号 可是这样的电信号 我随便输一个 010101010101010101100101010101010101011010 你看的懂吗 机器也不一定看得懂 因此 我们需要一章规范 来规定怎么传数据 数据格式啥的
1.以太网协议
以太网协议规定 一组电信号构成一个数据包 我们可以把这个数据包称为帧 每一个帧由标头和数据两部分组成
帧的大小一般为64 - 1518个字节 较大的数据 需要分成多个桢
帧一般分为 head 和 data
表头 至少应包含这个桢是由谁发送 发送给谁这些信息 所以标统头 主要是一些说明数据 例如发送者 接受者等信息
数据部分应该是这个桢里 发送者想给接受者的内容
桢的长度不固定 那么标头的长度会是固定的吗 想想 应该是的 假如不固定 计算机怎么知道标头是几个字节 数据是几个字节呢 所以标头部分的字节是固定的 并且固定为18个字节
把一台计算机的数据通过物理层和数据链路层发送给另外一台计算机 究竟是谁发给谁的 计算机和计算机之间如何区分 ? 唯一地址 Mac地址出现了
2.Mac地址
进入网络的每一台计算机 都会有网卡接口 每一个网卡都会有一个唯一的地址 这个地址就叫做Mac地址 计算机之间的数据传送 就是通过Mac地址 来唯一寻找 传送的 Mac地址由48个字节所构成 在网口生产时就被唯一标识了
3.广播与ARP协议
如图 假如计算机A知道了计算机B的mac地址 然后计算机A想要给计算机B传送数据 虽然计算机A知道了计算机B的MAC地址,可是他要怎么给他传送数据呢?计算机A
不仅连着计算机B 而且计算机A也连接着计算机C和计算机D 虽然计算机A知道计算机B的Mac地址 但是却不知道 B是在哪条边路上
为了解决这个问题 广播出现了
在同一个子网中 计算机A要向计算机B发送一个数据包 这个数据包会包含 接收者的mac地址 当发送时 计算机A是通过广播的方式发送的 这时同一个子网的计算机CD也会收到
这个数据包的 收到这个数据的计算机 会把数据包的mac地址取出来 与自身的mac地址对比 如果两者相同 则会接受这个数据包 否则就会丢弃这个数据包 。这种发送方式称之为广播
就和你和朋友约在广场 他找不到你 大喊一声 听到的人会自动匹配 是自己了就会理会 不是你的话 就当听不见
ARP协议
计算机A如何知道计算机B的MAC地址呢 这时候就得ERP协议这个家伙解决了 我们暂时搁置 看完ip后就
3.网络层
实际上我们所处的网络 是由无数个子网络构成的 广播的时候 也只有同一个子网里的计算机能够收到
假如没有子网这种东西 计算机A通过广播的方式发一个数据包给计算机B 其他所有的计算机都能收到这个数据包 然后进行对比再舍弃 世界上那么多计算机 每一台计算机都能收到其他计算机
因此产生了子网
那么问题来了 我们如区分 Mac地址是属于同一个子网的呢 假如是同一个子网 我们就用广播的形式把数据传送给对方 如果不是同一个子网的 我们就会把数据发给网关 让网关进行转发
为了解决这个问题 于是 就有了ip协议
1。IP协议
ip协议 他所定义的地址 我们称之为ip地址 ip协议有两种版本 一种是ipv4 一种是ipv6 目前用的最多的还是ipv4
这个i地址由 32位的二进制 数组成 我们一般把它分成4段的十进制表示 地址范围为 0.0.0.0 ~ 255.255.255.255
每一台想要联网的计算机都会有一个ip地址 这个ip地址分为两部分 前面一部分代表网络部分 后面一部分代表主机部分 并且网络部分和主机部分所占用的二级制位数是不固定的
假如两台计算机 的网络部分 是一模一样的 我们就说这两台计算机是属于同一个子网中 。例如 192.168.43.1 和 192.168.43.2, 假如这两个 IP 地址的网络部分为 24 位,主机部分为 8 位。那么他们的网络部分都为 192.168.43,所以他们处于同一个子网中。
可是问题来了 我们怎么知道 网络部分占几位 主机部分又占几位呢 也就是说 单单从 两台计算机的ip地址 我们是无法判断他们是否处在同一个子网中的
这就引申出了另外一个关键词 子网掩码 子网掩码和ip地址 一样也是32位二进制数 不过他的网络部分 规定全部为1 主机部分 规定全部为0 也就是说 假如上面那两个ip地址 的网络部分为24位 主机部分 为8位的话 那他们的子网掩码为
11111111.11111111.11111111.00000000,即255.255.255.0。
有了子网掩码 如何来判断ip地址是否处于同一个子网中呢 显然 知道了子网掩码 相当于我们知道了网络部分是几位 主机部分是几位 我们只需要把ip地址 与他的子网掩码做与(and)运算 然后把各自的结果进行比较就可以了 如果比较的结果相同 则代表的是同一子网 否则不是同一子网
2.ARP协议
有了两台计算机的ip地址和子网掩码 我们就可以判断 他们是否处在同一子网当中了
假设他们处在同一子网当中 计算机A要和计算机B发送数据时 我们通过ARP协议来得到计算机的Mac地址
ARP协议也是通过广播的形式 给同一个子网 中的每个电脑发送一个数据包(当然 这个数据包会包含接收方的ip地址)对方收到这个数据之后 会取出ip地址与自身的对比 如果相同 则会把自己的Mac地址回复给对方 否则就丢弃这个数据包 这样计算机A就知道计算机B的Mac地址了
可能有人会问 知道了Mac地址后 发送数据是通过广播的形式发送 询问对方的mac地址也是通过广播的形式来发送 那其他计算机怎么知道你是要传输数据还是询问Mac地址呢 其实在询问Mac地址的数据包内 在对方的mAC地址这一栏 填的是一个特殊的mac地址 其他计算机看到这个特殊的mac地址后 就能知道广播想干嘛了‘
假如两台计算机的ip不是处于 同一个子网之中 这个时候 我们就会把数据包发送给网关 然后让网关让我们进行转发传送
3.DNS服务器
输入域名之后会被DNS服务器解析 返回对应的ip给我们
4.传输层’
通过物理层 数据链路层以及网络层的互相帮助 我们已经成功把数据从计算机A传到计算机B了 可是 计算机B里面有各式各样的应用程序 计算机是如何知道这个数据是发给那个应用程序的呢 这个时候 端口这个家伙就上场了 当计算机A传输给计算机B的时候 还得指定一个端口 以供特定的应用程序来接受处理 也就是说 传输层的功能就是建立端口到端口的通信 相比网络层的功能是建立主机到主机的通信
也就是说 有了ip和端口 我们才能准确通信 我们输入的ip并没有指定端口 其实 有一些传输协议 已经设定了 一些默认端口了 例如http默认是80 这些端口信息会包含在数据包里面的
传输层最常见了两大协议是TCP协议和UDP协议 TCO提供可靠地传输 而UDP不可靠
5.应用层
应用层是最接触用户的一层了 我们虽然收到了传输层收到的数据 可是这些数据五花八门 因此我们需要指定这些数据的格式规则 收到后才能渲染解读 例如我们最常见的Http数据包里 就会指定数据包是什么格式的文件了