文章目录

  • 一、传输层 TCP / UDP 协议 ★
  • 二、寻址端口号 ★
  • 三、UDP 协议特点
  • 四、UDP 协议首部格式
  • 五、UDP 校验
  • 六、TCP 协议 特点 ★
  • 七、TCP 报文段首部格式
  • 八、TCP 报文段首部 666 控制位
  • 九、TCP 连接建立 ★★
  • 十、TCP 连接建立 相关报文段 字段
  • 十一、TCP 连接释放 ★★
  • 十二、TCP 可靠传输机制 ★★
  • 十三、TCP 快速重传 机制
  • 十四、TCP 流量控制 ★★
  • 十五、TCP 拥塞控制
  • 十六、TCP 拥塞控制算法 ★★
  • 十七、慢开始 和 拥塞避免 算法 ★
  • 十八、快重传 和 快回复 算法★

一、传输层 TCP / UDP 协议 ★


传输层 协议 :

① UDP 协议 : 无连接 用户数据报协议 ;

  • 无连接 无确认 : 数据传输前 , 不建立连接 , 接收端收到 UDP 报文后 , 不需要给出确认 ;
  • 特点 : 不可靠 , 无连接 , 延迟小 , 适用于少量数据传输 ;

② TCP 协议 : 面向连接 传输控制协议 ;

  • 面向连接 : 传输数据前 , 建立连接 , 数据传输后 , 释放连接 ;
  • 无多播 : 不提供 广播 多播 服务 ;
  • 额外开销 : TCP 提供可靠的 , 面向连接的 传输服务 , 需要额外开销 , 如 : 收据接收确认 , 流量控制 , 计时器 , 连接管理 ;
  • 协议特点 : 可靠 , 面向连接 , 时延大 , 适用于大数据量传输 ;

复用与分用 :

① 复用 : 应用层 多个 应用进程 通过传输层 传输到 网络层 中 ;

② 分用 : 传输层 从 网络层 接收数据 , 分发给不同的 应用进程 ;

参考 : 【计算机网络】传输层 : 传输层概述 ( 设备层级 | 传输层功能 | TCP 协议 | UDP 协议 | 复用与分用 | 端口号 | 套接字 )

二、寻址端口号 ★


端口号 : 软件端口 , 逻辑端口 , 用于标识 主机中的 应用程序 ;

① 端口号 只在主机 本地有实际意义 ;

② 取值范围 : 端口号长度 161616 位 , 取值范围 000 ~ 655356553565535 ;

端口号分类 :

① 服务端使用的端口号 :

  • 熟知端口号 : 000 ~ 102310231023 , 给 TCP/IP 的重要程序使用 ;
  • 登记端口号 : 102410241024 ~ 491514915149151 , 给普通应用程序使用 ;

② 客户端使用的端口号 : 491524915249152 ~ 655356553565535 , 客户端程序动态分配 ;

应用程序的 熟知端口号 对应 :

  • FTP : 212121
  • TELNET : 232323
  • SMTP : 252525
  • DNS : 535353
  • TFTP : 696969
  • HTTP : 808080
  • SNMP : 161161161

参考 : 【计算机网络】传输层 : 传输层概述 ( 设备层级 | 传输层功能 | TCP 协议 | UDP 协议 | 复用与分用 | 端口号 | 套接字 )

三、UDP 协议特点


四、UDP 协议首部格式


五、UDP 校验


六、TCP 协议 特点 ★


TCP 协议 特点 :

① 面向连接 : TCP 协议的连接是 “虚连接” ;

② 点对点 : TCP 协议 是 点对点 的 , 是两个端点之间的连接 ;

③ 可靠传输 : TCP 协议提供 可靠服务 , 按序到达 , 没有丢失 , 没有重复 ;

④ 全双工 : TCP 协议通信是全双工通信 ;

  • 发送缓存 : 存储 准备发送的数据 , 已经发送尚未确认送达的数据 ;
  • 接收缓存 : 存储 按序到达尚未被读取的数据 , 不按序到达的数据 ;

⑤ 面向字节流 : TCP 协议将 数据 看做 无结构的字节流 ;

七、TCP 报文段首部格式


TCP 报文段首部格式 :

① TCP 报文段组成 : 由 TCP 首部 和 TCP 数据部分 组成 ;

② TCP 首部格式 : 由 202020 字节固定首部 + 可变的选项 + 填充部分 组成 ; 其中 可变选项 + 填充部分 是 444 字节整数倍 , 填充部分的意义就是为了让整个 TCP 首部大小是 444 字节整数倍 ;

