TCP/IP协议
属于传输层
TCP/IP定义:
TCP/IP是指能够在多个不同网络间实现信息传输的协议簇
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议
TCP/IP模型:
一共四层
从高到低:应用层、传输层、网络层、网络接口层
- 应用层:是TCP/IP协议的第一层,是直接为应用进程提供服务的,向用户提供一组常用的应用程序
- 运输传输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用,提供应用程序间的通信
- 网络层:在TCP/IP协议中的位于第三层,在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能,负责相邻计算机之间的通信
- 网络接口层:位于第四层,既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路,负责接收IP数据报并通过网络发送
三次握手:
在通信之前,会先通过三次握手的机制来确认两端口之间的连接是否可用
- 第一次握手:客户端想要连接,创建传输控制块TCB,状态变为主动打开,客户端进入SYN-SENT(同步已发送)状态
- 第二次握手:TCP服务器收到连接请求报文,如果同意连接则发送确认报文,服务器也进 入SYN-RCVD (同步已收到) 状态
- 第三次握手: 客户端收到确认后还要再向服务器发送确认报文,客户端和服务器都进入ESTABLISHED(已建立)状态
TCP连接完成建立,这样就可以发送TCP接收到Http的数据包后生成的新数据包了
貌似看起来两次握手请求就可以完成事,为什么非要三次握手呢?
主要是为了防止已经失效的连接请求报文突然又传到了服务器,从而产生错误。
四次挥手:
- 数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED(已建立)状态,然后客户端主动关闭,服务器被动关闭
- 第一次挥手:客户端从ESTABLISHED(以建立)状态变为主动关闭状态,客户端发送请求释放连接报文给服务器,客户端进入FIN-WAIT-1(终止等待1)状态
- 第二次挥手:服务器接收到客户端发来的请求释放报文以后,发送确认报文告诉客户端我收到了你的请求,服务器进入CLOSE-WAIT(关闭等待)状态,客户端接收到服务器传来的确认报文以后,进入
FIN-WAIT-2(终止等待2)状态 - 第三次挥手:服务器所有的数据都发送完了,于是向客户端发送连接释放报文,服务器进入了 LAST-ACK(最后确认)状态
- 第四次挥手:客户端接收到了服务器发送的连接释放报文,必须发出确认,客户端进入TIME-WAIT (时间等待)状态,但是没有立马关闭。此时TCP连接还没有释放,必须经过最长报文段寿命的时间后,当客户端撤销相应的TCB后,客户端才进入CLOSED(关闭)状态,而服务器在接收到确认报文的时候就立马变为CLOSED(关闭)状态了。所以服务器结束TCP连接的时间略早于客户端。