https://www.bilibili.com/video/BV1Ks41177oi?from=search&seid=5543458349378694564
IO
语言方面 精简
不像Python
无统一
游戏服务器
工作量 不是 网络连接
定义 一个 struct
有两个成员
上个世纪 60 年代
Dos 还没有
七层 打包 剥离
学术层 精细
一个层 好多个 协议
以太网 也 可以有 其他 连接方式
Transport —》 UDP TCP
包头 包尾 检查 错误
数据 放到 footer 接收方 校验 是否是 frame data 那么多
Link 也有除了 以太网 这 种封装方式 以外的
操作系统 做好了
封装 对 framedata 长度 有要求
46字节 最少 可以 用 00填充
1500字节
标准 802.3 1492 字节 MTU 最大传输单元
消息 大于 就在 IP分片
1M 在 Link 链路层 要 拆成 多少个 包
猫~ 200多个 字节
打包 限定是由 最小 那个 决定 (小水管 )
debug 方式
发布 版本 地址 值 差
4 8
64 位
为什么 值差 不一样
IP协议 不能保证 IP 数据报 能够 成功 到达 目的地
提供 最好的 传输服务
中间 Router 内存 用完
ip层 简单 处理 丢掉 整个 数据包
发送 ICMP 协议 消息 传达回来
所以 用 TCP 协议 来保证 消息 送达
IP不维护 后续 传递 信息 的 状态
每个数据报 相互 独立
可以 不按照 顺序 进行发送
也可以 各个 数据包 不同路由选择链路 途径 发送 A-> B 1 2 B收到 2 1
同一个 计算机 就可以保证 顺序
操作系统 是 另一个 从 尾开始 little endian 先传 最后面的 依次
但是 在 网络中 传输 是 BIg endian
跟 cpu 相关
内存地址 存储方式
Header 最小 20 字节
ipv4 6 版本 前 4个bit
在对[数据流] 进行流分类时,
在三层通过标记IP包头的TOS字段服务类型(TOS)
(8 bit)字段包括
一个3 bit的优先权子字段(现在已被忽略),
4 bit的TOS子字段和
1 bit未用位但必须置0。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。
16位表示
小端 little endian 最高位 放在后
大端 BIg endian 最低位 放在后
验证 系统 是 大端 还是 小端 系统
32 64 传递 -1 减到0 时 就 丢掉 再返回 个 错误信息
8bit 定义 传输 协议 TCP/UDP
32位 整形 最多 表示 多少个 数 42 亿
上世纪 60 年代
ipv6 128bit
跟硬件
租用服务器 关系 带宽
强连接 特定 场合
联合 特殊的类 通过关键字union进行定义,一个union可以有多个数据成员
union 成员 共用 内存地址
4个 字节 的 int8 位 数组
和int32 的 整数
大小 一样 4个 字节 内存
容器 C++ 算法
c++ vector 类似于 数组
比数组安全
容量可拓展
以太网 网卡
ip 地址 内网 子网掩码
Router location host
无连接 不可靠
数据块 报文段 TCP---->IP层
TCP 发完消息建立一个 Timer
收到数据包 确认 (延时确认)
延时超时 发包几次 消息 无法送达
以太网帧 1500字节 最大
往上 转 一层一层 防止 很多 包 一个一个 回
很短时间 内 传输速度 可以的 话 只 确认 一次就行
首部 数据 校验和
看数据 有没有错 有一个响应 保证 TCP层 没有错
流量控制 客户端 服务端 TCP 发送 接收方
都 分配 固定足够 内存
接收 只允许 接收 发过来的 定量数据 防止 网速慢 然后 一堆发过来(能要多少 给多少)
防止 较快 机器 把 较慢 机器 缓冲区 用完 (无法提供服务 )
TCP 把 应用程序 的 数据 封装 (字节流 )
不知道 粘包 。。。 先收 或者 后收 或者 一起 全收了
IP 可能重复 乱序
以太网 最小 数据 传输 46字节
IP 20 TCP 20 字节
6 个字节 补零
带不带数据 对 链路层 没关系
应用层 有关系
IP + Port ==== Socket (插口配对 )
包 标记 sequence number
确认 消息包 Ack (ACK 标记 设置后 有作用) Acknowledgement number
跟 延时确认有关
发一个 确认 消息 后 确认 了 上次 发回来 的 哪个 包 是 OK的
12字节 前
checknum 检验和 windows可选