Prerequisites

image.png

Wha Unix Network Programming didn’t teach

image.png

Highlights of this course

image.png

常见的误解

  • 减少动态内存分配
  • 减少STL的使用

Layered Network

image.png
Ethernet frame: 帧
IP packet: 组

  • 一般不去关注IP分片

TCP segment: 节
Application message: 消息

Common pitfalls of novices

image.png
TCP接受数据不完整

  • TCP连接断开的时机与条件
  • 断开过早,可能导致协议栈RST分解, 将连接重置
  • 阻塞编程: SO_LINGER
  • 非阻塞编程: SO_LINGER没用
  • 在设计TCP协议时要考虑断连

直接发送C的struct

  • 字节对齐, 破坏ABI, 导致第三方API Core Dump
  • 扩展性差: 增加新字段, 要升级
  • TCP/IP书的示例
    • 定长的字段
    • bitfield

TCP自连接

  • TCP客户端向本机的服务端发送信息, 本机服务端未启动时, 客户端回自己和自己建立连接

TCP/IP over 1Gb Ethernet

image.png