- 互联网的实现,分为不同的层次,每一层都有自己独特的功能,每一层都会其下一底层的支持,针对层级的划分有不同的模型,下面我们探讨的是网络七层模型,如下图所示:
- 从最底层往上依次为:物理层,链接层,网络层,传输层,会话层,表示层,应用层;
- 越接近最底层,越接近硬件;
- 网络层次的划分,每一层有着自己的功能,为了实现这些功能,就需要大家都遵守共同的规则,大家都遵守的规则,就叫做
协议
(protocol); - 网络的每一层,都定义了很多协议,这些协议可统称为
互联网协议
,它们是互联网的核心;
物理层
-
物理层
:就是将计算机连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号; - 将计算机连接起来,组成一个网络,可以通过光缆,电缆,无线电波等方式;
链接层
- 物理层传送过来的0和1的电信号,单纯的0和1是没有任何意义的,必须规定特定的解读方式即多少个电信号为一组,每个信号位有什么意义;
-
链接层
:确定了电信号0和1的分组方式,以及每个信号位的意义; -
以太网协议
:其规定一组电信号构成一个数据包,称为帧(Frame),每一帧分为两个部分:标头(Head)和数据(Data);-
标头(Head)
包含数据包的说明,例如发送者,接受者,数据类型等等,其长度为固定的18个字节, -
数据(Data)
:就是数据包的具体内容,其最短为46个字节,最长为1500个字节;
-
-
MAC地址
:联入网络的所有设备,都必须具有网卡接口,数据包必须是从一块网卡,传送到另一块网卡,网卡的地址就是数据包的发送地址和接收地址,也就是所谓的MAC地址; - 每块网卡出厂的时候都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个16进制位进行表示;
- 有了MAC地址,然后计算机采用
广播的方式
发送数据包给其他计算机;- 首先当前计算机通过
ARP协议
,知道另一台计算机的MAC地址
; - 其次当前计算机采用广播的方式,给
本网络内
的所有计算机都发送数据包,本网络内的所有计算机拿到数据包之后,读取标头(Head)中接收方的MAC地址与自己MAC地址进行比较,若相同则接收数据包,若不同则丢弃数据包;
- 首先当前计算机通过
- 根据上述的
数据包,计算机的MAC地址,广播的发送方式
,实现了在同一网络中
在多台计算机之间传送数据了;
网络层
- 在链接层实现了同一子网络中计算机之间的数据传输,如何在不同的子网络中实现数据传输呢?答案是网络层;
-
网络层
:其作用是引进一套新的地址,能让我们区分不同计算是否属于同一个子网络,这套地址叫网络地址,简称网址,网络层出现之后,每台计算机就有了两种地址,一种是MAC地址
,另一种是网络地址
,这两种地址之间没有任何联系,MAC地址是绑定在网卡上的,固定不变的,网络地址是管理员分配的,是可以改变的; - 网络地址可以帮助我们确定计算机所在的子网络,MAC地址则是将数据包传送给该子网络中目标网卡;
-
IP协议
:规定网络地址的协议,叫做IP协议,它所定义的地址,被称为IP地址,目前,广泛采用的是IP协议第四版,简称IPv4
,IPv4这个版本规定,网络地址由32个二进制位组成,习惯上,我们用分成四段的十进制数
表示IP地址,从0.0.0.0一直到255.255.255.255; - IP地址又分为两个部分,分别为
网络部分
和主机部分
,其中网络部分是由多少个二进制位组成是由子网掩码
决定的,子网掩码是表示子网络特征的一个参数,也是一个32位二进制数字,它的网络部分全部为1
,主机部分全部为0
; - 现有两个IP地址175.16.254.1和175.16.254.233以及子网掩码为255.255.255.0,判断这两个IP地址是否属于同一个子网络;
- 首先IP地址175.16.254.1与子网掩码为255.255.255.0 进行
位与运算
得到网络部分为175.16.254; - 其次IP地址175.16.254.233与子网掩码为255.255.255.0 进行
位与运算
得到网络部分为175.16.254,看到两个IP地址的网络部分相同,所以它们属于同一个子网络;
- 首先IP地址175.16.254.1与子网掩码为255.255.255.0 进行
- 总结:IP协议的主要作用有两个:
- 首先为每一台计算分配一个IP地址;
- 其次提供子网掩码,确定哪些IP地址属于同一个子网络;
-
IP数据包
:根据IP协议发送的数据,称为IP数据包,其中包含IP地址信息,上述的以太数据包中只包含MAC地址,这两种地址是如何组合的呢?答案是把IP数据包
直接放进以太网数据包的"数据"部分
,因此完全不用修改以太网的结构,这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构; - IP数据包的格式如下所示:
- IP标头通常占用20-60个字节,整个数据包的最大长度为65535个字节;
-
ARP协议
:当前计算机给另一台计算发送数据包,必须要知道另一台计算的IP地址与MAC地址,其中IP地址是已知的,对于获取MAC地址,这里分为两种情况:- 第一种情况:两台计算机不在同一子网络,只能只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理;
- 第一种情况:两台计算机在同一子网络,可通过ARP协议,获取对方的MAC地址;
传输层
- 由上述可知,有了计算机的IP地址与MAC,就能实现在互联网上任意两台主机上建立通信,但问题是同一台计算机上,运行了多个不同的进程(程序),例如看电影,听音乐,聊天等等,计算机接收到数据给哪个进程使用呢? 这里就引出了
端口(port)
的概念,其本质应用程序的编号,将数据包发送到计算机特定的端口,端口对应的程序就能取到自己所需要的数据; -
端口
:是0到65535之间的一个整数,正好16个二进制位,0到1023的端口被系统占用,用户只能选用大于1023的端口; -
传输层
的功能,就是建立"端口到端口"的通信,相比之下,"网络层"的功能是建立"主机到主机"的通信,只要确定主机和端口,我们就能实现程序之间的交流,因此,Unix系统就把主机+端口,叫做"套接字"(socket),有了它我们就可以进行网络应用程序开发了; -
UDP协议
:在传输层需要往数据包中添加端口信息,那么需要定义新的协议,这里就引入了UDP协议
; - UDP数据包,标头包含发出端口与接收端口信息,数据部分直接放入IP数据包中,格式如下所示:
-
TCP协议
:UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到,为了解决这个问题,提高网络可靠性,TCP协议就诞生了,这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议
,每发出一个数据包都要求确认,如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了,因此TCP协议能够确保数据不会遗失,它的缺点是过程复杂、实现困难、消耗较多的资源;
应用层
- 应用程序收到"传输层"的数据,接下来就要进行解读,由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读;
-
应用层
的作用,就是规定应用程序的数据格式
; - 应用层接收到数据格式如下所示:
电脑联接网络的设置
- 主要分为下列四个重要步骤:
- 设置本机的IP地址;
- 设置子网掩码;
- 设置网关的IP地址;
- 设置DNS的IP地址;
- 上述的详细情形如下图所示:
- 当我们在浏览器中输入网址
http://www.google.com/
,按下enter键,就会向谷歌服务器发送一个网页请求的数据包,底层的详细执行逻辑如下: - 首先,我们发送数据包,必须要知道对方的IP地址,但现在我们只知道谷歌的网址,需要借助
DNS服务器
,帮助我们将http://www.google.com/``解析成IP地址
; - 其次,现在我们知道了谷歌的IP地址,根据
子网掩码
,判断我们当前所处的网络是否与谷歌所处的网络相同,若相同,直接获取得到谷歌的Mac地址,若不同转发给网关
处理,网关可以帮助我们获取得到谷歌的Mac地址; - 一般情况下,浏览器发送网页数据包采用的是
HTTP协议
,当前处于应用层
; - 进入
传输层
,获取谷歌的HTTP的端口
(默认为80),将HTTP数据包,包装上TCP标头; - 进入
网络层
,获取谷歌的IP地址
,将TCP数据包,包装上IP标头; - 进入
链接层
,获取谷歌的Mac地址
,将IP数据包,包装上以太协议标头; - 最后进入
物理层
,经过网线,网关,传递给谷歌服务器; - 谷歌服务器拿到传输过来的以太数据包,会进行解析操作,依次转换成IP数据包,TCP数据包,HTTP数据包,得到HTTP网络请求数据,然后对其作出响应,响应过程的数据传输与上述的发送请求的流程完全相同;
TCP协议
- 客户端发送请求到服务端,服务端接收请求并作出响应,此过程中会涉及到
TCP的三次握手
,下面我们来阐述TCP三次握手
机制; - TCP的三次握手,主要是
为了确认双方的身份和通信能力
,然后建立联接,下面以一个实例来形象的论述; - 一天清晨,下了大雾,李四走在前面,张三走在后面,双方互相看不清对方,这时张三听见前面有人在走路,不知道是不是李四,于是张三第一次喊话
前面的是不是李四啊?
,李四听到之后,立马回复到我是李四,并询问道你是不是张三啊?
,这时张三听到李四的回复,知道了前面的是李四,然后回复李四的问话,我是张三
,这时双方都确认了对方的身份和通信能力,张三的发问
,李四的回复与发问
,张三的回复
就相当于TCP中的三次握手; - TCP的三次握手之后,
客户端与服务端建立联接
,就开始进行数据传输了;- 第一次握手:客户端向服务端发送数据;
- 第二次握手:服务端确认客户端发送的数据,并回复数据;
- 第三次握手:客户端收到服务端的数据,并回复服务端;
- TCP的四次挥手,是为了断开客户端与服务端之间的联接,终止数据的传输;
- 还是以上面的实例进行论述,张三李四建立联接之后,在路上一起走了一段距离,当到了路口时,两人要分道扬镳了,首先
张三说到我要走了
,然后李四回复到好的
,再者李四说到我也走了
,最后张三回复到好的
,双方的四次会话后,各奔东西,这四次会话相当于TCP中客户端与服务端之间的四次挥手;- 第一次挥手:客户端向服务端发起断开联接的请求;
- 第二次挥手:服务端确认客户端的断开联接请求;
- 第三次挥手:服务端向客户端的发起断开联接请求
- 第四次挥手:客户端确认服务端的断开联接请求;
- 经过四次挥手,TCP联接断开关闭;
网友评论