戳蓝字「TopCoder」关注我们哦!
说了网络通信,大家肯定都不会陌生,比如各种分布式系统、大数据框架等等都要涉及到网络通信,由于大多数通信都是基于TCP协议来的,因此本文就以TCP为例,结合socket api来分析Linux下的网络通信流程。
TCP协议是基于IP协议之上的面向流并且可靠传输的通信协议,同时TCP也拥有流量控制和拥塞控制机制。说起TCP,就绕不开的TCP的3次握手和4次挥手,因此先看下握手和挥手流程:
socket api
常用的网络通信socket api有socket、bind、listen、accept和connect等。
为了进行网络通信,进程需要首先调用socket函数获取一个socket fd,可以指定通信协议类型:
// family指定协议族,type指定套接字类型,protocol指定某个协议类型常值,或者设为0。
int sock