5.3.1 TCP最主要的特点
- TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。
-
TCP是面向连接的运输层协议。
面向连接:网络系统需要在两台计算机之间发送数据之前先建立连接的一种特性。
-
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。
-
TCP提供可靠交付的服务。
-
TCP提供全双工通信。
-
面向字节流
- TCP中的“流“指的是流入或流出进程的字节序列。
- 面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。
TCP面向流的概念:
- TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
- 但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
- TCP不关心应用进程一次把多长的报文发送到TCP缓存。
- TCP根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节,形成TCP报文段。
5.3.2 TCP的连接
TCP把连接作为最基本的抽象。
1. 套接字
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定:
2. TCP连接、IP地址、套接字
- TCP连接是由协议软件所提供的一种抽象。
- TCP连接的端点是抽象的套接字,即(IP地址:端口号)。
- 同一个IP地址可以有多个不同的TCP连接。
- 同一个端口号也可以出现在多个不同的TCP连接中。
3. Socket有多种不同的意思
- 应用编程接口API称为socketAPI,简称为socket。
- socket API 中使用的一个函数名也叫作socket。
- 调用socket函数的端点称为socket。
- 调用socket函数时其返回值称为socket描述符,可简称为socket。
- 在操作系统内核中连网协议的Berkeley实现,称为socket实现。
参考资料:《计算机网络(第8版)》—— 谢希仁。