通信基础
- 外设与总线
- 通信协议:TCP与UDP
总线
微机中总线一般有内部总线,系统总线,和外部总线。
内部总线:外围芯片与处理器之间的总线:IIC、SPI。
系统总线:PCI,最大传输速率可达132M/S
外部总线:RS232;RS484;USB。
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,传输控制协议)是面向连接的协议。
TCP的三次握手
- 主机A通过向主机B发送一个含有同步序列号(SYN)的标志位的数据段给主机B,向主机B请求建立连接,用过这个数据段,主机A告诉主机B我想要和你通信;你可以用哪个序列号作为作为起始数据段来回应我。
- 主机B收到主机A的请求后,用 一个带有确认应答的(ACK)和同步序列号的(SYN)标志位的数据段响应主机A也告诉他两件事:1. 我已经接收你的请求了你可以传输数据了,你要用哪个序列号作为起始数据段来回应我。
- 主机A接收到这个数据段后,在发送一个确认应答,确认已收到主机B的数据段。我已经收到回复,我现在要开始传输数据了。
TCP的四次挥手
- 当主机A完成数据传输后,将控制为FIN置1 ,提出停止TCP连接请求
- 主机收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭将ACK置1;
- 由B端再次提出反方向的关闭请求,将FIN置1
- 主机A对主机B的请求进行响应,将ACK置1,双方向的关闭结束。
几个关键字解释:
- ACK TCP报头的控制位之一,对数据进行确认,确认由目的端发出,用它来告诉发送
- SYN 同步序列号,TCP建立时将这个位置1
- FIN 发送端完成发送人物段,当TCP完成数据传输需要断开,提出断开连接的一方将这位置位
DUP(User Data Protocol,用户数据报协议)是一个非连接的协议。
由于不需要建立连接,所以不断的往对方的主机发送UDP数据包,然年后对方主机确认收到消息及时反馈回来。(ping 操作就是基于这个原理)
TCP 与UDP的区别
| 1. 角度 | TCP | UDP |
|---|---|---|
| 是否连接 | 面向连接(发送数前需要建立连接) | 无需连接 |
| 是否丢包重试 | 实现数据传输时 的各种控制功能,可以进行丢包的重新发送,还可以对次序乱掉的包进行顺序控制 | 不会进行丢包重试,也不会纠正到达的顺序 |
| 模式 | 流模式(面向字节流) | 数据包模式(面向报文) |
| 对应关系 | 一对一 | 支持一对一,一对多,多对一和多对多的交互通信。 |
| 头部开销 | 最小20字节 | 只有8字节 |
| 可靠性 | 全双工,非常可靠无差错不丢失不重复且按照顺序到达 | 不可保证交付,不保证顺序到达 |
| 拥塞控制 | 有控制 | 有拥塞控制,因此网络出现 |
网络IO模型
https://www.cnblogs.com/anker/p/3254269.html
数据流向:

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