Browsed by
Category: 计算机网络

Linux 下C语言简单echo server的实现

Linux 下C语言简单echo server的实现

本文为 高性能网络编程学习 系列文章的第0篇 本文目的为讲述简单的echo server的实现, echo server的含义如字面意思, 客户端发送什么数据,服务器就返回什么数据作为响应,本系列文章的目的不在于实现复杂的服务器端业务逻辑,在于学习如何开发出高性能的网络通信程序,因而所有的代码均为echo server的实现 Linux下用C进行网络通信的话, 需要使用socket, 即Linux socket interface, socket是一种IPC(Inter Process Communication进程间交互)的方式,同时socket还可以允许跨host,即在不同的主机上的进程之间进行通信,在Linux上,所有的IO操作都是通过对文件的写入读出实现的,socket也作为一种文件存在,可以通过read, write进行IO 客户端我们采用的是一个benchmark程序,即1000个client,每一个client发送1000个请求,客户端为了简洁和快速编写,使用golang开发,之后所有的server都使用这个benchmark进行测试,代码如下 package main import ( “flag” “fmt” “io” “net” “sync” “time” ) var wg sync.WaitGroup var okCliCnt = 0 var okIPCCnt = 0 var mu sync.Mutex var ( ConnType = “tcp” ConnAddr = “” ClientCnt = 1000 RequestCnt = 1000 ) func init() { flag.StringVar(&ConnAddr, “S”, “127.0.0.1:5210”, “specify the address to connect”) flag.IntVar(&ClientCnt, “cno”, 1000, “number of clients to request”) flag.IntVar(&RequestCnt, “rno”, 1000, “number…

Read More Read More

计算机网络的体系结构(Computer Network Architecture)

计算机网络的体系结构(Computer Network Architecture)

计算机网络的体系结构 几个重要概念: 接口 服务 协议 哲学家模型: [哲学家模型的图片] 哲学家模型体现了两个重要的问题: 不同系统的对等层(peer layer)之间(秘书1与秘书2 翻译1与翻译2)存在协议   同一系统的上下层之间(哲学家1 与翻译1 , 翻译1 与 秘书1 )是服务和被服务的关系,不存在协议,服务的调用通过两层之间的接口进行 保持对上下层提供的服务不变的前提下, 对等层的协议可任意规定(如 两个翻译家可以都使用Spanish或者都使用Dutch进行交流 不影响哲学家收到正确的信息) 计算机网络的体系结构 1.ISO提出的 OSI/RM 七层结构 [七层结构图] 2.TCP/IP RM 结构 [五层结构图] 每一层的作用: 应用层: 提供各种应用程序服务 传输层:保证报文能够正确,按序到达 网络层:路由 网络硬件, 后来分为两层: 数据链路层: 比特差错校验 物理层: 实现透明的比特传输