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

  

猜你喜欢

转载自www.cnblogs.com/tanghe1219/p/10652637.html