TCP协议通讯流程(三次握手及四次挥手)
一、服务器端
- 调用socket函数,创建一个socket(文件描述符)操作句柄
- 调用bind函数,把刚创建的socket文件描述符 和 ip及端口 绑定在一起,注意一个进程可以绑定多个端口号,但是一个端口号只能被一个进程绑定bind中进程和端口的关系
- 调用listen函数,对socket文件描述符进行监听(首先listen会在进程地址空间中维护一个缓冲区,如果有客户链接进来,就把其放进缓冲区)
- 进入主循环,循环处理客户端的请求(死循环)
- 调用accept函数并阻塞,等待客户端进来链接(在listen缓冲区中去出),accept成功就返回一个新的socket文件描述符操作句柄,在多进程或多线程等情况下,旧的socket在父进程中返回,继续accept,子进程拿到newsocket对客户进行操作(下面的操作都是newsocket)
- 调用recv函数,接受客户端发送的请求