五层网络模型整理
仅供参考
五层模型(自上而下,底层->顶层)
-
实体层(物理层)
实体层的作用就是把电脑连接起来,可用光缆、电缆、双绞线、无线电波等方式
就是传送0和1的信号
-
链接层
也称链路层,作用是解读0和1
以太网协议
早期,每家公司都有自己的电信号分组方式,但是后来,一种叫做“以太网(Ethernet)”的协议逐渐占据了主导地位。
“以太网”协议规定:一组电信号构成一个数据包,称之为“帧”(Frame)。一帧也就是个数据包分为两个部分:首部(Head)和数据(Data)。
首部:包含该帧的一些说明(如:发送者信息、接受者信息、其他信息……),长度固定为18字节
数据:该帧的具体内容,长度最短46字节,最长1500字节。因此,一帧最短为64字节,最长1518字节
-
MAC地址
上文中,以太网数据包的“首部”,包含发送者和接受者的信息,那么发送者和接受者是如何标识的呢?
以太网协议规定:连入网络的设备,都必须有“网卡”接口,数据包必须从一块网卡传送到另一块网卡,网卡的地址,就是数据包的发送地址和接受地址。这就是MAC地址。
每张网卡出厂时,都有一个全世界独一无二的MAC地址(长度:48个二进制位,通常用12个十六进制表示),有了独一无二的MAC地址,就能定位网卡和数据包的路径了。
-
广播
即使有了MAC地址,但是系统也不能准确的把帧(以太网数据包)直接发送到接收方,所以以太网协议用了一种“广播”方式:当要发送数据包时,向本网络内的所有计算机发送数据包,再由计算机自己判断自己是否是接收方(获取以太网数据包“首部”,找到接收方的MAC地址,与本身比较),是就收,不是就丢掉。
-
-
网络层
-
网络层的由来
上文中的“以太网”协议,采用了“广播”方式发送数据包是可行的。但是这样做的缺点很明显:网络内的所有计算机,人手一包,不仅效率低,而且局限在发送者所在的子网络。不同子网络的计算机是不能“广播”的。(互联网中的网络称为“子网络”,无数个“子网络”共同组成一个巨型网络)
那么我们如何发送数据包到身处不同子网络的计算机?
“路由”可以实现(向不同子网络发送数据包),本文不涉及。
“网络层”诞生了,作用是引入一套新的地址,使我们能够区分计算机是否属于同一“子网络”,这套地址被称为“网络地址”,简称“网址”。
网络层诞生后,每台计算机就有了两种地址:MAC地址(绑定在网卡),另一种是“网址”(由管理员分配)。两者之间没有任何联系。
网络地址负责确定计算机所在的子网路,MAC地址则将数据包“广播”发送到该子网络的目标网卡,因此,逻辑上,发送数据时先确定网络地址,再处理MAC地址
-
IP协议
上文提到的“网络地址”(简称网址)是谁规定的呢?答案是“IP协议”,被它定义的地址则被称为“IP地址”。目前,被广泛采用的是IP协议第四版(IPV4),此版本规定,网络地址由32个二进制组成。(例:10101100.00010000.11111110.00000001,但习惯的,我们会把它转成十进制:172.16.254.1)
互联网上的每一台计算机,都会分配到一个IP地址。该地址分成两部分:前一部分代表网络,后一部分代表主机。(例:172.16.254.1 ,假设代表网络的是前24位,那么网络就是前三个数:172.16.254,而代表主机就是最后一个数:1)。对于处于一个子网络的计算机,IP地址的网络部分必然是相同的,即IP地址的前三个数。(如:172.16.254.1 和 172.16.254.2 是属于同一个子网络内的计算机)
但是网络部分的长度不是固定的,我们不知道它的网络部分到底是前24位,前16位,还是前28位。那么如何从IP地址判断出两台计算机是否属于同一个子网络?
这时候就要用到另一个参数“子网掩码”了,“子网掩码”就是表示所在的子网络特征的一个参数,在形式上等同于IP地址,网络部分全部为1,主机部分全部为0。(例:如果知道了子网的网络部分是前24位,那么主机就是后8位,而子网掩码就是:11111111.11111111.11111111.00000000,十进制:255.255.255.0),知道了两个计算机的子网掩码就知道了网络部分的长度,就可以对比两个IP地址是否处于同一子网络中。
小总结:假设我们要发送数据包,此时我们有自己的和接收方的“IP地址、子网掩码、MAC地址”,IP地址和子网掩码确定自己和对方是否在同一子网络,如果在同一子网络,就通过ARP协议(后面有讲解),获取到同一个子网络的主机MAC地址。然后广播发送数据包;如果不在同一子网络,只能去两个子网络连接处的“网关”,让网关处理
-
IP数据包
根据IP协议发送的数据包就称为IP数据包,具体地说,“IP数据包”也和“以太网数据包”一样分为两部分,首部和数据。“IP数据包“直接放到”以太网数据包“的”数据“部分(体现了互联网分层结构的好处:上层的变动完全不涉及下层的结构)
-
ARP协议
当两台计算机处于同一子网络中时,我们可以用ARP协议,取得对方的MAC地址,ARP协议也是发出一个数据包(包含在以太网数据包之中)。
ARP数据包:包含它要查询的主机的IP地址,在对方的MAC地址一栏则填“FF:FF:FF:FF:FF:FF”,表示这是“广播地址”,他所在子网络的每一台主机,都会受到这一数据栏,从中取出接收方IP地址,与自身IP地址进行比较,如果两者相同,则发送方和接收方都告知对方自己的MAC地址。
简而言之,ARP协议就是用来得到一个子网络内的主机的MAC地址
-
-
传输层
-
传输层的由来
有了IP地址和MAC地址后,我们可在互联网上的任意两台计算机建立通信。但是有时我们许多程序都要用到网络。如何判断数据包是哪个程序的数据包?所以我们还需要一个参数来判断一个数据包是属于哪个程序的。
这个参数叫做“端口”,它其实是每一个使用网卡的程序的编号。每个数据包都发送到主机的特定端口,所以不同的程序能提取到自己需要的数据
端口(Port):065535之间的整数,正好16个二进制位,01023的端口被系统占用,用户只能选择大于1023的端口。程序只要使用到网卡上网,该程序会随机选用一个端口,然后与服务器的响应端口联系
传输层的功能就是建立端口与端口之间的通信,只要确定主机和端口,我们就能实现程序之间的交流
-
UDP协议
前面说到端口,现在需要把端口加入到“以太网数据包”的“数据”中。这要新的协议,格式就是在数据前面加上端口号。
UDP数据包也是由首部,数据两部分组成。
首部:定义了发出端口和接收端口
数据:具体内容
UDP数据包很简单,标头部分共8个字节,总程度不超过65535字节,正好放进一个IP数据包(所以以太网数据包变成了这样:以太网数据包>IP数据包>UDP数据包)
-
TCP协议
UDP协议有个问题:可靠性差,一旦数据发出,无法知道对方是否收到,没法确认。
为了解决此问题,TCP诞生了,这个协议非常复杂,但几乎可以认为,TCP就是有确认机制的UDP协议。每个数据包都要求确认,这样也知道要不要重复发这个数据包。TCP协议能确保数据不会遗失。
TCP协议的缺点:复杂、实现困难、资源消耗多
TCP数据包和UDP数据包一样,都内嵌在IP数据包的“数据部分”。TCP数据包没有长度限制,理论上可以无限长,但为了保证网络效率,通常TCP数据包的长度不会超过IP数据包的长度,以确定单个TCP数据包不必再被分割。
(所以以太网数据包变成了这样:以太网数据包>IP数据包>UDP数据包,TCP数据包)
-
-
应用层