TCP协议概述
Posted 丑瓦力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议概述相关的知识,希望对你有一定的参考价值。
在TCP/IP协议族中,最重要的协议就属于TCP协议了,因为它要解决网络传输中的可靠传输,流量控制,拥塞控制等一系列的问题,所以它也是最为复杂的一个协议。
我们之后整个运输层的重点就是TCP协议,所以在以后的几篇文章都会对它的具体实现来进行全面的分析介绍。那么在这篇文中,就让我们先简单地了解一下它吧。
首先来看一下它有哪些重要的特点,并且这些特点跟UDP相比有哪些不同?
1、TCP是面向连接的运输层协议。我们在使用TCP通信之前,必须先建立TCP连接,当通信结束之后,再释放TCP连接。而UDP是无连接的运输层协议,它在发送数据之前是不需要建立连接的。
2、每没一条TCP连接只能有两个端点,也就是说每一条TCP连接只能是点对点的。但是UDP可以支持一对一,一对多,多对一和多对多的交互通信。
3、TCP提供可靠交付的服务。通过TCP连接传送的数据,没有差错,不丢失,不重复,并且按序到达。UDP提供的是最大努力的交付的服务,它不保证数据传输的准确。
4、TCP提供双全工通信。TCP两端都设有缓存,用来临时存放双向通信的数据。UDP没有缓存,发送端会一直以同样的速率发送数据,如果遇到网络拥塞,会丢弃一些数据报。
5、TCP是面向字节流。它跟UDP不一样,UDP是面向报文的,UDP将应用层交下来的数据无论多大,装上UDP首部直接往IP层发送。但是TCP,在两端都是有缓存的,它会根据网络拥塞的情况和对方给出的窗口值(这个后面会说)来决定TCP报文段的大小。因此,可能在发送端应用层发送了5个数据块,但是接受端只用3个数据块就可以交付上层了。
在上图中,为了突出重点,只有一个方向的字节流,而且每个报文只有几个字节,实际上上千字节都是很常见的。还有,上图中的TCP连接只是一个虚连接,也就是逻辑连接,在外部看起来就像两个运输层直接通信,但其实还是需要经过协议栈的。
那么我们在上面说TCP是端到端的服务,在每一个TCP连接的两端都有两个端点,那么这两个端点究竟是什么呢?
由此可知,每一条TCP连接都可以用两个套接字来表示。即:TCP连接 ::= {socket1, socket2} = {(IP1:port1),(IP2:port2)}
另外注意一点,在计算机的很多地方都有socket的应用,我们在这里的socket主要指的是TCP连接的端口。
以上是关于TCP协议概述的主要内容,如果未能解决你的问题,请参考以下文章