通信基础

  1. 外设与总线
  2. 通信协议:TCP与UDP

总线

微机中总线一般有内部总线,系统总线,和外部总线。

内部总线:外围芯片与处理器之间的总线:IIC、SPI。

系统总线:PCI,最大传输速率可达132M/S

外部总线:RS232;RS484;USB。

  1. IIC、SPI、UART、单总线等要从时序、安全性、数据传输等多方面来讲

    总线接口 同步/异步 速率 工作方式 用线 总线拓扑结构
    UART 异步 慢(bund) 双工 2(TX,RX) 都有
    IIC 同步 半双工 2(SDA,SCL) 总线型
    SPI 同步 半双工 4(sclk,simo,somi,ss) 环形
    USB 同步 半双工 4(Vbus) 星型
    1-wire 同步 半双工 1

    同步与异步的区别:异步是需要等待的,同步是指及时响应 的问题。

    协议:TCP与UDP

    TCP/IP协议是一个协议簇。里面包括很多协议。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。

    TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议。

    img

TCP的三次握手

  1. 主机A通过向主机B发送一个含有同步序列号(SYN)的标志位的数据段给主机B,向主机B请求建立连接,用过这个数据段,主机A告诉主机B我想要和你通信;你可以用哪个序列号作为作为起始数据段来回应我。
  2. 主机B收到主机A的请求后,用 一个带有确认应答的(ACK)和同步序列号的(SYN)标志位的数据段响应主机A也告诉他两件事:1. 我已经接收你的请求了你可以传输数据了,你要用哪个序列号作为起始数据段来回应我。
  3. 主机A接收到这个数据段后,在发送一个确认应答,确认已收到主机B的数据段。我已经收到回复,我现在要开始传输数据了。

TCP的四次挥手

  1. 当主机A完成数据传输后,将控制为FIN置1 ,提出停止TCP连接请求
  2. 主机收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭将ACK置1;
  3. 由B端再次提出反方向的关闭请求,将FIN置1
  4. 主机A对主机B的请求进行响应,将ACK置1,双方向的关闭结束。

几个关键字解释:

  1. ACK TCP报头的控制位之一,对数据进行确认,确认由目的端发出,用它来告诉发送
  2. SYN 同步序列号,TCP建立时将这个位置1
  3. FIN 发送端完成发送人物段,当TCP完成数据传输需要断开,提出断开连接的一方将这位置位

DUP(User Data Protocol,用户数据报协议)是一个非连接的协议。

这里写图片描述

由于不需要建立连接,所以不断的往对方的主机发送UDP数据包,然年后对方主机确认收到消息及时反馈回来。(ping 操作就是基于这个原理)

TCP 与UDP的区别

1. 角度 TCP UDP
是否连接 面向连接(发送数前需要建立连接) 无需连接
是否丢包重试 实现数据传输时 的各种控制功能,可以进行丢包的重新发送,还可以对次序乱掉的包进行顺序控制 不会进行丢包重试,也不会纠正到达的顺序
模式 流模式(面向字节流) 数据包模式(面向报文)
对应关系 一对一 支持一对一,一对多,多对一和多对多的交互通信。
头部开销 最小20字节 只有8字节
可靠性 全双工,非常可靠无差错不丢失不重复且按照顺序到达 不可保证交付,不保证顺序到达
拥塞控制 有控制 有拥塞控制,因此网络出现

网络IO模型

https://www.cnblogs.com/anker/p/3254269.html

数据流向:

img

常见的IO模型有阻塞、非阻塞、IO多路复用、异步。