问题:一台电脑是如何给另一台电脑发送消息的???它们之间的信息是如何传递的???
1.首先我们要知道五层模型(实体层、链接层、网络层、传输层、应用层)
电脑之间就是通过这五层模型逐层传输,每一层都完成一种功能
1.实体层就是光纤、电缆这些,实实在在我们看到的摸得着的东西,它的功能就是把电脑连接起来的物理手段,负责传输0和1的电信号这些
2.链接层它确定了0和1的分组方式,因为单纯的0和1没有任何的意义,必须规定解读方式:多少电信号算一组?
早期的时候每家公司都有自己的电信号分组方式,逐渐的出现了以太网协议,以太网规定,一组电信号构成一个数据包,叫做帧。每一帧分成
两个部分:标头(head)和数据(data)
标头:包含数据包的一些说明项,比如发送者、接收者、数据类型等等。标头的长度,固定位18个字节。数据的长度,最短位46字节,最长为1500字节,因此整个帧最短位64个字节,最长为1518字节,如果数据很长,就必须分割成多个帧进行发送
数据:则是数据包的具体内容
mac地址: 以太网规定,连入网络的所有设备,都必须具有网卡接口,数据包必须从一块网卡,传送到另一块网卡。网卡的地址,就是数据包发送地址和接受地址,这就叫mac地址,
每块网卡出厂的时候,都有一个独一无二的mac地址,长度是48个二进制位,通常用12个十六进制数表示。
前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号,有了mac地址,就可以定位网卡和数据的路径了
问题:一块网卡怎么知道另一块网卡的mac地址
首先:这个是ARP协议完成,这里不细说
其次:有了mac地址怎么才能把数据包准确的送到接受方,以太网采用一种很原始 的方式,它不是直接把数据发送到接收方,而是往本网络所有地址发送消息,让每台计算机自己判断,自己是否为接收方。
比如上图1号计算机向2号计算机发送一个数据包,同一个子网络的3、4、5号机都会收到这个数据包,它们会读取这个包的标头,找到接收方的mac地址,然后与自身的mac地址比较,如果相同就进一步处理,否则就丢弃这个包,这种发送方式就叫做广播
互联网是无数个子网络组成的巨型网络,很难想象1号计算机跟2号计算机在同一子网络下,几乎不可能。
问题:我们必须找到一种方法区分mac地址在不同的子网中
从而"网路层"诞生了,它的作用引进了一套新的地址,用来两台计算机是否属于同一个子网,这套地址就叫网络地址。
网络地址出现以后,每台计算机就有两个地址,首先用网络地址区分两台计算机是否位于同一子网,再用mac地址将数据包送到该子网的目标网卡。
规定网络地址的协议被成为ip协议,他所定义的地址叫IP地址,目前广泛采用第四版,简称ipv4
互联网的每一台计算机都会被分配一个ip地址,而该地址又分为两部分,前一部分代表网络部分,后一部分代表主机部分。比如192.168.182.1,这是一个32位的ip地址,假定他的网络部分为24(192.168.182),主机部分为8位(最后的1),处于同一个子网的网络部分必定是相同的,也就是说192.168.182.2和192.168.182.1是处于同一子网的
问题:单单从ip地址我们无法判断,网络部分,以192.168.182.1为例,我们无法判断前面24位,还是28位是网络地址
想要区分两台计算机是否在同一子网,还要借助子网掩码,所谓子网掩码,就是表示子网络特征的一个参数,形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。知道子网掩码,我们就能判断任意两个IP地址是否位于同一子网,方法是将IP地址和子网掩码进行AND计算(两个位数都为1,则为1,否则为0),然后比较结果是否相同,如果相同则是在同一子网,否则就不是。
IP协议发送的数据叫IP数据包,IP数据包可以直接放进以太网的数据包的数据中
IP数据包也分为两部分标头(长度为20到60字节)和数据,整个数据包的总长度最大为65,535字节,标头主要包括版本、长度、IP地址,数据部分则包括IP数据包的具体内容
前面说过以太网数据包最长1500字节,因此如果IP数据包超过了这个长度,他就需要分割为几个以太网数据包发送
ARP协议
因为IP数据包是放在以太网数据包里发送的,所以我们必须知道两个地址,一个mac地址,还有个IP地址,IP地址一般是已知的(后边会说到)
所以我们需要一种机制从而能从IP地址得到mac地址
这里又分为两种情况:
1.如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理;
2.如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。
总之,有了ARP协议之后,我们就可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。