③ 源端口 / 目的端口 : 进程端口号 , 每个 222 字节 , 取值范围 000 ~ 655356553565535 ;

④ 序号 : TCP 连接中 , 字节流中的 字节按照顺序编号 , 每个字节都有一个序号 , 本首部中的序号是本 TCP 报文 数据部分第一个字节的序号 ;

⑤ 确认号 : 期望收到 对方 下一个报文段 第一个数据字节的序号 ; 序号为 100100100 , 说明 999999 及之前的数据都已经收到 ;

⑥ 数据偏移 : TCP 报文段 数据部分起始位置 , 距离 TCP 报文段的起始位置 , 有多远 , 单位 444 字节 ; 即 整个 TCP 报文段 中 TCP 首部的长度 ;

⑦ 窗口 : 发送本报文段一方的 接收窗口 ( 发送方 ) , 即允许对方发送的数据量 ( 接收方 ) ;

⑧ 检验和 : 检验首部 + 数据 ; 检验时 加上 121212 字节伪首部 , 第 444 字段都是 666 ;

⑨ 紧急指针 : 当 URG 紧急标志位 为 111 时 有效 , 表明本报文段的紧急数据字节数 ; 如 : 紧急指针值为 888888 , 说明 报文段的 数据部分 前 88 字节时 紧急数据 ;

⑩ 选项 : 最大报文段长度 MSS , 窗口扩大字段 , 时间戳 , 选择确认信息 等 ; 如果选项 不足 444 字节整数倍 , 使用填充 000 使 TCP 首部是 444 字节整数倍 ;

八、TCP 报文段首部 666 控制位


TCP 报文段首部 666 控制位 :

① URG ( 紧急位 ) : URG =1= 1=1 时 , 表明 该报文段中有紧急数据 , 优先级很高 , 尽快传送 , 不在缓存中排队 , 结合紧急指针字段使用 ;

② ACK ( 确认位 ) : ACK =1= 1=1 时 , 确认号有效 , 连接建立后 , 所有的报文段的 ACK 都必须设置为 111 ;

③ PSH ( 推送位 ) : PSH =1=1=1 时 , 接收方 要 尽快交付接收应用进程 , 不用等到接收缓存满后再交付 ;

④ RST ( 复位 ) : RST =1=1=1 时 , TCP 连接中出现错误 , 必须释放当前连接 , 重新建立连接 ;

⑤ SYN ( 同步位 ) : SYN =1=1=1 时 , 表明该报文是一个 连接请求 / 连接接收 报文 ;

⑥ FIN ( 终止位 ) : FIN =1=1=1 时 , 表明该报文发送完毕 , 释放连接 ;

九、TCP 连接建立 ★★


TCP 连接建立过程 : 客户端 与 服务器 的 TCP 连接建立过程 ;

① 客户端 发送 连接请求报文段 , 该报文段 没有应用层数据 ;

  • SYN = 1 , 同步位 , 如果为 111 , 说明该位是连接请求 / 连接接收 报文 ; 本次的情况是 连接请求 ;
  • seq = x ( 随机 ) , 序号位 , 随机产生一个字节 , 确认号此时是无效的 , 客户端没有收到服务器发送的报文段 , 不知道期待获取什么序号的数据 ;
  • ACK = 0 , 确认位 , 连接还没有建立成功 , 此时是 000 , 之后连接建立成功后置位 111 ;

② 服务器端 收到 连接请求报文段 , 为 TCP 连接 分配 缓存和变量 , 向客户端返回 确认报文段 , 允许客户端连接 , 此时该报文段 也没有应用层数据 ;

  • SYN = 1 , 同步位 , 如果为 111 , 说明该位是连接请求 / 连接接收 报文 ; 本次的情况是 连接接收 ;
  • seq = y ( 随机 ) , 序号位 , 随机产生一个字节 , 确认号此时是无效的 , 客户端没有收到服务器发送的报文段 , 不知道期待获取什么序号的数据 ;
  • ACK = 1 , 确认位 , 连接建立成功后置位 111 ;
  • ack = x + 1 , 确认号 , 该 ack 与上面的 ACK 是配套使用的 ; 只有 ACK = 1 确认位为 1 时 , 确认号 ack 才生效 ;

