1、理查德森的unix网络编程有两样不足:一消息格式处理,特别是非阻塞IO上处理TCP分包问题;二是并发模型稍显陈旧,传统高并发采用事件驱动加非阻塞IO方式。
2、程序员面对的网络术语
Ethernet frame(帧)
IP packet(分组)
TCP segment(分节)
Application message(消息)
3、TCP协议栈开销不大,在千兆以太网(1Gbit/s=120MB/s)的带宽中,TCP的有效带宽118MB/s(112MiB/s)(dd命令测试)
本机测试:
4、课程安排,讲解网络编程的例子
a、non-concurrent exapmples 基本的非并行阻塞式网络编程
TTCP
Round-trip (clockerror between two hosts)UDP
NetCat
slow source 慢发,从应用层模拟网速慢的情景,特别在非阻塞时能否应对接受慢
b、concurrent examples 非阻塞式的并行网络编程
SOCKS proxy server (relay two TCP connections)request-response
Sudoku solver
Simple memecached
Broadcasting to multiple TCP peers (how to deal with slow receiver)
c、Data processing with multiple machines 使用多台机器并行处理数据
(现在流行使用hadoop、Spark线程分布式计算框架来做)
Parallel N-queues 例子经典的N皇后问题
Median of numbers across machines 多机求解中值
frequent queries 多级找出最频繁的问题
Distributed sorting 分布式排序
d、advanced topics 高级话题
RPC
load balancing
capacity of a serving system (QPS)
Fight for latency 延迟时间