(二十)运输层--TCP概述

传输控制协议TCP概述

TCP最主要的特点

(1)TCP是面向连接的运输层协议
应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释放已经建立的TCP连接。

(2)每一条TCP连接只能有两个端点
每一条TCP连接只能是点对点的。

(3)TCP提供可靠交付的服务
通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

(4)TCP提供全双工通信
TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事了,而TCP在合适的时候把数据发送出去。在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。

(5)面向字节流
TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP并不知道所传送的字节流的含义。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。例如,发送方应用程序交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付上层的应用程序。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。如果应用进程传送到TCP缓存的数据块太长,TCP就可以把它划分短一些再传送。如果应用进程一次只发来一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

TCP的连接

TCP把连接作为最基本的抽象。每一条TCP连接有两个端点,这个端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接IP地址即构成了套接字。例如,IP地址是192.3.4.5,端口号是80,那么得到的套接字就是(192.3.4.5:80)。每一条TCP连接唯一的被通信两端的两个端点(两个套接字)所确定。

原文地址:https://www.cnblogs.com/cone/p/14969069.html