计算机网络(一)之概述篇

什么是计算机网络?

计算机网络主要由一些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。

计算机网络分类

分类 英文 范围 区域
广域网 WAN(Wide Area Network) 几十到几千公里 跨省、跨国
城域网 MAN(Metro Area Network) 几十到几千公里 城市间
局域网 LAN(Local Area Network) 1KM以内 地区内

计算机网络发展史

计算机网络层次结构

需要遵循的基本设计原则


答案是 分层实现不同的功能

  • 各层之间是相互独立的
  • 要求每一层有足够的灵活性,来应对未来计算机网络的变化
  • 各层之间的完全解耦

OSI七层模型(只是获得了研究成果,并未成为标准的模型)

:为计算机用户提供接口和服务
:数据处理
:管理(建立、维护、重连)通信回话
:管理端到端的通信链接
:数据路由(决定数据在网络的路劲)
:管理相邻节点之间的数据通信
:数据通信的光电物理特性

TCP/IP四层模型

:包含应用层、表示层、会话层; HTTP/FTP...
:包含传输层; TCP/UDP
:包含网络层; IP/ICMP
:包含数据链路层、物理层; Ethernet/APP/RARP

TCP/IP四层模型图解


现代互联网网络拓扑(图解)

边缘部分:

  • 家庭


  • 企业


    image.png

    核心部分:

  • 国家



    整体结构


计算机网络的性能指标

速率:bps = bit/s

bit Byte KB MB GB TB PB EB
比特位 字节 千字节 兆字节 吉字节 太字节 拍字节 艾字节
- 8bit 1027B 1024KB 1024MB 1024GB 1024TB 1024EB
门电路 - 寄存器 高速缓存器 内存/硬盘 硬盘 云硬盘 数据仓库

为什么电信拉的是100M光纤,测试峰值速度只有12M每秒?(网络常用单位为Mbps)
100M/S = 100Mbps = 100Mbit/s
100Mbit/S = (100/8)MB/s =12.5MB/s

发送时延

发送时延 = 数据长度(bit)/发送速率(bit/s)(受限于计算机的网卡)

传播时延

传播时延 = 传播路径距离/传播速率(bit)

排队时延

数据包在网络设备中等待被处理的时间

处理时延

数据包到达设备或者目的机器被处理的时间

总时延

总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延

往返时间RTT: RTT(ROUTE-Trip Time)是评估网络质量的一项重要指标;表示的是数据报文在端到端通信中的来回一次的时间, 通常使用ping来测试RTT

物理层概述

  • 双绞线


  • 同轴电缆


  • 光纤


  • 单工信道
    电视机:只能接受不能发送
  • 半双工信道
    双方不能同时接收或者发送
  • 全双工信道
    双方都可以同时发送和接收

数据链路层

封装成帧

"帧" 是数据链路层数据的基本单位;

发送端在网络层的一段数据前后添加特定标记形成"帧;

接收端根据前后特定标记识别出"帧"


在网络层将IP数据报传送到数据链路层,接收到之后转换成帧的数据

帧的首部和尾部是特定的控制字符(特定比特流)
SOH:0000001
EOH:0000100

透明传输

即是控制字符在帧数据中,但是要当做不存在去处理;

处理方式:


举例:

  • 编程语言中"" 一般为转义字符
  • "\n"、"\t"等控制字符
  • "\" 、"\\"

差错监测

  • 物理层只管传输比特流, 无法控制是否出错
  • 数据链路层负责 "差错监测"的工作
  • 奇偶校验码
    00110010:
    0+0+1+1+0+0+1+0=3
    3是奇数所以为1
    如果是偶数则为0
    图解

    上图中原始的校验码为1,得到的比特流00010010为偶数所以出现错误;
    如果出错的位数为2位则会出错
  • 循环冗余校验码CRC
    1.他是一种根据传输或保存的数据而产生固定位数校验码的方法;
    2.监测数据传输或者保存后可能出现的错误
    3.生产的数据计算出来并且附加到数据后面
    模“2”除法:即二进制下的除法。与算术除法类似,但是该除法不借位,实际是 异或操作。
  • 0 xor 0 = 0
  • 0 xor 1 = 1
  • 1 xor 1 = 1
  • 1 xor 1 = 1
    即只需要记住常说的一句话:异或操作,相同为0,不同为1。
    举例1:

第一步:

  • 选定一个用于校验的多项式G(x),并在数据尾部添加r 个0

使用CRC计算101001的可校验位串?

G(x) = x^3 + x^2 + 1
=> 二进制位串: 1101 ,最高阶为3
G(x) = 1 * x^3 + 1 * x^2 + 0 * x^1 + 1 * x^0

101001 => 101001000

第二步:

  • 将添加r个0后的数据,使用模'2' 除法除以多项式的位串
    101001000 / 1101

第三步:

  • 得到的玉树填充在原数据r个0的位置得到可校验的位串
    101001000 => 101001001

第四步:

  • 接收端接收的数据除以G(x)的位串,根据余数判断出错
    101001001 / 1101

    如果没有出错余数则是0否则为1

举例2
使用CRC计算10110011的可校验位串?
G(x) = x^4 + x^3 +1
==> 二进制位串:11001,最高阶为4
10110011 => 10110011000
接着
101100110000 / 11001


得到
101100110000 ==> 101100110100

CRC的错误监测能力与位串的阶数r有关; 数据链路层值进行数据的监测,不进行纠正,如果监测到数据错,则直接丢弃.

最大传输单元MTU

MTU(Maximum Transmission Unit);
数据链路层的数据帧也不是无限大的;
注意:

  • 计算机进行数据通信所传输的数据帧长度受MTU限制,
  • 数据帧过大或者过小都会影响传输的效率

一般以太网的MTU为1500字节;
路径MTU由链路中MTU的最小值决定;

图解MTU限制


以太网

如何知道计算机A通过路由器发送给C


  • MAC地址(物理地址、硬件地址)
  1. 每个设备都拥有唯一的MAC地址
  2. MAC一共有48为,使用16进制表示

MAC地址查询: ipconfig /all

  • 以太网协议
  1. 以太网(Ethernet)是一种广泛的局域网技术
  2. 以太网是一种应用于数据链路层的协议
  3. 使用以太网可以完成相邻设备的数据帧传输

以太网协议主要包含5大部分:
目的地址:6字节 (MAC地址48位/8bit)
原地址:6字节
类型:2字节
帧数据:46~1500字节
CRC:4字节

  • MAC地址表
    每个MAC地址对应一个硬件接口(路由器)

因此我们来回答开始的问题:


首先,A通过网卡发出数据帧, 数据帧到达路由器,路由器取出前6字节(MAC地址),
路由器匹配MAC地址表,找到对应的网络接口,最后路由器往该网络接口发送数据帧

问题:
如果不知道计算机C的MAC地址如何去处理?
首先路由器去检查MAC地址表,发现没有C的信息,路由器将广播A的数据包到除A以外的端口,路由器将收到来自B、C的回应,将地址记录

遗留问题:
如果计算机C并没有和A一样链接在同一个路由器上,如何实现数据帧的传输呢?(MAC地址表只能进行相邻物理节点传输)

你可能感兴趣的:(计算机网络(一)之概述篇)