③ 客户端 收到 服务器端 返回的 确认报文段 , 客户端为 TCP 连接分配缓存和变量 , 同时向 服务器端 返回 确认报文段 的 确认 , 并可以 携带实际传输的数据 ;

  • SYN = 0 , 同步位 , 说明该位 不是 连接请求 / 连接接收 报文 ;
  • seq =x+1 , 序号位 , 表明本次发送的数据的第一个字节的序号 ;
  • ACK = 1 , 确认位 , 连接建立成功后置位 111 ;
  • ack = y + 1 , 确认号 , 期望收到 服务器端 下一次 发送的序号 ; 该 ack 与上面的 ACK 是配套使用的 ; 只有 ACK = 1 确认位为 1 时 , 确认号 ack 才生效 ;

总结 :

  • SYN : 在开始的两个报文段为 111 , 这是建立连接的前两次握手 ; 等到真实传输数据时 , 该位 为 000 ;
  • ACK : 只在第一次握手时 为 000 , 此时还没有建立连接 , 之后服务器端接收后 , 知道连接建立成功了 , ACK 设置为 111 ;
  • 序号位 : 随机值 , 客户端生成 发送的 随机序号位 x , 服务器端生成 发送的 随机序号位 y ;
  • 确认号 : 对应上述 序号位 的是 确认号 , 客户端 生成的随机序号 x 是 服务器端 期待的接收的序号 确认号 , 服务器端 生成的 随机序号 y 是 客户端 期待接收的 序号 确认号 ;

十、TCP 连接建立 相关报文段 字段


上述涉及到的 TCP 报文的 四个字段 :

  • 序号 seq : TCP 连接中 , 字节流中的 字节按照顺序编号 , 每个字节都有一个序号 , 本首部中的序号是本 TCP 报文 数据部分第一个字节的序号 ;
  • 确认号 ack : 期望收到 对方 下一个报文段 第一个数据字节的序号 ; 序号为 100100100 , 说明 999999 及之前的数据都已经收到 ;
  • 同步位 SYN : SYN =1=1=1 时 , 表明该报文是一个 连接请求 / 连接接收 报文 ;
  • 确认位 ACK : ACK =1= 1=1 时 , 确认号有效 , 连接建立后 , 所有的报文段的 ACK 都必须设置为 111 ;

上述 涉及到 TCP 报文内容 , 参考博客 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

十一、TCP 连接释放 ★★


TCP 连接释放 : 四次挥手 ;

① 客户端 : 客户端 发送 连 接释放报文段 , 停止发送数据 , 发起 TCP 连接关闭流程 ; 连接释放报文段 关键字段如下 :

  • FIN = 1 : 表明该报文发送完毕 , 释放连接 ;
  • seq = u : 序号位设置成 u

② 服务器端 : 返回 确认报文段 , 客户端收到该报文段后 ; 确认报文段 关键字段 如下 :

  • ACK = 1
  • seq = v : 服务器端生成的发送序号 ;
  • ack = u + 1 : 期待收到 客户端 发送的 u 之后的报文段 u + 1 ;

③ 服务器端 : 发送完毕 上面的 确认报文段后 , 发送 连接释放报文段 , 关闭 TCP 连接 ( 该链接时 客户端 -> 服务器端 方向的连接 ) ; 连接释放报文段 关键字段如下 :

  • FIN = 1
  • ACK = 1
  • seq = w : 服务器端 生成的序号 ;
  • ack = u + 1 : 该步骤 与 步骤 ② 中 , 没有收到客户端的报文 , 因此 ack 仍然保持 u + 1 不变 ;

④ 客户端 : 收到 服务器端 连接释放报文段 , 回复 确认报文段 , 等待 2MSL ( 最长报文寿命 ) 后 , 关闭 TCP 连接 ( 服务器 -> 客户端 方向连接 ) ; 确认报文段 格式 :

  • ACK = 1
  • seq = u + 1 : 第一次回收时是 u , 第四次挥手 时 , 是 u + 1 ;
  • ack = w + 1 : 服务器端发送的数据序号是 w , 本次期待收到下一次 w + 1

十二、TCP 可靠传输机制 ★★


TCP 实现可靠传输机制 :

① 校验 : 使用 伪首部 进行校验 ;

② 序号 : 每个字节编一个序号 ; 序号 字段 的值是 报文段 第一个字节的序号 ;

③ 确认 : 累计确认 ;

④ 重传 : 重传 与 确认机制 结合使用 , 发送方 如果 在 规定时间内 , 没有收到 接收端的确认 , 就要重发报文段 ;

  • 重传时间 : TCP 使用 自适应 算法 , 动态改变重传时间 RTTs , 该时间成为 加权平均往返时间 ;

