### 三HTTP和TCP的关系 - TCP是传输层协议,而HTTP是应用层协议 - TCP是底层通讯协议,定义的是数据传输和连接方式的规范; - TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。 - TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。 - 要和服务端连接TCP连接,需要通过三次连接,包括:请求,确认,建立连接。 ### 三次握手建立连接 - ![img_2.png](img_2.png) ### 单工、全双工、半双工 - 单工:收音机 - 半双工:不能同时说话、对讲机 - 全双工:可以同时收发(双绞线8根线) ### 三次握手 - 目的:确保双线畅通 - syn标识:标志第几次握手 - 第一次(客户端):序列号(随机数):seq=x;回应序列号ack=0;syn标识,表示探测询问 - 第二次(服务端):seq=y;ack=x+1(表示收到);ack标识,表示收到;syn标识,表示收到 - 第三次(客户端):seq=x+1(表示收到);ack=y+1;ack标识,表示收到 - ![img_3.png](img_3.png) - 第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认 - 第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态 - 第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手 - 第三次握手的时候,是可以携带数据的。 但是,第一次、第二次握手不可以携带数据