运输层3——传输控制协议TCP概述
写在前面:本文章是针对《计算机网络第七版》的学习笔记
-
TCP是面向连接的运输层协议。也就是说TCP在使用之前,必须先建立TCP连接。
-
每一个TCP连接中只能有两个端点,也就是说TCP是点对点的通信。
-
TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达。
-
TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存储双向通信的数据。
-
面向字节流。TCP中的“流”是指流入到进程或从进程中流出的字节序列。
面向字节流:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但是TCP把应用程序交下来的数据只看出一连串的无结构字节流。TCP不知道字节流的具体含义,也不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块之间的大小关系。但是接收方应用程序收到的字节流必须与发送方发送的字节流完全一致。如下图所示:
上图所示只是一个虚连接,并不是正在的物理连接。实际上,TCP报文段要先发送到IP层,加上IP首部后,再传送带数据链路层,再加上数据链路层的首部和尾部后,才离开主机发送到物理链路。
2. TCP的连接
TCP的端点称为套接字(socket)或者插口。可以表示为:
套接字 = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点所确定。即:
TCP连接 ::= {socket1, socket2} = {(IP1:port1), (IP2:port2)}
ps:同一个IP地址可以用很多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。
3. socket在不同场景中的含义
-
允许应用程序访问连网协议的应用编程接口API,即运输层和应用层之间的一种接口,称为socket API。
-
在socket API 中使用的函数名也叫做socket。
-
调用socket函数的端点也称为socket。
-
调用socket函数时,其返回值称为socket描述符,也可以简称为socket。
-
在操作系统内核中的连网协议的Berkeley实现,称为socket实现。