论文部分内容阅读
摘 要:TCP传输控制协议是TCP/IP中一个比较复杂的协议。它提供可靠的数据传输,具有全双工通信,面向字节流,流量控制,拥塞控制等特点。本文通过TCP的连接过程,进一步解析TCP的工作原理。
关键词:TCP;全双工通信;SYN;ACK
引言
21世纪是数字化信息化的时代,随着互联网通信技术的迅猛发展,各个国家都采用通信网络进行信息传输,所以在网络间进行可靠高效的传输信息十分重要,而TCP协议是面向连接的通信协议,具有高度的数据传输可靠性。
一、TCP协议概述
首先TCP是面向连接的运输层协议,用于应用程序之间的通信。应用程序在使用TCP协议之前需要先建立一个TCP连接,在数据传输结束之后,必须释放掉所建立的TCP连接。其次,TCP协议提供可靠的数据交付,使数据无差错,无丢失,无重复,且按顺序到达通信的另一方;同时,TCP也提供全双工通信,即允许通信双方相互发送信息。值得注意的是,每一条建立的TCP连接必须是一对一的。
二、TCP连接的建立
(一)简述
TCP连接建立的过程通常称为握手,一个TCP连接的建立要客户机和服务器之间交换三个TCP报文段,即三次握手。首先,由客户机端向服务器端发送连接请求消息;然后服务器端对所收到的客户机端的报文段进行确认,并向客户机发送包含确认信息的报文;最后客户机再对服务器的确认报文段进行确认,向服务器发送包含确认信息的报文段。
(二)TCP连接建立过程
最初,客户机和服务器的TCP进程都是处于关闭状态,由于TCP协议提供全双工通信,我们这里假设客户机主动去打开连接,服务器被动的打开连接。
首先,作为数据的接收方,服务器进行要先建立一个传输控制模块TCP(客户机也需要建立),并处于监听状态,等待客户机发送连接请求。
当客户机进程在建立TCP连接时,它首先向服务器进程发送一个请求报文段,同时设置报文段首部的同部位SYN(Synchronize Sequence Numbers)= 1,确认位ACK(Acknowledgement Number)= 0,表明这是一个连接的请求报文段。请求报文段不能携带数据,需要使用一个序号,这里选择初始序号seq = x。此时客户进程进入SYN_SEND状态。
服务器接收到来自客户的请求报文段后,如果同意建立TCP连接,服务器会向客户进程发送一个确认报文段。在确认报文段中,将SYN和ACK置为1,并设置确认号ack =x + 1。同时服务器也要使用一个序号,这里初始序号设置为seq = y。此时服务器进程进入SYN_RECV状态。
客戶进程收到确认报文段后,再次向服务器进程发送确认报文段;并将确认位ACK置为1;设置确认号为ack = y + 1;自身序号设置为seq = x + 1。这时TCP连接已经建立客户机进程进入ESTABLISHED状态。
当服务器进程收到确认后也进入ESTABLISHED状态。
三、TCP连接的释放
双方数据传输结束后双方都要马上释放TCP连接。
客户进程首先向TCP发出连接释放报文段,并把报文段首部的终止控制位FIN置1,序号seq = a(a等于传输数据的最后一个字节加一)。此时客户进程进入FIN-WAIT-1状态,并等待服务器程序确认。
服务器进程收到来自客户机进程的TCP连接释放报文段后,立即发出确认报文段,并设置报文段首部确认号axk=1;该报文段的序号为seq = b(b等于接收数据的最后一个字节加一)。此时服务器进程进入WAIT状态。
客户机进程接收到服务器进程的确认报文段,进入FIN-WAIT-2状态,并等待服务器进程发送连接释放报文段。
当服务器没有数据要发送时,服务器进程通知TCP释放连接。同时设置要发送的报文段首部,使FIN = 1;seq = w;ack = u = 1;此时服务器进程进入LAST-ACK状态。
客户端进程收到服务器进程的连接释放报文段后,需立即发送一个确认报文段,并设置ACK = 1;ack = w + 1;seq = u + 1;然后进入TIME-WAIT状态。客户进程撤销传输控制块TCP后,TCP连接就结束。
四、TCP的控制技术
TCP为了保证高效可靠的数据传输,使用了差错控制,拥塞控制以及流量控制。
差错控制:
对超过一定时间的报文段进行超时重传,检测和重传出现差错的报文段,重传丢失的报文段。TCP通过三个简单的方式来完成其差错控制:检验和、确认以及超时。
拥塞控制:
拥塞控制的根本目的就是防止大量的数据注入进网络,主要通过控制发送方的窗口来控制进入网络中数据的速率,TCP使用了三种不同的策略来进行拥塞控制,慢启动策略,拥塞避免策略和拥塞检测策略。
流量控制:
利用滑动窗口协议。TCP协议通过报文段窗口字段的大小来控制流量,发送方的发送窗口不能大于接收方所发回的窗口大小。
五、综述
综上所述,TCP协议的可靠性体现在:三次握手建立连接,四次挥手释放连接,通过滑动窗口机制进行流量控制,拥塞避免算法,差错控制控制,以及一定的超时重传机制。当两个应用进程在网络中进行可靠的数据传输时,首先要建立TCP连接,在通信结束时立即释放,避免对网络资源的占用。数据通过TCP协议传输,可以高效无差错的到达接收端,这极大的提高了网络中数据的传输效率。
参考文献
[1]James F.Kurose,Keith W.Ross著,计算机网络 Computer Networking [M]机械工业出版社,2009-11
[2]谢希仁 著,计算机网络 Computer Networking [M] 电子工业出版社,2017-1
作者简介
张世奇(1996—),研究方向:软件工程;
闻锋(1996—),究方向:机器学习。
(作者单位:河南大学金明校区软件学院)
关键词:TCP;全双工通信;SYN;ACK
引言
21世纪是数字化信息化的时代,随着互联网通信技术的迅猛发展,各个国家都采用通信网络进行信息传输,所以在网络间进行可靠高效的传输信息十分重要,而TCP协议是面向连接的通信协议,具有高度的数据传输可靠性。
一、TCP协议概述
首先TCP是面向连接的运输层协议,用于应用程序之间的通信。应用程序在使用TCP协议之前需要先建立一个TCP连接,在数据传输结束之后,必须释放掉所建立的TCP连接。其次,TCP协议提供可靠的数据交付,使数据无差错,无丢失,无重复,且按顺序到达通信的另一方;同时,TCP也提供全双工通信,即允许通信双方相互发送信息。值得注意的是,每一条建立的TCP连接必须是一对一的。
二、TCP连接的建立
(一)简述
TCP连接建立的过程通常称为握手,一个TCP连接的建立要客户机和服务器之间交换三个TCP报文段,即三次握手。首先,由客户机端向服务器端发送连接请求消息;然后服务器端对所收到的客户机端的报文段进行确认,并向客户机发送包含确认信息的报文;最后客户机再对服务器的确认报文段进行确认,向服务器发送包含确认信息的报文段。
(二)TCP连接建立过程
最初,客户机和服务器的TCP进程都是处于关闭状态,由于TCP协议提供全双工通信,我们这里假设客户机主动去打开连接,服务器被动的打开连接。
首先,作为数据的接收方,服务器进行要先建立一个传输控制模块TCP(客户机也需要建立),并处于监听状态,等待客户机发送连接请求。
当客户机进程在建立TCP连接时,它首先向服务器进程发送一个请求报文段,同时设置报文段首部的同部位SYN(Synchronize Sequence Numbers)= 1,确认位ACK(Acknowledgement Number)= 0,表明这是一个连接的请求报文段。请求报文段不能携带数据,需要使用一个序号,这里选择初始序号seq = x。此时客户进程进入SYN_SEND状态。
服务器接收到来自客户的请求报文段后,如果同意建立TCP连接,服务器会向客户进程发送一个确认报文段。在确认报文段中,将SYN和ACK置为1,并设置确认号ack =x + 1。同时服务器也要使用一个序号,这里初始序号设置为seq = y。此时服务器进程进入SYN_RECV状态。
客戶进程收到确认报文段后,再次向服务器进程发送确认报文段;并将确认位ACK置为1;设置确认号为ack = y + 1;自身序号设置为seq = x + 1。这时TCP连接已经建立客户机进程进入ESTABLISHED状态。
当服务器进程收到确认后也进入ESTABLISHED状态。
三、TCP连接的释放
双方数据传输结束后双方都要马上释放TCP连接。
客户进程首先向TCP发出连接释放报文段,并把报文段首部的终止控制位FIN置1,序号seq = a(a等于传输数据的最后一个字节加一)。此时客户进程进入FIN-WAIT-1状态,并等待服务器程序确认。
服务器进程收到来自客户机进程的TCP连接释放报文段后,立即发出确认报文段,并设置报文段首部确认号axk=1;该报文段的序号为seq = b(b等于接收数据的最后一个字节加一)。此时服务器进程进入WAIT状态。
客户机进程接收到服务器进程的确认报文段,进入FIN-WAIT-2状态,并等待服务器进程发送连接释放报文段。
当服务器没有数据要发送时,服务器进程通知TCP释放连接。同时设置要发送的报文段首部,使FIN = 1;seq = w;ack = u = 1;此时服务器进程进入LAST-ACK状态。
客户端进程收到服务器进程的连接释放报文段后,需立即发送一个确认报文段,并设置ACK = 1;ack = w + 1;seq = u + 1;然后进入TIME-WAIT状态。客户进程撤销传输控制块TCP后,TCP连接就结束。
四、TCP的控制技术
TCP为了保证高效可靠的数据传输,使用了差错控制,拥塞控制以及流量控制。
差错控制:
对超过一定时间的报文段进行超时重传,检测和重传出现差错的报文段,重传丢失的报文段。TCP通过三个简单的方式来完成其差错控制:检验和、确认以及超时。
拥塞控制:
拥塞控制的根本目的就是防止大量的数据注入进网络,主要通过控制发送方的窗口来控制进入网络中数据的速率,TCP使用了三种不同的策略来进行拥塞控制,慢启动策略,拥塞避免策略和拥塞检测策略。
流量控制:
利用滑动窗口协议。TCP协议通过报文段窗口字段的大小来控制流量,发送方的发送窗口不能大于接收方所发回的窗口大小。
五、综述
综上所述,TCP协议的可靠性体现在:三次握手建立连接,四次挥手释放连接,通过滑动窗口机制进行流量控制,拥塞避免算法,差错控制控制,以及一定的超时重传机制。当两个应用进程在网络中进行可靠的数据传输时,首先要建立TCP连接,在通信结束时立即释放,避免对网络资源的占用。数据通过TCP协议传输,可以高效无差错的到达接收端,这极大的提高了网络中数据的传输效率。
参考文献
[1]James F.Kurose,Keith W.Ross著,计算机网络 Computer Networking [M]机械工业出版社,2009-11
[2]谢希仁 著,计算机网络 Computer Networking [M] 电子工业出版社,2017-1
作者简介
张世奇(1996—),研究方向:软件工程;
闻锋(1996—),究方向:机器学习。
(作者单位:河南大学金明校区软件学院)