1. 网络编程概要
1. 网络分层
以太网帧 IP分组 TCP分段 应用层消息
2. 网络编程的坑
1. TCP收到不完整的数据。TCP连接断开的时机不对。close太早,容易出现reset连接重置;在阻塞编程中可以使用so_linger选项,在非阻塞编程中使用应用层协议处理。 2. 发送一个C struct到对端,使用pack选项,导致第三方库奔溃 3. TCP的自连接。localhost:54321 <--> localhost:54321。客户端和自己连接
3. TCP/IP over 1Gb
实验1: atom --> e6400 atom: dd if=/dev/zero bs=1MB count=1000 | nc e6400 5001 e6400: nc -l 5001 > /dev/null 注意: 在ubuntu默认使用的是nc-freebsd版本,要安装traditional版本 实验2:本机使用文件进行测试 atom: nc -l 5001 > /dev/null atom: time nc localhost 5001 < 1G_file 实验3: 使用pv -W显示速度 atom: nc -l 5001 | pv -W > /dev/null atom: dd if=/dev/zero bs=1MB count=1000 | nc localhost 5001 实验结果: 1. 118MB/s between atom and {e640, e350} 2. 580MB/s on atom, dd | nc, nc -l > /dev/null 3. 1074MB/s on atom, nc < file, nc -l > /dev/null