

一、操作位置
写的代码 100% 都是应用层,网络操作并不是跟随数据包随层部署执行的,而是始终站全局能跃层部署执行的。
二、通信路径
1. 单工
一条单向固定通道,永远只能某向通信。
2. 半双工
一条双向互通通道,一时间只能在进行一向通信。
3. 全双工
两条互逆的单向固定通道,可以同时进行双向通信。
三、丢包现象
物理信号干扰篡改、设备转发上限或接收方处理不过来的数据转接拥塞丢弃造成数据混乱就是丢包。
四、协议类型
1. UDP
面向 DatagramPacket 的通信。
1.1 单位
面向数据包 Packet 单位。
1.2 存储
四元组:源 + 目的 IP,源 + 目的端口号存储在 DatagramPacket 对象里面。
1.3 操作者
DatagramPacket 操作它包对象里面存储的通信标识。
1.4 不可靠
1.4.1 信号干扰时
UDP 头部的校验和计算发现丢包后结束丢弃数据包。
1.4.2 转接拥塞时
UDP 无视数据转接时的拥塞状态始终以恒定速率发包不管丢弃。
2. TCP
面向 Socket 的通信。
2.1 单位
面向字节流 Stream 单位。
2.2 存储
五元组:源 + 目的 IP,源 + 目的端口号,协议号、序列号、对方接收窗口大小存储在内核内存中的 TCB 结构体里面。
2.3 操作者
Socket 存的文件描述符 fd 交由内核操作对应 TCB 里面存储的通信标识。
2.4 可靠
2.4.1 信号干扰时
TCP 头部的校验和计算发现丢包后接收方丢弃数据包、不发回复 ACK 直到发送方等待超时后重发新包。
2.4.2 转接拥塞时
TCP 会缩小发送窗口来降低发送速率以减少丢弃。
五、服务接口
网络协议栈中,下层都会为上层提供服务接口。
1. Socket 文件
操作系统把传输层及以下层的硬件抽象成 Socket 文件,传输层把 Socket 文件交应用层,给针对指向。
1.1 DatagramPacket
DatagramPacket 是网卡接手的压缩五层网络数据的快递包裹,里面填写有:



