这里的网络,指的是网络协议栈,它是一个软件,有着贯穿操作系统的体系结构,属于操作系统的一部分。
协议的本质是一种约定,由编码的程序员根据标准文档,或者自己的喜好定义的。约定一个共同的标准,大家都来遵守,这就是网络协议。
分层的本质是,将网络中的各个模块进行了解耦,降低了它们之间的耦合度,使各个层次之间相对独立。
1.减轻问题的复杂程度,一旦网络发生故障,可以迅速定位故障所在层次,便于查找和纠错。
2.在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行。
3.能有效刺激技术革新,因为每次更新都可以在小范围上进行,不需要对整个网络动手术。
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了五层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
应用层:负责应用程序间沟通,收到数据之后,完成一个应用层功能。
传输层:负责两台主机之间的数据传输,为数据通信提供策略。
网络层:负责地址管理和路由选择,跨网络路由找到目标网络+目标主机。
数据链路层:负责设备之间的数据帧传送和识别,是同一个网段的通信方式。
物理层:负责光/电信号的传递。
1.OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
2.OSI是先有模型,后有协议,现有标准,后进行实践。而TCP/IP先有协议和应用,再提出了模型,且是参照OSI模型。
3.OSI七层网络模型称为开放式系统互连参考模型,是一个逻辑上的定义和规范。而TCP/IP已被广泛使用,称为网络互联事实上的标准。
应用层数据通过协议栈发送到网络上时,每层协议都要加上一个数据首部,称为封装。首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。
这里的数据首部称为报头,是一种结构化的数据,类似于快递盒子上面的快递单,每一层都需要报头中的数据,来指导当前层进行某种协议决策。
数据封装成帧后发送到传输介质上,到达目的主机后每层协议再剥掉相应的首部,称为解包。几乎每个报头,都明确了报头和有效载荷的边界。
当前层协议根据首部中的 "上层协议字段" 将有效载荷交给对应的上层协议处理,称为分用。
MAC地址:用来识别数据链路层中相连的节点,在网卡出厂时就确定了,不能修改,MAC地址通常是唯一的(也有些网卡支持用户配置MAC地址)。
同一个局域网内,是可以直接通信的,网络资源被大家共享。发送到这个网段的数据并不是只有目标主机收到,而是这个局域网的所有主机都可以收到,收到数据的主机会根据数据帧中的目的MAC地址来选择接收或不接受该数据。
局域网的任何一个时刻,都只能有一台主机向局域网中发送数据,如果同时发送,可能发生数据碰撞的问题,所以每台主机都要有碰撞检测的能力,都要有碰撞避免算法。
IP用来标识网络中的不同主机,一个数据的IP地址几乎是一直不变的,标识的该数据从哪里来,到哪里去,而数据中的MAC地址是一直在变化的,标识了数据上一站从哪里来,下一站到哪里去。
路由器通常工作在网络层和数据链路层,既有IP地址,又有MAC地址。在一个局域网内,路由器在数据链路层通过MAC地址拿到数据,然后对数据进行解包后交付给上层网络层。上层根据目的IP地址进行路由,路由好后,将数据重新封装,并换上新的MAC地址,发送到下一站。
IP:用于网络寻址,它的作用空间是整个地球的网络。
MAC:用于数据链路层寻址,它的作用空间是局域网。
IP作为逻辑地址,不是一成不变的,而MAC是物理地址,在设备出厂是就被固定。