计算机网络体系结构-网络原理初识

计算机网络体系结构-网络原理初识
1. 网络发展史1.1 独立模式计算机网络是指将地理位置不同、具有独立功能的多台计算机及其外部设备通过通信线路和通信设备连接起来在网络操作系统、网络管理软件及网络通信协议的管理和协调下实现资源共享和信息传递1.2 网络互连随着时代的发展越来越需要计算机之间互相通信共享软件和数据即以多个计算机协同工作来完成业务就有了网络互连。网络互连将多台计算机连接在一起完成数据共享。 数据共享本质是网络数据传输即计算机之间通过网络来传输数据也称为网络通信。根据网络互连的规模不同可以划分为局域网和广域网。1.2.1 局域网 LAN局域网即 Local Area Network简称 LAN。 Local 即标识了局域网是本地局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信又称为内网局域网和局域网之间在没有连接的情况下是无法通信的。局域网组建网络的方式有很多种:基于网线直连最简单的形式用网线直接连接多台主机仅适用于极少设备的场景基于集线器组建所有主机连接到集线器 (Hub) 上属于物理层设备收到信号后广播给所有端口基于交换机组建交换机 (Switch) 工作在数据链路层可以精准识别目标设备定向传输数据是局域网主流组建方式基于交换机和路由器组建路由器 (Router) 负责连接不同局域网搭配交换机可实现更复杂的内网结构1.2.2 广域网 WAN广域网即 Wide Area Network简称 WAN。通过路由器将多个局域网连接起来在物理上组成很大范围的网络就形成了广域网。广域网内部的局域网都属于其子网。如果有北、中、南等分公司甚至海外分公司把这些分公司以专线方式连接起来即称为 “广域网”。 如果属于全球化的公共型广域网则称为互联网 (又称公网外网)属于广域网的一个子集。 有时在不严格的环境下说的广域网其实是指互联网。注意所谓 局域网 和 广域网 只是一个相对的概念。比如一个覆盖全省的专网相对城市园区网是广域网但相对全球互联网又可以看做一个比较大的局域网。2. 网络通信基础网络互连的目的是进行网络通信也即是网络数据传输更具体一点是网络主机中的不同进程间基于网络传输数据。那么在组建的网络中如何判断到底是从哪台主机将数据传输到那台主机呢这就需要使用 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 端口号概念在网络通信中IP 地址用于标识主机网络地址端口号可以标识主机中发送数据、接收数据的进程。类似发送快递时不光需要指定收货地址 (IP 地址)还需要指定收货人 (端口号)。格式端口号是 0~65535 范围的数字在网络通信中进程可以通过绑定一个端口号来发送及接收网络数据。问题 有了 IP 地址和端口号可以定位到网络中唯一的一个进程但还存在一个问题网络通信是基于二进制 0/1 数据来传输如何告诉对方发送的数据是什么样的呢网络通信传输的数据类型可能有多种图片视频文本等。同一个类型的数据格式可能也不同如发送一个文本字符串 “你好”如何标识发送的数据是文本类型及文本的编码格式呢基于网络数据传输需要使用协议来规定双方的数据格式。2.3 认识协议概念协议网络协议的简称网络协议是网络通信 (即网络数据传输) 经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定计算机之间才能相互通信交流。协议 (protocol) 最终体现为在网络上传输的数据包的格式。作用计算机之间的传输媒介是光信号和电信号。通过 频率 和 强弱 来表示 0 和 1 这样的信息。要想传递各种不同的信息就需要约定好双方的数据格式。计算机生产厂商有很多计算机操作系统也有很多计算机网络硬件设备还是有很多如何让这些不同厂商之间生产的计算机能够相互顺畅的通信 就需要有人站出来约定一个共同的标准大家都来遵守这就是网络协议。2.4 五元组在 TCP/IP 协议中用五元组来标识一个网络通信:源 IP标识源主机源端口号标识源主机中该次通信发送数据的进程目的 IP标识目的主机目的端口号标识目的主机中该次通信接收数据的进程协议号标识发送进程和接收进程双方约定的数据格式五元组在网络通信中的作用类似于发送快递目的 IP收件人地址目的端口号收件人源 IP寄件人地址源端口号寄件人协议快递类型实操可以在 cmd 中输入命令查看网络数据传输中的五元组信息 如果需要过滤 (一般是通过端口号或进程 PID 过滤)可以搭配findstr关键字使用cmd// 查看所有活动连接的五元组 netstat -ano // 按端口号/PID过滤 netstat -ano | findstr 字符串3. 协议分层对于网络协议来说往往分成几个层次进行定义。3.1 什么是协议分层协议分层类似于打电话时定义不同的层次的协议语言层约定用汉语沟通双方都遵循汉语的表达规则通信设备层电话机、电话系统负责语音信号的传输两层之间通过固定接口对接仅在通信设备层变更时不影响语言层的沟通仅在语言层变更时不影响设备层的传输。实际的网络通信会更加复杂需要分更多的层次。3.2 分层的作用为什么需要网络协议的分层分层最大的好处类似于面向接口编程定义好两层间的接口规范让双方遵循这个规范来对接在代码中类似于定义好一个接口一方为接口的实现类 (提供方提供服务)一方为接口的使用类 (使用方使用服务):对于使用方来说并不关心提供方是如何实现的只需要使用接口即可对于提供方来说利用封装的特性隐藏了实现的细节只需要开放接口即可只有相邻两层可以通信上层协议调用下层协议下层协议给上层协议提供服务不能跨层通信3.3 OSI 七层模型OSI: 即 Open System Interconnection开放系统互连OSI 七层网络模型是一个逻辑上的定义和规范把网络从逻辑上分为了 7 层。OSI 七层模型是一种框架性的设计方法其最主要的功能就是帮助不同类型的主机实现数据传输。OSI 七层模型划分为以下七层每层功能概览应用层针对每个应用的协议直接和用户程序交互表示层处理设备固有数据格式和网络标准格式的转换会话层负责通信管理建立和断开连接管理会话时长传输层确保数据被可靠地传送到目标地址处理数据丢失等问题网络层负责地址管理和路由选择规划数据传输路径数据链路层负责数据帧的传送与识别、差错校验物理层定义光电信号的传输规则、连接器与网线的规格注意OSI 七层模型既复杂又不实用所以 OSI 七层模型没有落地、实现。实际组建网络时只是以 OSI 七层模型设计中的部分分层也即是 TCP/IP 五层 (或四层) 模型来实现。3.4 TCP/IP 五层 (或四层) 模型TCP/IP 是一组协议的代名词它还包括许多协议组成了 TCP/IP 协议簇。 TCP/IP 通讯协议采用了 5 层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。应用层负责应用程序间沟通如简单电子邮件传输 (SMTP)、文件传输协议 (FTP)、网络远程访问协议 (Telnet) 等。我们的网络编程主要就是针对应用层。 典型协议HTTP、HTTPS、DNS、FTP、SSH、SMTP 等传输层负责两台主机之间的数据传输。如传输控制协议 (TCP)能够确保数据可靠的从源主机发送到目标主机。 典型协议TCP、UDP、UDP-Lite 等网络层负责地址管理和路由选择。例如在 IP 协议中通过 IP 地址来标识一台主机并通过路由表的方式规划出两台主机之间的数据传输的线路 (路由)。路由器 (Router) 工作在网路层。 典型协议IP、ICMP、ARP 等数据链路层负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作。有以太网、令牌环网无线 LAN 等标准。交换机 (Switch) 工作在数据链路层。物理层负责光 / 电信号的传递方式。比如现在以太网通用的网线 (双绞线)、早期以太网采用的的同轴电缆、光纤现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器 (Hub) 工作在物理层。注意物理层我们考虑的比较少因此很多时候也可以称为 TCP/IP 四层模型即将数据链路层和物理层合并为网络接口层。3.5 网络设备所在分层不同的网络设备工作的协议层级不同对于一台主机它的操作系统内核实现了从传输层到物理层的内容也即是 TCP/IP 五层模型的下四层对于一台路由器它实现了从网络层到物理层也即是 TCP/IP 五层模型的下三层对于一台交换机它实现了从数据链路层到物理层也即是 TCP/IP 五层模型的下两层对于集线器它只实现了物理层注意我们这里说的是传统意义上的交换机和路由器也称为二层交换机、三层路由器。随着现在网络设备技术的不断发展也出现了很多 3 层或 4 层交换机4 层路由器。我们以下说的网络设备都是传统意义上的交换机和路由器。3.6 封装和分用网络数据传输时经过不同的网络节点 (主机、路由器) 时需要经过封装和分用两个核心过程。3.6.1 封装不同的协议层对数据包有不同的称谓在传输层叫做段 (segment)在网络层叫做数据报 (datagram)在链路层叫做帧 (frame)。应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部 (header)称为封装 (Encapsulation)。 首部信息中包含了一些类似于首部有多长载荷 (payload) 有多长上层协议是什么等信息。数据封装成帧后发到传输介质上完整的封装流程应用程序产生用户数据交给应用层处理传输层添加 TCP/UDP 首部形成 TCP 段网络层添加 IP 首部形成 IP 数据报数据链路层添加以太网首部和尾部形成完整的以太网帧最终转为光电信号通过物理层传输介质发出3.6.2 分用到达目的主机后每层协议再剥掉相应的首部根据首部中的 上层协议字段 将数据交给对应的上层协议处理这个过程称为分用。分用的判断依据数据链路层根据以太网首部中的帧类型判断上层协议是 IP 还是 ARP 等网络层根据 IP 首部中的协议值判断上层是 TCP 还是 UDP传输层根据 TCP 或 UDP 首部中的端口号将数据交给对应的应用进程网络通信流程例如qq发消息1、应用层获取用户输入构造成一个数据包遵守应用层协议这个协议是程序员写的发送的时候通过序列化成二进制流/字符串接收的时候反序列化假如我们约定数据格式如下2、应用层调用传输层接口传输层提供的API把数据交给传输层传输层拿到数据构造传输层数据包传输层协议主要是两个TCP/UDP3、传输层构造好数据包以后调用网络层API网络层继续处理网络层主要协议IPIP协议对上面继续封装IP协议不关心载荷信息同理tcp也是4、IP层调用数据链路层API把数据包交给数据链路层数据链路层核心协议以太网5、以太网将数据包交给硬件设备网卡网卡会把上述二进制信息以光信号/电信号等发送出去6、接收数据过程从下往上解开数据包上述过程复杂但是速度极快这就是大概的网络通信流程4.网络从独立单机模式演进到局域网、广域网互联核心目的是实现跨主机的数据传输与资源共享 网络通信的核心三要素是 IP 地址、端口号、协议通过五元组可以唯一标识一次网络通信 协议采用分层设计思想通过解耦提升扩展性与可维护性OSI 七层是理论参考模型TCP/IP 五层是实际落地的工业标准 网络数据传输的核心是封装与分用发送端从上到下逐层加首部打包接收端从下到上逐层拆包分发 不同网络设备工作在不同的协议层级主机覆盖下四层、路由器下三层、交换机下两层、集线器仅物理层。