计算机网络

158 阅读8分钟

整体内容

  1. 底层协议(TCP/UDP)
  2. HTTP以及websocker协议
  3. 计算机网络及安全知识
  4. 常见网络开发调试工具
  5. 网络架构思想

计算机网络分层结构

  1. 计算机网络历史
  2. 分成架构思想
  3. OSI七层模型

互联网协议群

  1. TCP传输控制协议
  2. UDP用户数据报协议
  3. IP互联网协议
  4. 开发调试工具
  5. socket

web技术

DNS域名系统 HHTP超文本传输协议 搭建简单HTTP服务

互联网安全

  1. 加密、解密、证书、签名
  2. DDOS、中间人攻击

补充和面试题

  1. IO模型
  2. 网络优化中常见的性能数据指标
  3. 精选面试题

计算机网络简史

计算机网络是信息技术革命重要的技术之一。目前世界上常用的设备都需要联网才能发挥其完整功能(手机、电脑、平板等)。但其历史也并不悠久截至目前为止有60年左右。

互联网的产生

计算机网络产生的条件

  1. 芯片技术
    1. 早期计算机:世界上第一台计算机ENIAC出现在美国的军方实验室中,体积有一个教室那么大。主要是因为电路体积太大;
    2. 集成电路产生,计算机体积下降;
    3. 1958年杰克基尔.比发明世界上第一个芯片,把电子元件集中到一个半导体硅板上(芯片)。体积非常小;有了这种体积小计算能力强的芯片才能够制造出各种各样的网络设备
  2. 理论发展
    1. paul baran提出分布式可适应信息块交换集成电路
    2. donald davies提出封包交换
    3. 封包交换算法:解决数据如何从一个点通过一个复杂的网络到达另一个点的问题。
  3. 封包交换技术:计算机网络与交通工具不一样,比如从广东到东北都是尽可能的走直线直接到达。但是如果是计算机网络就有可能从新疆绕一圈再到东北。因为计算机网络中的广电信号速度很快,即使绕一圈的时间也是可以接受的

image.png

  1. 材料发展:1858年跨大西洋同轴电缆:材料是同轴电缆,每分钟传输120个字
    1. 同轴电缆:一根导体,速度慢
    2. 双绞线电缆:导线两两缠绕(抵消信号干扰),传输速度由导体材料决定(铁比铜的电阻率高),速度较快
    3. 光纤:光传输,速度最快(10Gbps),能量损耗低
  2. 操作系统:分时系统;早期的计算机只能执行一个程序,把程序给它跑完就结束关机了,没有办法跑多个应用;有了分时系统后就能同时跑多个应用,即使单个应用耶需要分时系统

互联网的发展

ARPANET

1969年出现了ARPANET("阿帕网"),也就是今天互联网的雏形。仅连接了四个节点,传输速率低,没应用场景 image.png

互联网发展需要解决的问题

  • 应用程序: 依赖性
  • 互联网地址: IP协议
  • 传输和研发成本:传输的正确性(TCP)
  • 带宽:网速慢
  • 网络安全:明文传输数据
  • 标准进化:互联网兼容性差,出现OSI七层模型解决问题
  • 商业力量:商业力量的介入

万维网的发展

  • 第一个浏览器万维网(world wide web)
  • 应用层协议(http)的构建
  • HTTP协议成功的原理:接入互联网的应用增多,成本大,对界面描述困难

无线技术发展

image.png

智能手机&移动互联网

  • 智能手机拓展手机边界能力

流量价格

流量价格降低,降低了手机联网延迟的问题

未来展望

  • 万物互联:任务设备都有芯片,芯片体积小,成本低,网络技术成熟
  • 5G: 速度快延迟低
  • 卫星上网: 网络覆盖远,包括偏远地区

OSI七层模型

OSI模型指的是open system interconnection reference model。它是世界上第一个试图在世界上规范网络标准架构的模型。

产生的背景

基础建设在学术界已经成型,如封包交换原理理论,数据传输能力等

image.png

OSI模型

image.png

应用层

只关心业务逻辑,不关心数据的传输。

image.png 比如微信,人到人的api、人到群的api、群到转发

表示层

负责协商用于传输数据的格式,并转换数据格式。有一个协商的过程,比如规定传输为了节省空间,对数据进行压缩转为为二进制流

image.png

会话层

负责管理两个连网实体间的连接。 功能以及特点:建立连接,维持通信,释放连接

image.png

传输层

负责将数据从一个实体传输到另一个实体,但不负责数据传输的方式

image.png

