TCP
传输控制协议(TCP,transmission control protocol)是一个面向连接的、可靠的、基于字节流的传输层通信协议
通信过程及相关协议
1、OSI模型:共七层,从下到上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;
2、TCP/IP协议:将OSI模型简化为四层,分别为应用层(会话层、表示层、应用层),运输层,网络层,网络接口层(物理层、数据链路层)。TCP/IP协议包含了FTP、SMTP、TCP、UDP、IP等协议。
各层作用:
应用层:是TCP/IP协议的第一层,是直接为应用进程服务的。对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。应用层还能加密、解密、格式化数据。应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
传输层(TCP层):作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
网络层(IP层):网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。
网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
3、当源主机发出数据时,数据在源主机中从上层向下层传送。
源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。
传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层。
网际层加上本层的控制信息,形成IP数据报,传给网络接口层。
网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。
TCP工作原理
网络层(IP层)并不保证数据报一定被正确地递交到接收端,也不指示数据报发送速度有多快。正是TCP负责既要足够快地发送数据报,以便使用网络容量,但又不能引起网络拥塞;而且TCP还负责重传没有接收到的数据报;即使数据正确递送了也有可能发生错序问题,这也是TCP的责任,它负责将错序的数据报重新装配成正确的顺序。
应用层向传输层(TCP层)发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段,这个适当长度通常受限于该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制;之后TCP把结果包传给网络层(IP层),由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证不发生丢包,就给每个包一个序号,这个序号同时也保证了接收端实体的按序接收。
然后接收端实体对已成功接收到的包返回一个相应的确认(ACK),如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包(假设已丢失)将会被进行重传。
TCP用一个校验和函数来检验数据是否有错误,在发送和接收数据时都要进行校验和计算。
TCP主要特点
TCP是面向广域网的通信协议,目的是在跨越多个网络通信时,为2个通信端点之间提供一条具有以下特点的通信方式:1-基于流 方式;2-面向连接的;3-可靠通信方式;4-在网络状况不佳的时候尽量降低网络重传带来的带宽开销;5-通信连接维护时面向通信的两个端点的,而不考虑中间网段和节点。
为满足这些特点,TCP协议做了如下规定:①数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;②到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认;③超时重发:发送方在发送分片时启动超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片;④滑动窗口:TCP连接每一方的接收缓冲空间大小都固定,接收端只允许另一端发送接收端缓冲区所能接纳的数据,TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出;⑤失序处理:作为IP数据报来传输的TCP分片到达时可能会失序,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层;⑥重复处理:作为IP数据报来传输的TCP分片会发生重复,TCP的接收端必须丢弃重复的数据;⑦数据校验:TCP将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到分片的检验和有差错,TCP将丢弃这个分片,并不确认收到此报文段导致对端超时并重发。
TCP三次握手
建立一个连接需要三次握手,而终止一个连接需要四次握手。
三次握手:

第一次握手:客户端尝试连接服务器,发送SYN包给服务器端,进入SYN- SENT状态等待服务器确认;服务器端只可以确认自己可以收到客户端发送的报文;
第二次握手:服务器端接收到SYN报文,回送一个SYN+ACK报文,进入SYN- RECV状态;客户端可以确认服务器端收到自己发送的报文段,且可以确认自己可以接受服务器端发送的报文段;
第三次握手:客户端接收到服务器端的SYN+ACK报文,回送一个确认包ACK(ACK=y+1)报文,确认包发送完毕,客户端和服务器进入Established状态,完成第三次握手;服务器端可以确认客户端收到了自己发送的报文段。
TCP和UDP的区别
TCP是面向连接的,UDP是无连接的,即发送数据前不需要先建立链接;
TCP提供可靠的链接,通过TCP传输的数据,无差错、不丢失、不重复,且按序到达;UDP尽最大努力交付,不保证可靠交付。TCP适合大数据量的交换;
TCP面向字节流,UDP面向报文,且网络出现拥塞不会使发送速率降低;
TCP是1对1,UDP支持1对1、1对多;
TCP首部20字节,UDP8字节。
浙公网安备 33010602011771号