网络层为主机之间提供逻辑通信、传输层为应用进程之间提供端到端的逻辑通信
传输层有着重要的功能就是:复用(在发送方不同的用户进程可以使用同一个传输层协议传送数据,)和分用(接收方可以把这些数据正确交付目的应用进程)
运输层要对收到的报文进行差错检测、传输层向高层用户屏蔽了下面的网络核心的细节,它使应用进程看见的就是好像在两个传输层实体之间有一条端到端的逻辑通信通道
UDP用户数据报协议 | TCP传输控制协议 |
不可靠信道 | 全双工的可靠信道 |
无连接的。不提供可靠交付 | 提供可靠的、面向连接的运输服务 |
数据单元:UDP数据报 | 数据单元:TCP报文段 |
尽最大努力交付 | 提供可靠交付 |
面向报文 | 面向字节流(不丢失,不乱序,不阻塞、无边界) |
没有拥塞控制 | 点到点 |
支持一对一、一对多、多对多、和多对一的交互通信 | |
首部开销小只有8个字节 |
在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址
TCP/IP 的运输层用一个16位的端口号(共有65535个)来标志一个端口、端口号只具有本地意义,
两个计算机中的进程要相互通信要知道IP地址+端口号
服务端使用的端口:① :熟知端口/系统端口:0-1023(FTP:21,telnet:23,SMTP:25;DNS :53;TFTP:69;HTTP:80;SNMP:161;SNMP(trap):162;HTTPS:443
②登记端口:1024-49151
客户端使用端口:49152-65535
UDP检验和是把首部和数据部分一起检验
虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。
TCP连接是一条虚连接(逻辑连接),不是一条真正的物理连接,TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。 发送方 TCP 根据接收方消耗数据的速度和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。 TCP 可把太长的数据块划分短一些再传送。 TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
TCP把连接作为最基本的抽象、TCP连接的端点是套接字:(IP地址:端口号)例如:(192.3.4.5:80)
停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
停止等待协议的优点是简单,缺点是信道利用率太低。
流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送。 由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
这里指的是已经发送了前5个分组,现在可以发送窗口里面的第6个分组
丢了一个后面的都要重传
接收方把收到的最后一个字节的编号加上 1 所得到的值宣布为确认号。
发送缓存用来暂时存放: 发送应用程序传送给发送方 TCP 准备发送的数据; TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放: 按序到达的、但尚未被接收应用程序读取的数据; 不按序到达的数据。
、
发送方TCP必须将报文段的PSH位置1,以通知接收方TCP,该报文段所包括的数据必须尽快交付给接收方应用程序,不要等待更多数据的到来。
复位 RST (ReSeT) —— 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文
终止 FIN (FINish) —— 用来释放一个连接。FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞 (congestion)。 最坏结果:系统崩溃。