通过学习:阮一峰(很全很详细)
互联网的核心是“一系列协议”,这些协议对电脑如何连接和组网,做出了详细的规定。只要把这些协议搞懂了,就很好理解互联网的原理了。
一、概述
1.1五层模型
用户接触的是最上面一层
实体层–>链路层–>网络层–>传输层–>应用层
越往下越靠近硬件,越往上越靠近用户
1.2层与协议
每一层都需要完成相应的功能,但是必须遵守某种规则,这个规则就称之为“协议(protocol)”
每一层都有许多协议,这些协议的总称“互联网协议”(Internet Protocol Suite)
接下来就介绍每一层的功能,主要就是介绍每一层的主要协议
二、实体层
首先将电脑连接起来,采用电缆、光缆、无线电波、双绞线
用物理手段将电脑连接起来,规定了网络的一些电气特性,作用是传送0或1的电信号
三、链路层
3.1单纯的0或1的电信号没有意义,必须规定解读方式:多少个电信号一组?每个信号位代表什么意义?
这就是链路层的功能,在“实体层”上规定了0和1分组方式
3.2“以太网协议”
开始每个公司都有自己的分组方式,逐渐一个“以太网”协议占据了主导地位。
“以太网协议”规定一组电信号组成一个数据包称之为“帧(Frame)”.每一个帧有两部分组成:头(Head)和数据(Data)
“标头”包含了一些信息 (发送者、接受者、数据类型等)
“数据”就是发送的内容
“标头”的长度默认是18字节。“数据”最短为46字节,最长1500字节,因此帧的最短为64字节,最长1518。如果发送的数据过长,就需要拆分成好几帧来发送
3.3MAC地址
上边提到“标头”中包含着发送者和接受者的信息,那么如何标识发送者和接受者的呢
“以太网协议”规定接入网络的所有设备必须就有“网卡”接口。数据包是从一个网卡接口发送至另一个网卡接口。网卡的地址就是发送和接收的地址,称之为MAC地址
每一个网卡都有世界上独一无二的MAC地址,长度是48个二进制,通常用12个十六进制表示
前六个是厂商编号,后六位是该厂商网卡的流水号
3.4广播
定义只是第一步,一个网卡是如何得知另一个网卡的MAC地址的呢
ARP协议可以解决这个问题,具体的后边在学习
但是知道了另一个网卡的MAC地址,如何准确的吧数据包送达呢
这里,“以太网”采用了的最原始的方法,向本网络下的所有计算机发送数据包,然后在判断是否是接收方
在上图中,计算机1要向计算机2发送数据,需要将数据包发送到计算机2/3/4/5,然后2/3/4/4在读取数据包中MAC地址和自身比较,如果相同,作进一步的处理;如果不同,就丢弃这个数据包;这就叫做“广播”
有了数据包的定义、网卡的MAC地址和广播的发送方式,“链路层”就可以在多个计算机之间发送数据包了
四:网络层
4.1网络层的由来
以太网协议,依靠MAC地址来传输数据。理论上,单单靠MAC地址,上海的网卡是能找得到洛杉矶的网卡(MAC地址唯一性)。
但是这样也有巨大的缺点,以太网依靠广播的方式发送数据包。所有成员人手一份包,效率太低,而且局限于一个子网络,也就是说两台计算机不在一个子网络,广播是过不去的,这样的设计也是合理的,想想一发送数据,互联网的人人手一包,会引发灾难的。
互联网是由无数个子网络组成的巨型网络,上海的计算机和洛杉矶的计算机不可能在同一个子网络。
因此,能不能区分是否在同一个子网络,如果同一个子网络,直接广播;如果不在同一个子网络,就得“路由”。Mac只与厂商有关,与网络无关。这就导致了网络层的出现,引进了新的地址,称之为网络地址
4.2IP协议
规定网络地址的协议叫做IP协议。网络地址叫做IP地址
现在广泛应用的是IP协议第四版,简称IPv4。
这个版本规定32个二进制组成,从0-255.255.255.255
每一台主机都会有一个IP地址,IP地址唯一,否则会发生IP地址冲突。,IP地址由两部分组成,前一部分代表网络,后一部分代表主机。
比如172.16.254.1,假设前24位代表网络,后8位则代表主机;两个出于同一子网络下的网络部分相同,比如172.16.254.3和172.16.254.7处于同一个子网下;
但是单单从IP地址看不出来,因为你不知道是前16位还是前24位甚至前28位代表网络部分;这个时候子网掩码就出来了
子网掩码和IP地址一样,网络部分全为1主机部分为零.比如172.16.254.1,假设前24位代表网络,后8位则代表主机;那么他的子网掩码就是255.255.255.0
只要知道了子网掩码就可以判断两个IP是否在同一个子网络,将两个IP地址和子网掩码进行and操作,是否相等。
IP地址的作用是:1.为每一个计算机安排一个地址 2.判断是否在同一个子网络下
4.3IP数据包
直接将IP数据包放进以太网数据包中,不需要增加新的栏位,这就是互联网分层的好处。
“IP数据包”包括标头和数据
标头部分包括版本、长度、IP地址,“数据”部分是IP数据包的具体内容,放进以太数据包中就变成了
IP数据包的标头长度20字节到60字节,整个数据包的长度是65535,因此“数据部分”最长65515字节;以太网数据包的“数据部分”最长为1500字节。因此如果IP数据包超过了1500字节,那么就要分割为几个以太网数据包,分开发送
4.4ARP协议
网络层,IP数据包放在以太网数据包中,因此我们必须需要知道两个地址,一是Mac地址一个是IP地址。通常,对方的IP地址是已知的,但是不知道Mac地址
所以,需要一种机制,能从IP地址得知Mac地址
这里分为两种情况
一:两个没有在同一个子网络下,只能是吧数据包发送到两个子网络相连的网关,需要网关去处理
二:在同一个子网络下,可以用ARP协议,得到Mac地址。ARP协议也是发送一个数据包,包含在以太网数据包,其中包含他要访问的IP地址,在对方的Mac地址这一栏,填的是FF.FF.FF.FF,表示这是一个“广播”地址。在该子网络中的每个主机都会收到这个数据包,从中取出IP地址与自己比较,如果相等,做出回复,告诉对方自己的Mac地址;如果不相等,丢弃这个包
五、传输层
有了Mac地址和IP地址之后,我们就可以实现在任一两个主机之间建立联系
但是,在同一个主机上,有很多进程在使用到网络,比如一边浏览网页,一边和朋友聊天,当接收到个数据包时需要判断是表示谁的内容
因此,我们还需要一个“参数”表示接收到的数据包供哪个进程使用,这个“参数”就是“端口”(port),其实就是每个进程使用网卡的编号。每个数据包发送到特定的端口,每个进程到特定的端口取数据包
端口号是0-65535,16个二进制,0-1023的端口被系统占用,因此用户只能选择大于1023的端口。
不管是聊天还是浏览网页,都会随机选择一个端口号和服务器相连
“传输层”的作用就是确定端口到端口,“网络层”确定的是主机到主机;只要确定了主机和端口就能实现程序之间的交流。因此Unix把主机+端口成为“套接字”(socket)。
有了它,就可以实现网络应用程序开发
5.2UDP协议
在数据包中加入端口信息,就需要新的协议,最简单的实现就是UDP协议,就是在数据前边加上端口号
标头中是发送端口和接收端口,数据部分就是具体的内容;然后把UDP数据包中放入IP数据包中
UDP数据包非常简单,”标头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
5.3TCP协议
UDP有一个缺陷就是发送出去不能确定是否接受到了
为了解决这一问题,TCP协议就出来了,可以近似认为他是有确认机制的UDP协议,每发送一个数据包,都需要一个确认;如果数据包丢失没有接收到确认那么就知道数据包丢失,需要重新发送
TCP数据包理论上无限长,但是为了保证网络的效率,一般不会超过IP数据包的长度,以确保单个TCP数据包不被分割
六、应用层
应用程序接受到了数据包,接下来就是解读。TCP协议传输的数据五花八门,比如Email、WWW、FTP,那么就需要不同协议来规定电子邮件、网页、FTP的格式,这些应用程序协议就构成了应用层。
至此,整个互联网的五层结构,自下而上全部讲完了。
下一篇主要回顾TCP协议
最新评论