网络最重要的特性是连接,方便数据进行共享.
最原始的计算机之间是相互独立的,每个终端各自持有客户数据,不利于协同工作.
网络互联:多台计算机连接在一起,完成数据共享.
局域网LAN:计算机数量更多,通过交换机和路由器连接在一起.(可看做几根短网线和一根长网线将几个主机连接在一起的情况就是在一个局域网上,两台主机在同一个局域网中可以完成数据交换)
- 路由器:不同的局域网上的主机完成数据通信必不可少的工具
- 局域网的划分本质上并不是根据路由器划分的,但是通常意义上,所有的局域网内不包含路由器.
广域网:将远隔千里的计算机都连接在一起.(广域网和局域网只是一个相对的概念)
协议:在具体执行某项事物之前由双方提前制订好的由01表示的信息而成约定.
对于不同的应用场景有不同的协议.
网络通信协议:协议就是一种约定,通信双方约定好的网络通信数据信号的解析
网络协议初识
协议分层
分层的好处在于封装,便于代码的理解和维护以及代码的复用,在网络通信环境中按照服务,接口,协议将整个通信过程进行分层,使用起来更加方便,以一套标准达到网络互联的目的.(函数抽离的例子)
- 同层之间可以直接通信,不同层之间不能通信(如两个人可以通信,两台手机也可以通信,但是人和手机之间却不能通信).一旦分层之后,层与层之间不会相互影响。将提供的服务,以及协议接口进行封装之后,使用起来更加方便,替换起来更加方便,实现起来也更加清晰。
网络是分层的,实际的网络在软件层被划分为四层(数据链路层 网络层 传输层 应用层),层与层之间通过接口进行交互.
OSI七层模型:按照网络通信中的协议,接口,服务对网络进行分层。自底向上是物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
实际上是TCP/IP五层(或四层):物理层 数据链路层 网络层 传输层 应用层
TCP/IP是一组协议,称之为TCP/IP协议簇,最典型的两个是TCP IP
- 物理层:负责光/电信号的传递方式,以太网用的网线 光纤 wifi使用的电磁波都属于物理层.物理层的能力决定了最大的传输速率,传输距离,抗干扰性等.集线器工作在物理层.,典型协议:以太网协议
- 数据链路层: 负责设备之间的数据帧的传送和识别. (有解决局域网中两台计算机的通信的能力)例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测.交换机工作在数据链路层.典型协议:eth(以太网协议)
- 网络层: 负责地址管理和路由选择.(有解决广域网中的两台计算机通信的能力) 路由器(Router)工作在网络层
- 传输层: 负责两台主机之间进程的数据传输,是端与端之间的数据传输。典型协议:tcp/udp
- 应用层: 负责应用程序间的数据沟通,典型协议有http,ftp,dns,smtp协议
路由器的作用是将一个局域网的数据交给另一个局域网.
- 交换机:用在数据链路层中,因此是在局域网中起作用.能够划分碰撞域和数据转发功能
一般而言
对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器, 它实现了从网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;
网络传输基本流程
局域网的通信(发生在网络链路层)的原理:1.局域网内通信,A主机和B主机的直接通信时所有主机都会收到消息,但是其余主机都会在最底层(网络链路层)中丢弃消息,因此上层并不知道消息.2.任何时刻只有一台主机发送消息,否则会产生数据碰撞.3所有主机都有碰撞检测功能,碰撞检测完毕,一旦发现有碰撞就会触发碰撞避免算法,本质就是等待.
每台主机有唯一的标示符叫做mac地址,这个mac地址就是网卡的标识.局域网中AB主机间之所以能识别到互相之间的通信就是因为mac地址的识别.
以太网是指在局域网中辅助进行通信的一根网线,在局域网中的主机可以互相通信.
数据的传输流程
当数据从上层向下层(应用层到链路层)交付数据时,含有数据包封装和解包以及分用动作.
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame).
- 封装:数据封装时需要加的东西叫做协议报头(特定格式的01代码,包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息. ),数据内容叫做有效载荷.
- 每传输到一个协议层都会添加一个 协议报头,最先封装的报头在最里面因此解包是从下层到上层解包.载荷是包含上一层的报头和初始载荷
- 分用:解包交付的时候必须要明确要将载荷交给上一层的谁,决定信息在当前层的报头中
- 解包:每层都必须保证将报头和载荷正确的分离
下三层(传输层 网络层 链路层)由操作系统完成,集成在内核,处理通信细节,用户只需要调用接口即可;应用层由用户完成,处理应用程序细节,程序员的工作都在这一层及以上,能让用户更专注于数据本身.
跨网络传输时,很难知道对方主机的mac地址,因此由IP地址识别对方主机,数据传输时,自顶向下封装,在IP层会遇到路由器,路由器自底向上交付数据交付给IP,此时在解包过程中,mac地址已经被去掉了,再通过IP地址路由,再自底向上封装,解包交付.
- 有了封装和解包后,原IP,目的IP,IP报文在整个转发过程中都不变的,因此在IP及其以上层都不能感知网络的改变,IP协议将全球的网络都变为IP网络
mac地址(48位)是可变的,用来标识数据链路层中相连的节点,会一直改变,而IP地址(32位)不会改变
IP协议有两个版本, IPv4(32位)和IPv6(128位). 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4