浅解传输层协议TCP

2021-08-14
文中提到的英文缩写意义:
TCP(Transmission Control Protocol):传输控制协议。
UDP(User Datagram Protocol):用户数据报协议。
SYN(synchronized):TCP中用于同步两端打开一个连接。
FIN:TCP中与于请求撤销连接。
ACK(Acknowledge):确认分组。
IP(Internet Protocol):互联网协议。
CRC(cyclic redundancy check):循环冗余校验,用于检测数据部分的错误。



TCP(Transport Control Protocol,传输控制协议)自从被发明以来,它就变成了互联网上的标准协议,它提供了主机间可靠的数据传输。
TCP是驻留于传输层的TCP/IP协议栈的中唯一一个面向连接的协议,与其相对的还有无连接的UDP,对UDP的讨论不是本文的内容,但有必要谈一谈"面向连接的协议"和"无连接的协议"。

一、"面向连接的协议"和"无连接的协议"。
1、面向连接的协议。
面向连接的协议有以下六个方面的特征:
(1).会话建立:在TCP上运行一个程序时,在建立有意义的数据传输之前,TCP都会建立一个虚连接。
(2).确认:接收方在收到数据后会回复确认。
(3).顺序化:为了保证传输过程中不会丢失数据,会给帧进行编号,最终确认数据可以可靠的传输,如果有丢失,则会重传数据。
(4).流量控制:接收方主机可以通知发送主机控制传输的速度。
(5).保留连接:即使没有数据传输时,主机间仍保持一条连接。
(6).会话终止:当任一主机请求终止会话是,连接断开。

2、无连接的协议。
无连接的协议无论在哪一层,它都不检查目的主机是否真正收到了该数据,也就是说,它不提供可靠的传输,但它的优点在于传输速度快,开销小。

二、TCP简介。

面向连接的TCP通过主机地址和端口号标识进程。(UDP也是如此)。
你相与一个服务器相连,你的端口是刻意任意选取的,而服务器则是指定分配的端口号,即常用端口。
比如你想与远端主机建立一个Telnet,主机则使用常用端口23。
端口分类:0~1023是服务器端口,1024~65535是客户端口。
TCP的功能是在两主机间提供可靠的数据传输。

三、TCP操作。

TCP采用以下机制控制进程间的通信:
1、连接的建立与撤销(三次握手)
TCP在传输真正有意义的数据前,会通过三次握手建立一条虚连接,并且在整个会话期间都保持此连接,空闲期间会发送小报文保持连接。
TCP通过三次握手建立连接:
第一次握手:源主机发送SYN请求。
第二次握手:目的主机回复ACK确认+SYN请求。
第三次握手:源主机回复ACK确认。
TCP可以以全双工的方式通信,所以在第二次握手中,在同一帧内既包含了SYN请求,又包含了ACK确认。
TCP连接连接的撤销与建立类似,同样是通过三帧交换完成。传输两端都可以请求撤销连接。
第一帧:源主机发送FIN请求。
第二帧:目的主机回复ACK确认+FIN请求。
第三帧:源主机回复ACK确认。
2、多路复用。
多路复用是TCP可以在两主机间同时建立多条连接,它也包括一个主机可以同时与多个主机通信。因为计算机上通常同时运行多个进程,所以此机制是必要的。
所以TCP需要对这些进程进行区分管理,这就是在"TCP简介"中谈到的端口的功劳了,当主机启动一个进程时,则开启一个端口,并给其分配资源,不需要此端口时则释放其上资源,我会在文章后面给出常用的端口号。

3、数据传输。
TCP从上层接收数据后负责分段,然后向下传输给第三层编址、封装和传输。
数据到达远端主机后通过第三层,IP检查IP头中的协议地址判断它是TCP还是UDP传输的,以进行处理。第四层TCP收到IP的数据后把这些数据重新组织成数据流、标识端口,然后把它们继续传给更高层处理。


4、流量控制。
传输方如果输入数据流速度过快,则有可能淹没接收端主机的接收内存,所以TCP需要一个方法去控制传输速度,这就是流量控制机制。

5、可靠性。
大家都知道TCP提供可靠的传输,但是这是如何实现的呢?
(1).丢失:TCP使每一个发送的字节有序号,而且接收主机必须对其作出回应确认,假如数据在传输过程中丢失了,接收端则不会作出ACK确认,发送端在指定时间内没有收到回应,就会组织从TCB中取出重传该数据。
(2).损坏:另外在传输数据前会执行一个CRC算法,并把CRC字段保存在TCP头中,接收端主机会通过CRC字段检查数据是否损坏,如果是,则丢弃该帧,这样发送端没有接收到ACK确认,于是会重传数据。

6、优先权与安全。
TCP向高层提供<优先权><延迟><吞吐量><可靠性>等服务类型来提供优先级,实现后这些会影响路由选择。
优先权越高,安全级越高。较低安全级的主机不能与较高安全级的主机通信。
TCP(传输控制协议)是互联网上的标准协议,提供了主机间可靠但相对低速的数据传输。区别与UDP,UDP提供了高速但不可靠的传输。开发商根据实际情况选择不同的协议。
TCP是面向连接的协议,面向连接的协议有六个特点:会话建立、确认、顺序化、流量控制、保留、会话终止。
TCP通过以下机制控制两主机进程间的通信:连接的建立与撤销、多路复用、流量控制、数据传输、可靠性、优先级与安全。