十三、TCP 快速重传 机制


TCP 快速重传 机制 : 使用 冗余确认 机制 , 实现快速重传 ;

① 冗余 ACK 确认信息 : 接收方 接收到 接收到 比 期望序号大的 失序报文段 , 就向 发送方 发送 冗余 ACK , 表明下一个期待的序号 ;

② 快速重传示例 :

  • 发送方 发送 1 , 2 , 3 , 4 , 5 报文段 ;
  • 接收方 收到 1 号报文 , 向 发送方 返回 1 号 确认 ACK ;
  • 2 号报文 丢失 ;
  • 接收方 收到 3 号报文 , 向 发送方 返回 1 号 确认 ACK ;
  • 接收方 收到 4 号报文 , 向 发送方 返回 1 号 确认 ACK ;
  • 接收方 收到 5 号报文 , 向 发送方 返回 1 号 确认 ACK ;
  • 如果 发送方 连续收到 3 个相同 确认号 的 冗余 ACK , 此时认为该确认号 报文丢失 , 重传该报文<> ; 如 本次的 222 号报文丢失 , 一直发 1 号确认信息 ;

十四、TCP 流量控制 ★★


参考 : 【计算机网络】传输层 : TCP 流量控制 ( 流量控制过程 | 持续计时器机制 )

TCP 流量控制 :

① 流量控制 : 控制 发送方 降低发送速率 , 避免 接收方 来不及接收 , 丢弃数据 , 导致重传 ;

② 滑动窗口机制 : TCP 通过 该 滑动窗口机制 实现 流量控制 ;

③ 滑动窗口 调整 : 接收方 根据 接收缓存大小 , 动态调整 发送方 发送窗口 大小 ;

④ 接收方窗口 rwnd : 接收方 设置 确认报文段 中含有 窗口字段 , 将 rwnd 通知给发送方 ;

⑤ 发送窗口 : 发送方 发送窗口 取 接收窗口 rwnd , 与 拥塞窗口 cwnd , 中较小的值 ;

TCP 流量控制 过程 : 发送端 向 接收端 发送数据 ;

① 连接建立 : 接收端 向 发送端 发送 接收窗口 rwnd = 400 ;

② 发送端 发送数据 :

  • 发送 1 ~ 100 字节 , 此时还能再发送 300 字节 ; ( seq = 1 )
  • 发送 101 ~ 200 字节 , 此时还能再发送 200 字节 ; ( seq = 101 )
  • 发送 201 ~ 300 字节 , 该报文段丢失 ; ( seq = 201 )

③ 接收端 返回数据 : 返回 ACK = 1 , ack = 201 , rwnd = 300 ;

  • 表示 接收端 接收到了 201 之前的数据 , 期待发送 201 数据 , 接收窗口 rwnd 大小为 300 字节 ;
  • 发送方此时 只能发从 201 开始的 300 字节滑动窗口大小的数据 , 即发送 201 ~ 500 之间的数据 , 共 300 字节 ;

④ 发送方 发送数据 :

  • 发送 301 ~ 400 字节 , 此时还能再发送 100 字节数据 ;
  • 发送 401 ~ 500 字节 , 此时滑动窗口的数据都发送完毕 , 不能再发送了 ;
  • 发送方 的 超时重传计时器 , 时间到期 , 重传 201 ~ 300 字节数据 , 此时不能发送 新数据 ;

⑤ 接收方 接收数据 : 接收方接收到了上述 所有发送的数据 , 返回 ACK = 1 , ack = 501 , rwnd = 100 ; 表示 期待 发送方发送 501 之后的数据 , 接收窗口 rwnd 设置为 100 字节 ;

⑥ 发送方 发送数据 : 发送方发送 501 ~ 600 字节数据 , 此时滑动窗口占满 , 不能继续发送数据 ;

⑦ 接收方 接收数据 : 接收方接收到了 501 ~ 600 字节数据 , 此时回送 ACK = 1 , ack = 601 , rwnd = 0 ; 设置期望发送 601 之后的数据 , 接收窗口设置为 0 ; 此时不允许发送方再发送了 ;

十五、TCP 拥塞控制


TCP 拥塞控制 :

① 拥塞出现表现 : 资源需求总和 大于 可用资源 ;

② 拥塞问题发展 : 网络中 资源 供应不足 -> 网络性能降低 -> 网络吞吐量随着负荷增加而降低

