TCP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
TCP主动关闭的一端会出现TIME_WAIT状态,该端点停留在此状态的持续时间是最长分节生命期(maximum segment lifetime, MSL)的两倍(2MSL:1min-4min)。
数据报含有一个8位字段称为跳限(hop limit),最大值为255。
TIME_WAIT状态是为了实现TCP的全双工连接终止(即处理最后ACK丢失的情况);并允许老的重复分节从网络中消逝。
accept()等待客户连接,调用该函数使得服务器处于阻塞状态;其他能够阻塞的函数如read()、fgets()等。
服务器调用listen函数会把一个未连接的套接字转换为一个被动套接字,指示内核应接受指向该套接字的连接请求。调用listen导致套接字从CLOSE状态转换到LISTEN状态。
客户端调用connect函数将激发TCP的三次握手过程,仅在建立连接成功或出错时才返回。
TCP套接字调用close会导致发送一个FIN,过程中会尝试发送已排队等待的数据到对端,随后是正常的TCP连接终止序列。