计算机网络
计算机网络概述:https://mp.weixin.qq.com/s/Ipn5lbyEFR0FQbKHXk_J2A (opens new window)
# 计算机网络
# 计算机网络的分类
(1) 按照网络作用的范围,可以将计算机网络分为:
广域网(WAN)
城域网(MAN)
局域网(LAN)
(2) 按照网络作用的使用者,可以将计算机网络分为:
公用网络(所有愿意付费、或者愿意加入的,都可以加入的网络)
专用网络(某些部门,或者某些人,为了满足特殊的业务需求,而建立起来的网络。如:军队、铁路、银行、公司,他们都有自己的专用网络)
# 网络传输单位
报文(message)
我们将位于 应用层 的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
报文段(segment)
通常是指起始点和目的地都是 传输层 的信息单元。
分组/包(packet)
分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是 网络层。
数据报(datagram)
面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的的 网络层 的信息单元。
帧(frame)
帧是 数据链路层 的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。
数据单元(data unit)
指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。
SDU 是在同一机器上的两层之间传送信息。PDU 是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
数据单元是网络信息传输的基本单位。一般网络连接不允许传送任意大小的数据包,而是采用分组技术将一个数据分成若干个很小的数据包,并给每个小数据包加上一些关于此数据包的属性信息。
协议数据单元(PDU,Protocol Data Unit): 计算机网络各层对等实体间交换的单位信息
在 OSI 模型系统里,PDU 和最底下四层相关:
- 物理层(一层)PDU 指数据流(Bit Stream)。
- 数据链路层(二层)PDU 指数据帧(Frame)。
- 网络层(三层)PDU 指数据包(Packet)。
- 传输层(四层)PDU 指数据段(Segment)。
SDU(service Data Unit):服务数据单元,又叫业务数据单元,是指定层的用户服务的数据集,传送到接收方的时候同一协议层时数据没有发生变化,即业务部分,然后发给下层之后,下层将其封装在 PDU 中发送出去。服务数据单元是从高层协议来的信息单元传送到低层协议。第 N 层服务数据单元 SDU,和上一层的协议数据单元(PDU)是一一对应的。根据协议数据单元的数据的不同,送到接收端的指定层。
# 网络模型
# OSI 网络模型(七层)
简介:OSI 是 Open System Interconnection 的缩写,意为开放式系统互联
OSI(Open System Interconnection)由国际标准化组织 ISO 制定,共分七层
第一层到第三层,负责创建网络通信连接的链路。第四层到第七层,负责端到端的数据通信。
- 物理层
数据单元:比特(bit)
作用:主要是物理介质传输媒介(网线或者是无线),在不同设备中传输比特,将 0/1 信号与电信号或者光信号互相转化
物理层的传输介质有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆
- 数据链路层
数据单元:帧(frame)
作用:在物理层提供的比特流的基础上,建立相邻节点之间的数据链路,不可靠的物理介质提供可靠传输 ppp 协议。
- 网络层
数据单元:包/分组(packet)
协议:IP(IPv4、IPv6)、ICMP
作用:选择合适的网间路由完成两个计算机之间的多个数据链路,通过路由协议和地址解析协议(ARP)。IP,RIP(路由信息协议),OSPF(最短路径优先协议)
- 传输层
数据单元:TCP 的报文段(segment)/UDP 的数据段(Datagram)
协议:TCP、UDP
作用:为应用程序之间提供端对端的逻辑通信。
- 会话层
作用:验证访问和会话管理。
- 表示层
作用:信息格式和语法的转化。
- 应用层
数据单元:报文(message)
协议:HTTP、FPT、TFTP、DNS、TELNET
作用:为操作系统或者应用程序提供可用的网络接口。
# TCP/IP 参考模型(四层)
TCP/IP 是一个四层的体系结构,主要包括:应用层、运输层、网际层和网络接口层。从实质上讲,只有上边三层,网络接口层没有什么具体的内容。
# 五层体系结构
五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。
五层协议只是 OSI 和 TCP/IP 的综合,实际应用还是 TCP/IP 的四层结构。为了方便可以把下两层称为网络接口层。
# 通信原则
两台计算机进行通信时,必须遵守以下原则
必须是同一层次进行通信,比如,A 计算机的应用层和 B 计算机的传输层就不能通信,因为它们不在一个层次,数据的拆包会遇到问题。
每一层的功能都必须相同,也就是拥有完全相同的网络模型。如果网络模型都不同,那不就乱套了,谁都不认识谁。
数据只能逐层传输,不能跃层。
每一层可以使用下层提供的服务,并向上层提供服务。
# 现代互联网的网络拓扑
了解网络拓扑可以帮助我们在脑海中形成一个形象的计算机网络,是有助于我们往下学习的。对于现代互联网的网络拓扑主要分为两个部分:
- 边缘部分
主要指的的是平时的用户可以直接接触的部分,比如说在家、在公司或者在商场所使用的网络,都是属于计算机网络的边缘部分(家里的手机、电脑、智能家电,通过有线或无线的方式连接路由器,路由器连接一个当地的网关,然后网关连接到地区的 ISP)
- 核心部分
核心部分主要是由地区 ISP、主干 IS 以及一些国际的路由器所组成
# 计算机网络的性能指标
了解网络的性能指标,有助于评估或判断网络的质量或者速度。在了解之前,先对常用的丈量单位进行简单的了解(速率)
为什么电信拉的 100M 光纤,测试峰值速度只有 12M 每秒?
首先,因为网络常用单位是 Mbps
100M/s = 100Mbps = 100Mbit/s
由比特位换算到字节是有一个进制的,8 个比特位等于 1 个字节,因此:
100Mbit/s = (100/8)MB/s = 12.5MB/s
评估计算机网络关于时间的指标,总时延为
总时延 = 发送时延 + 传播时延 + 排队时延 + 处理时延
时延可以细分为
- 发送时延
主要是本机进行网络发送的时候,在本机所停留的时间
发送时延 = 数据长度(bit) / 发送速率(bit/s)
数据长度:是由用户所决定的,比如要下载一个 100M 的视频,这个 100M 就是数据的长度
发送速率:是由网卡所决定的(性能越好的网卡,发送速率越快)
- 排队时延
数据包在网络设备中等待被处理的时间
如果说一个数据从本机发送到某一个路由器,路由器并不是马上就处理,因为它可能在处理很多别的数据包,所以此时我们发的数据包,可能在路由器中停留一段时间,这个等待被处理的时间就是排队时延
- 传播时延
传播时延 = 传输路径长度 / 传播速率(bit/s)
传输路径长度:比如北京往上海发送数据,这个路径是比较短的。如果北京往美国发送数据,这些数据必须要经过海底电缆才能到达美国,这个传输路径就很长
传播速率:这个受限于传输介质(如铜线、光纤)
- 处理时延
数据包到达设备或者目的机器被处理所需要的时间
如果我们到达的服务器,它的性能不好,可能数据包到达了它那里,它要反应一会儿才能处理我们的数据包
评估计算机网络关于时间的指标,除了时延,还有一个指标是:往返时间 RRT
RTT(Route-Trip Time)是评估网络质量的一项重要指标
RTT 表示的是数据报文在端到端通信中的来回一次的时间
通常使用 ping 命令查看 RTT
# 网络相关问题
# 1. OSI 七层网络模型
每一层有什么作用
抓包工具抓的哪一层的包
Fiddler 工作于七层中的应用层,能够捕获通过的 HTTP(S)请求
# 计算机网络拓展知识
# 集线器(hub)
它属于纯硬件网络底层设备,工作于 OSI 参考模型的第一层,即物理层。不解析。
集线器只对信号进行整形、放大后再重发,不进行编码,转发的时候是以广播的方式进行的,即它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。
# 交换机
交换机工作于 OSI 参考模型的第二层,即数据链路层。它可以解析到 MAC 地址。
交换机是针对共享工作模式(例 hub)的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表(ARP 表)以确定目的 MAC(网卡的硬件地址)的 NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的 MAC 若不存在,交换机才广播(ARP 协议)到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。
# 路由器
路由器工作于 OSI 参考模型的第三层,即数据网络层。它可以解析到 IP。
提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(即两个网络或多个网络间转发数据包),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。
选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路径表(Routing Table),供路由选择时使用。路径表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表可以是由系统管理员固定设置好的。
静态路由表:由系统管理员事先设置好固定的路径表称之为静态(static)路径表。 动态路由表:动态(Dynamic)路径表是路由器根据网络系统的运行情况而自动调整的路径表。
# 网卡
网卡收到传输来的数据,网卡内的单片程序先接收数据头的目的 MAC 地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就在接收后产生中断信号通知 CPU,认为不该接收就丢弃不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。CPU 得到中断信号产生中断,操作系统就根据网卡驱动程序中设置的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈让操作系统处理。