③ 拥塞控制 : 防止数据大量注入到网络中 , 降低整体网络中主机的发送速率 , 流量控制 是 降低一台主机的发送速率 ;

④ 流量控制 与 拥塞控制 : 流量控制 是 点到点 的问题 , 拥塞控制 是 全局性 问题 ;

十六、TCP 拥塞控制算法 ★★


TCP 拥塞控制算法 :

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

TCP 拥塞控制相关术语 :

① 单向传输 : 拥塞控制假定单向传输数据 , 发送方 向 接收方 发送 数据 , 接收方 向 发送方 回送 确认信息 ;

② 发送窗口 : 接收方 缓存空间 足够大 , 发送窗口大小 取决于 网络拥塞程度 ; 发送窗口大小 是 接收窗口 rwnd 和 拥塞窗口 cwnd 中的 较小的值 ;

③ 接收窗口 : 接收方 根据 接收缓存 设置 接收窗口 大小值 , 同时将该大小 告知发送方 , 可以反映接 收方容量 ;

④ 拥塞窗口 : 发送方 估算 网络拥塞程度 , 设置 合适的 拥塞窗口 值 , 反映当前 网络容量 ;

( 知道每个算法的原理 , 细节仅做了解 )

十七、慢开始 和 拥塞避免 算法 ★


坐标系说明 :

① 纵坐标 : 纵坐标 是 拥塞窗口 cnwd 大小 , 单位是 一个报文段 , 长度是一个最大报文段长度 MSS ;

  • 如 : 纵坐标的 4 指的是 4 个 MSS , 8 指的是 8 个 MSS ;

② 横坐标 : 横坐标 是 传输轮次 ;

  • 往返时延 : 一个传输轮次 是 发送一批报文段 , 并接收到它们的 确认信息 所花费的时间 ; 即 RTT ;
  • 如 : 发送方 向 接收方 发送 N 个报文段 , 发送方 发送完毕后 , 接收到所有 N 个 报文段的确认信息 , 所花费的时间 , 就是 一个传输轮次 ;
  • 报文段发送间隔 : 也可以理解成 发送方 开发发送一批 拥塞窗口 中的报文段 , 到 开始发送 下一批 拥塞窗口 报文段 的时间 ;

慢开始 和 拥塞避免 算法 :

① 慢开始 : 拥塞窗口 开始设置成 1 , 每隔一个 传输轮次 , 收到上一个报文段的确认报文后 , 拥塞窗口翻倍 , 即变为之前的 两倍 ;

② 慢开始门限值 ( ssthresh ) : 当 拥塞窗口 到达 慢开始门限值 ( ssthresh ) 初始值时 , 停止指数级增长 , 开始线性增长 ;

③ 拥塞避免 : 进入到 慢开始门限值 后 , 开始进行 拥塞避免算法 , 每个传输轮次 , 拥塞窗口 增加 1 ;

④ 网络拥塞 : 当 拥塞窗口 增加到一定值 , 检测到了 网络拥塞 , 此时瞬间将 拥塞窗口降为 1 ; 继续执行慢开始算法 , 新的 慢开始门限值 变为 网络拥塞时 的 拥塞窗口的 1/2 大小 ;

拥塞窗口改变时机 :

  • 收到上一个报文段的确认报文后 , 拥塞窗口翻倍 ;
  • 收到上一个报文段的拥塞信息后 , 拥塞窗口变为 1 ;

十八、快重传 和 快回复 算法★


快重传算法 : 收到 3 个冗余的 确认后 , 执行快重传算法 ;

示例 : 发送方 给 接收方 发送 1 2 3 4 5 , 五个报文 , 2 号报文丢失 , 如果收到 3 4 5 号报文 , 其中会携带期待 发送方 发送 2 号报文 , 此时触发 快重传 算法机制 , 在超时计时器到时之前 , 快速发送 丢失的 2 号 报文 ;

快回复算法 : 与 上面的 拥塞避免算法的 区别是 , 出现 网络拥塞 之后 , 拥塞窗口 不降为 1 , 而是降低到 慢开始门限值 , 即当前的 拥塞窗口大小的 1/2 , 然后线性增加 拥塞窗口 ;

