计算机网络(5.4)运输层- TCP 概述

TCP是面向连接的运输层协议。连接的建立与释放。

每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。 TCP 提供可靠交付的服务。无差错、无丢失、不重复且按序到达。

TCP 提供全双工通信。两端都设有发送和接收缓存。 面向字节流 ,TCP中的“流”(stream)指的是流入或流出进程的字节序列。  “面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

 TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。

TCP不关心应用进程一次把多长的报文发送到TCP缓存。TCP 对连续的字节流进行分段,形成TCP报文段。

    

TCP连接是一条虚连接而不是一条真正的物理连接。TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。 TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。TCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。

TCP 的连接

 TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket) 或插口端口号拼接到(contatenated with) IP地址即构成了套接字。

套接字(socket)

     

每一条TCP连接唯一地被通信两端的两个端点 (即两个套接字)所确定。即:

     

 TCP连接就是由协议软件所提供的一种抽象。 TCP连接的端点是个很抽象的套接字,即(IP 地址: 端口号)。 同一个IP 地址可以有多个不同的TCP连接。同一个端口号也可以出现在多个不同的TCP连接中。

Socket 有多种不同的意思

应用编程接口API称为socket API, 简称为socket。

socket API中使用的一个函数名也叫作socket。

调用socket函数的端点称为socket。

调用socket函数时其返回值称为socket描述符, 可简称为socket。

在操作系统内核中连网协议的Berkeley实现,称为socket实现。

猜你喜欢

转载自blog.csdn.net/qq_40452317/article/details/90024233