本篇主要内容是 Go HTTP 原理和 RPC 相关知识。 在进行原理讲解之前我觉得有必要熟悉一下 TCP 传输原理和 C Socket 编程,因为 Go 是在 C 的基础上进行封装的,这样对哪些属于 C,哪些属于 Go 有一个清晰的了解,也更能避繁就简。
C Socket 编程
一切皆文件,I/O 操作无处不在,文件、设备、管道、Socket等都是 I/O 操作。C 语言对文件 I/O 操作分两种,一种是无缓冲的(用户层无缓存区),返回的是文件描述符(int 整型),代表函数是 open、read、write 和 socket 等;另一种是有缓冲的(用户层设计了缓存区),返回是的数据流 Stream(FILE 结构体),代表函数是 fopen、fread、fwrite、putc、getc、fputs、fgets 和 fprintf等;不过 C 标准已经不再支持对文件(这里没有包括 socket)的无缓冲操作。