【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★相关推荐

  1. 计算机网络协议的特点,计算机网络传输层协议类型与特点

    我们在上文中给大家简单介绍了计算机网络体系的七层结构,而今天我们就一起来了解一下,计算机网络传输层协议类型与特点. 传输层涉及到两个重要的协议:UDP和TCP,本节我们重点介绍这两个协议. 1.UDP ...

  2. 5.3.1计算机网络传输层之TCP可靠传输

    文章目录 0.前言 1.TCP可靠传输简介 2.序号 3.确认 4.重传 0.前言 再看此篇文章之前,得熟悉一下TCP首部报文等知识 计算机网络传输层之TCP协议(tcp协议特点.tcp报文段首部格式 ...

  3. 计算机网络传输层之SR协议

    系列文章目录 第二章计算机网络传输层之可靠数据传输之流水线机制与滑动窗口协议-Selective Repeat协议(SR协议) 计算机网络传输层之SR协议 系列文章目录 九.Selective Rep ...

  4. 计算机网络 - 传输层

    一.传输层 为进程提供通用数据传输服务.由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议.运输层包括两种协议:传输控制协议 TCP,提供面向连接.可靠的数据传输服务,数据单位为报 ...

  5. 计算机网络——传输层の选择题整理

    传输层提供的服务 1.可靠传输协议中,可靠指的是() A.使用面向连接的会话 B.使用尽力而为的传输 C.使用滑动窗口来维持可靠性 D.使用确认机制来确保传输的数据不丢失 解析:选D 对于A,使用面向 ...

  6. 计算机网络--传输层

    传输层:负责应用之间的数据传输(通过端口的描述 - -描述哪两个进程在进行通信)- -UDP/TCP UDP:无连接,不可靠,面向数据报   udp协议格式: 特性解析:  无连接:不需要建立连接,只 ...

  7. 计算机网络 | 传输层的两个重要协议——TCP、UDP

    目录 传输层概述 传输层的作用 运输层端口号.复用与分用的概念 发送方的复用和接收方的分用 UDP和TCP的对比 TCP的流量控制 TCP的拥塞控制 TCP的差错控制 UDP的差错控制的和流控 TCP ...

  8. 计算机网络-传输层(传输层概述,TCP,UDP协议概述)

    文章目录 1. 传输层概述 2. TCP,UDP协议概述 3. 传输层的寻址与端口 1. 传输层概述 传输层是只有主机才有的层次. 传输层功能: 传输层提供进程和进程之间的逻辑通信. 网络层提供主机到 ...

  9. 计算机网络 | 传输层 :UDP与TCP协议详解

    传输层 UDP UDP的协议格式 UDP的特点 基于UDP的应用层知名协议 UDP如何实现可靠传输 TCP TCP的协议格式 TCP的特点 连接管理机制 三次握手 四次挥手 保活机制 问题补充 可靠传 ...

最新文章

  1. 让SpringBoot不再需要Controller、Service、Mapper,这款开源工具绝了!!!
  2. Windows 7等多系统的备份与恢复
  3. linux systemd服务,systemd服务管理
  4. 计算机在能源领域的应用,计算机在能源中的应用
  5. 外挂学习之路(6)--- 选怪call
  6. C#和NewSQL更配 —— CockroachDB入门
  7. React基础篇(五)css样式的使用
  8. 几种无线通讯介绍与比较(蓝牙,WiFi,IrDA,NFC,Zigbee,UWB)
  9. enumerable java_ruby中的Enumerable的使用
  10. jquey 阻止表单提交
  11. 五秒原则,做一件事之前数 5 秒,1,2,3,4,5 立马去做。比如睡觉:数五秒,立马放下手机,闭眼。...
  12. 解决ubuntu进行远程连接时出现密码认证失败的问题
  13. 超级详细的SIMATIC STEP7 V5.5安装
  14. 华硕触摸板驱动ASUS PTP Driver安装失败解决办法
  15. 如何使用代理服务器下载文件_8uftp怎么下载客户文件,怎么使用8uftp下载客户文件?...
  16. MAC - 必备软件安装与使用
  17. python gps显示_MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
  18. tensorflow聊天机器人python实现_用 TensorFlow 做个聊天机器人
  19. kali下使用phpstudy
  20. win11升级后黑屏问题

热门文章

  1. 红外线接受程序 理解
  2. zTree 显示为‘aa’,当选择aa时,传的参数为‘22’
  3. SBT搭建Spark
  4. 架构设计系列-前端模式的后端(BFF)翻译PhilCalçado
  5. JS写的排序算法演示
  6. div样式调整.txt
  7. 再探Javascript词法作用域
  8. 获取其他进程中ListView的文本
  9. php+ tinymce粘贴word
  10. leetcode71