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
浙公网安备 33010602011771号