TCP 传输控制协议(Transmission Control Protocal):
(1)TCP协议概括介绍:
TCP协议是传输层的通信协议,有同学或许不理解了,IP是网络层的传输协议,这个传输层和网络层有什么区别呢?依我之见,网络层是用来寻找网络中的主机的,通过IP地址是可以锁定唯一主机的。我们通常的通信,是一个进程和另一个进程之间的通信,而进程是依附于主机的。故在一个进程到另一个进程的通信流程可简化为:进程A——主机A——主机B——进程B。而传输层协议就是实现主机A——主机B之间的通信的。但是一个主机一般会有很多进程,那么如何将信息传递到某一具体进程呢?这就是传输层的功能了!一般进程都会占用端口的,而传输层就是通过TCP报文段中首部的“目的端口”来寻找目的进程的端口号的。也正是通过这个端口号,主机B才能顺利正确地找到进程B。好了,言归正传。
先说说TCP协议的特点吧:
A:TCP是面向连接的传输层协议:也即是说TCP通信之前,是需要先建立稳定的连接的,这也正是我们所谓的“三次握手”,建立好通道之后,然后才能进行通信,也正因此,TCP协议是比较稳定的,不会发生如UDP一般的丢包现象。
B:一条TCP连接是只能有两个端点的。
C:TCP通信时全双工的:即支持两个端口直接通信进行发送和接收数据,与此相辅的是两端都有接收和发送的缓存空间。(TCP通信时先把数据放到发送缓存空间里,待缓存空间填满(一般情况下),便会发送数据)。
D:TCP通信时面向字节流的:即在发送数据的时候是分段活分片传输,但是本质上都是字节流。比如你发了10个报文段,但是在接收端可能只有4个报文段,这中间就有一种转换关系:数据段——字节流——数据段。
我们刚才说一条TCP连接只能有两个端点,在这里,端点是何含义呢?
此端点非主机,非主机IP,非进程,非传输层协议端口,而是套接字(socket),也叫插口。那什么叫套接字呢?所谓套接字即端口号拼接到IP地址即是。
套接字:点分十进制的IP地址后面加上端口号,中间用冒号或逗号分隔开来。套接字socket = (IP地址:端口号)= (IP:PORT)
如:192.168.1.45:5546
而每条TCP连接有两个端点,所以TCP连接 ::= {socket1,socket2} = {(IP1:PORT1),(IP2:PORT2)} 注:::= 表示”相当于“的意思。
(2)TCP可靠传输原理
什么情况下一定回事可靠传输呢?
通信的基本条件是信源——信道——信宿。故当信源发出数据之后,如果信道稳定,信宿处理能力够强,基本上是不会出错的。但是现实情况往往无法满足的。但是我们可以当数据发生错误时,使得信源重传;当信宿来不及处理数据的时候,可以告诉信源慢点发送数据。