①全称是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议;
②特点:
1、TCP 是面向连接的运输层协议,应用程序在使用 TCP 协议之前,必须先建立 TCP 连接,在传送数据完毕后,必须释放已经建立的 TCP 连接;
2、每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点;
3、TCP 提供可靠交付的服务,通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达;
4、TCP 提供全双工通信,TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据;
5、面向字节流,TCP 中的 “流” 指的是流入到进程或从进程流出的字节序列;
③TCP 协议按照层次包装,分为应用层、传输层、网络层、网络接口层;
1、应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录 TELNET 使用 TELNET 协议提供在网络其它主机上注册的接口。TELNET 会话提供了基于字符的虚拟终端。文件传输访问 FTP 使用 FTP 协议来提供网络内机器间的文件拷贝功能;
2、传输层:提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送;
3、网络层:负责相邻计算机之间的通信。其功能包括三方面。
一、处理来自传输层的分组发送请求,收到请求后,将分组装入 IP 数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
二、处理输入数据报:首先检查其合法性,然后进行寻径 -- 假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
三、处理路径、流控、拥塞等问题;
4、网络接口层:这是 TCP/IP 的最低层,负责接收 IP 数据报并通过网络发送,或者从网络上接收物理帧,抽出 IP 数据报,交给 IP 层;
④三次握手:
1、建立连接时,客户端发送 SYN 包(SYN=i)到服务器,并进入到 SYN-SEND 状态,等待服务器确认;
2、服务器收到 SYN 包,必须确认客户的 SYN(ack=i+1), 同时自己也发送一个 SYN 包(SYN=k), 即 SYN+ACK 包,此时服务器进入 SYN-RECV 状态;
3、客户端收到服务器的 SYN+ACK 包,向服务器发送确认报 ACK(ack=k+1), 此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手,客户端与服务器开始传送数据;
⑤四次挥手:
1、第一次挥手:Client 发送一个 FIN,用来关闭 Client 到 Server 的数据传送,Client 进入 FIN_WAIT_1 状态;
2、第二次挥手:Server 收到 FIN 后,发送一个 ACK 给 Client,确认序号为收到序号 + 1(与 SYN 相同,一个 FIN 占用一个序号),Server 进入 CLOSE_WAIT 状态;
3、第三次挥手:Server 发送一个 FIN,用来关闭 Server 到 Client 的数据传送,Server 进入 LAST_ACK 状态;
4、第四次挥手:Client 收到 FIN 后,Client 进入 TIME_WAIT 状态,接着发送一个 ACK 给 Server,确认序号为收到序号 + 1,Server 进入 CLOSED 状态,完成四次挥手;