一、网络发展史
1.1 独立模式
即计算机之间相互独立,互不连通的。
1.2 网络互联
即将多台计算机连接在一起,完成数据共享。
数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。
根据网络互联规模的不同, 可以分为局域网和广域网。
1.3 局域网LAN
局域网,即Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的⼀种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况 下,是无法通信的。 局域网组建网络的方式有很多种:
<1>网线直连
<2>集线器组建
<3>交换机组建
<4>交换机和路由器组建
1.4 广域网
广域网,即Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
二、网络通信基础
网络互连的目的是进行网络通信,即网络数据传输,更具体⼀点,是网络主机中的不同进程间, 基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识
2.1 IP地址
IP地址用于定位主机的网络地址。
IP地址的格式:
IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。通常用“点分⼗进制”的方式来表示,即a.b.c.d的形式
(a,b,c,d都是0~255之间的十进制整数)。 如:100.4.5.6。
2.2 端口号
端口号用于定位主机中的进程。
比如向对方的QQ中发一条信息,需要先通过IP地址确定是哪台电脑,再通过端口号确定是电脑中的哪个进程(程序)接收这条信息。
思考:
有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同, 如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?(程序已经收到数据,但如何理解数据的含义?) 基于网络数据传输,需要使用协议来规定双方的数据格式。
2.3 认识协议
概念:协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的⼀组约定、规则。
如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。 协议(protocol)最终体现为在网络上传输的数据包的格式。
2.4 五元组
我们在进行一次网络通信的时候,会涉及到5个非常关键的信息,这就叫五元组
在TCP/IP协议中用五元组来标识一个网络通信:
<1>源IP:标识源主机
<2>源端口号:标识源主机中该次通信发送数据的进程
<3> 目的IP:标识目的主机
<4>目的端口号:标识目的主机中该次通信接收数据的进程
<5>协议号:标识发送进程和接收进程双方约定的数据格式
2.5 协议分层
将一个大的协议,拆分成若干个小的、功能单一的协议,就叫协议分层(只有相邻两层协议之间可以进行交互,上层协议可以调用下层协议,而下层协议可以给上层协议提供服务,不能跨层)
2.5.1 OSI七层模型
OSI:即Open System Interconnection,开放系统互连
• OSI 七层网络模型是⼀个逻辑上的定义和规范:把网络从逻辑上分为了7层。
• OSI 七层模型是⼀种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传 输;
OSI分为以下七层:
OSI七层模型既复杂又不实用,实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以 TCP/IP 五层(或四层)模型来实现。
2.5.2 TCP/IP 五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采用了5层的层级结构,每⼀层都呼叫它的下一层所提供的网络来完成自己的需求。
• 应用层:即应用程序。
• 传输层:也是连个任意设备之间的通信,但不考虑中间过程,只考虑终点和起点。
• 网络层:两个任意设备之间如何进行通信(如两个设备之间隔着很多路由器/交换机,这两个设备如何通信)
• 数据链路层:完成两个相邻的设备之间是如何进行通信的(如通过网线将电脑连接到路由器/交换机上,那么电脑和路由器/交换机就属于两个相邻的设备)
• 物理层:规定了网络通信中的一些硬件设施符合的要求。
数据链路层和物理层耦合性比较高,因此也可以叫做 TCP/IP 四层模型。
2.6 网络设备所在分层
• 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
• 对于⼀台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
• 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
• 对于集线器,它只实现了物理层;
随着现在网络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器。我们以下说的网络设备都是传统意义上的交换机和路由器。
2.7 网络数据通信基本流程
列如:向对方发送一条QQ信息
发送方:
1.应用程序获取到用户输入,构造一个应用层数据包,这个数据包就会遵守应用层协议,这个协议比较特殊,往往是开发这个程序的程序员自己定义的。
2.应用程序调用传输层提供的接口(API),把数据交给传输层,传输层拿到数据包之后,构造出“传输层数据包”。(传输层的协议主要是TCP、UDP)
3.传输层构造好数据后,继续调用网络层的API,把传输层的数据包交给网络层,网络层继续处理。(主要是IP协议)
IP协议继续对传输层数据包进行加工——>加上IP报头变成传输层数据包。
4.IP协议继续调用数据链路层的API,把IP数据包交给数据链路层(核心协议主要是“以太网”)
5.以太网将以太网数据包交给硬件设备(网卡),网卡会把上述二进制数据,以 光信号/电信号/电磁波信号 传播出去。
上述过程中,从上层到下层,数据都要进一步加工(添加报头),这叫做封装。
收件方:
收件过程与发件过程完全相反,是从下到上依次解析(去掉报头),这个过程叫分用。
1.数据到达收件方的网卡,网卡把信号还原为二进制数据并交给数据链路层。
2.数据链路层按照以太网协议解析,取出报头报尾,将载荷传递给网络层。
3.网络层按照IP协议的格式解析,去掉报头,将载荷传递给传输层。
4.传输层按照TCP协议解析数据,去掉报头,将载荷传递给应用层。
5.QQ解析应用层数据,取出信息。
2.8 封装和分用
• 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
• 应用层数据通过协议栈发到网络上时,每层协议都要加上⼀个数据首部(header),称为封装 (Encapsulation)。
• 首部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
• 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上 层协议字段"将数据交给对应的上层协议处理。