传输层的能力

  • 数据分割重组(必要):将数据拆分后按照顺序重组
  • 纠错:在数据传输的过程中出现问题采取方式进行纠正
  • 管理连接:处理数据的频繁交换
  • 流量控制:控制传输数据的速率
  • 端口寻址:标明参入传输实体的端口号

网络层

负责把一个封包从一个IP地址传输到另一个IP地址。(路由) 一个节点接收到一个封包之后,它怎么把这个封包传递到下一个节点(路由算法)?

数据链路层

确保两个临近设备间数据的传输,并隐藏底层实现 帧同步:两个设备之间传输时的协商速率问题 数据纠错

物理层

封装和隐藏具体的传输手段,并且提供稳定的传输接口;比如电缆、光纤、蓝牙等

image.png

OSI模型的问题

分层设计较为臃肿,并非每一层都需要 image.png

TCP/IP互联网协议群

OSI没有实际的可行方案。

五个问题

不管什么协议群都需要解决这五个问题

  1. 报文拆分
  2. 增加协议头
  3. 数据在相邻设备间传输
  4. 路由和寻址
  5. 数据重组

报文拆分

  • 数据量大,网络设备不支持
  • 复用路径

增加协议头

数据分块后需要再接收端重组,所以需要头部来添加一些描述字段 image.png

相邻设备间的数据传输

image.png

路由和寻址

路由算法:通过算法找到下一个要到达的节点

image.png

数据重组

image.png

五层模型

image.png 五层模型与OSI七层模型的区别

  1. 删除了会话层,会话是虚拟概念,不是必须的(应用层、传输层都可以维护一个链接)
  2. 删除了表示层,数据压缩、数据格式转换不是应用必须的

TCP/IP协议群的可选性

  1. 传输层
    1. TCP协议
    2. UDP协议
    3. TTL/SSL
    4. SCTP等
  2. 网络层
    1. IP协议(ipv4、ipv6)
    2. ICMP协议
    3. IPSec协议

TCP协议

TCP(Transport Control Protocal),是一个可以提供可靠的、支持双工、连接导向的协议,因此在客户端与服务端之间传输数据的时候,是必须先建立一个连接 image.png

  1. 什么是连接:
    1. 虚拟、抽象的概念
    2. 加快两个通信间的程序确认彼此都在线
    3. 加快响应请求速度
    4. 连接也被称为会话(session)
    5. 使得通信更加稳定安全
    6. 消耗更多资源
  2. 什么是双工
    1. 单工:任何时刻数据都只能单向传输
    2. 半双工:允许数据在两个方向上传输,在某个时刻只允许数据在一个方向上传输
    3. 双工:允许数据在任何时刻在两个方向上传输
  3. 如何保证正确性:可靠性指数据保证无损传输
    1. 使得无序的数据恢复原有顺序
    2. 多播时每个方法都能获得无损副本

建立连接(三次握手)

image.png

断开连接(四次挥手)

image.png

传输数据

报文拆分 image.png 顺序保证

image.png

image.png

image.png TCP头

image.png TCP标志位

image.png

image.png

image.png 流动窗口

image.png

IP协议

image.png

image.png

image.png

image.png

image.png

分片

  • 把数据切成片
  • 适配底层传输网络

image.png

协议头

image.png

image.png

延迟、吞吐量、丢包率

  • 延迟:1bit数据从一个终端到达另一个终端的时间
  • 吞吐量:单位时间内可以传输的平均数据量
  • 丢包率:发送出去的封包没有到达目的地的比例

相同成本下,三个条件一个提高往往另一个就会下降

image.png

寻址

image.png

image.png

image.png

image.png

image.png

路由

image.png

image.png

IPV6

image.png

工作原理

IPV6与IPV4相似,都需要切片、增加封包头、路由(寻址)几个阶段

image.png

与ipv4的区别

地址

  • 地址数量:ipv4有4个8位,总共32位,ipv6有8个16位,总共有128位
  • 分隔符号:
    • ipv4使用.如127.0.0.1
    • ipv6使用:如0123:2142:15AB......

image.png

  • 书写方式:ipv6可以简写 image.png

image.png

分组

全局单播

image.png image.png

本地单播

image.png

分组多播

image.png

新设备接入

image.png image.png

UDP协议

image.png

image.png

UDP封包格式

image.png

TCP与UDP的区别

image.png

场景分析

聊天室

image.png

HTTP协议适不适合UDP协议

image.png

Wireshark

image.png image.png

socket编程,实现http服务

image.png

image.png

image.png image.png