传输层协议解析
第五章 传输层协议
• 重点
– 端口 – TCP连接的建立和拆除的握手机制 – 计时器 – 流量控制 – 拥塞控制
5.1.传输层
5.1.1. 传输层概述 一、传输层的作用 • 弥补网络层所提供的服务质量的不足,以 便为高层提供可靠的端到端通信。
计算机网络在逻辑上分为资源子网和通信 子网
• 资源子网中的设备才有传输层,通信子 网中的设备一般只具备OSI下面三层的功 能。
• 任选项:提供一种增加额外设置的方法, 如最大TCP 分段的大小的约定。 • 填充:当任选项字段长度不足32 位字长时, 需要加以填充。 • 数据:来自高层即应用层的协议数据。
5.2.2.TCP的连接管理 TCP实现的是面向连接的数据传输服务, 即是一种虚电路的数据交换方式,在数据 传输以前需要在源主机和目标主机之间创 建相应的虚电路连接。
一、连接的建立 TCP 使用 三次握手协议 来建立连接。
• 主机1 首先发 起TCP 连接 请求,并在所 发送的数据段 中将控制字段 中的SYN置为 “1”、ACK置 为“0”。
• 主机2 收到该分段, 若同意建立连接,则 发送一个连接接受的 应答数据段,其中控 制字段的SYN 和ACK 均被置“1”,指示对 第一个SYN 报文段的 确认,以继续握手操 作;否则,主机2 要 发送一个将RST置为 “1”的应答数据段, 表示拒绝建立连接。
• 资源子网中的端用户依靠在自己主机上所 增加的这个传输层来检测分组的丢失或数 据的残缺并采取相应的补救措施。
二、传输层功能 • 在网络层所提供的源到目标的分组传输服 务的基础上,向上层提供可靠的源主机到 目标主机的数据传输。 • 当上层的协议数据包的长度超过网络互联 层所能承载的最大数据传输单元时,提供 分段和合并分段的功能。
5.2. TCP协议
5.2.1.TCP协议概述 TCP,即传输控制协议,它提供面向连接 的、可靠的(没有数据重复或丢失)、全双工 的数据流传输服务。
• TCP的协议数据单元被称为段(Segment) • 数据段分为两部分,即段头和数据
– 段头一般长20字节(如有选项部分另加),是 TCP 为了实现端到端可靠传输所加上的控制信 息。 – 而数据则是指由高层即应用层来的数据。数据 段的大小必须首先满足65535字节的IP包数据 长度限制。
• 提供多路复用机制,由于同时存在多个高 层应用,因此要求传输层能够同时为多个 高层应用服务,将多个高层应用复用到一 个网络层连接上。传输层是通过端口来实 现这一功能的。
三、端到端的传输 • 传输层就是为上三层提供端到端的传输服 务
端到端
声音信号பைடு நூலகம்
声音信号
电信号
电信号
点到点
点到点
点到点
四、TCP/IP 的传输层 两个主要的协议即传输控制协议(transport control protocol,简称TCP)和用户数据报协议 (user datagram protocol,简称UDP)
• 从0 到255 被规定作为公共应用服务的端口,如 WWW、FTP、DNS 和电子邮件服务等,又被称 为著名端口 (Well-known ports)。这些端口所对应 的服务是固定、公开的,因此可以通过访问这些 端口来访问对应的服务。 • 从256 到1023 的端口,被保留用作商业性的应用 开发,如一些网络设备厂商专用协议的通信端口 等。 • 1023 以上端口未做限定,即作为自由端口,以本 地方式进行分配。
• 预留:未用的6 位,为将来的应用而保留, 目前置为“0”。 • 控制字段(CTL):共6个控制字段,每个 占一位bit。TCP 数据段有多种应用,如建 立或关闭连接、传输数据、携带确认等, 这些控制字段用于给出与数据段的作用及 处理相关的控制信息。字段位值=1时有效。
• 窗口:窗口的大小表示本方可以接收的数 据量,以八位字长为计量单位。TCP使用 可变大小的滑动窗口来进行流量控制。 • 校验和:用于对数据段头和数据进行校验, 以判断接收的数据是否有错。 • 紧急指针:给出从当前段序号到紧急数据 位置的偏移量。
TCP协议是一个可靠的面向连接的传输层协议。 UDP协议将可靠性问题交给应用程序解决
指标
是否连接 传输可靠性 速度 传输质量
TCP
面向连接 可靠 较慢 较高
UDP
无连接 不可靠 较快 较差
5.1.2.端口和套接字 一台主机中同时会有多个应用进程进行 通信,传输层必须将它们区分开来。因此网 络通信的最终地址应不仅包括主机地址,还 要包括可描述网络进程的某种标识。 这种标识称作传输层服务访问点, 即端口。 TCP/IP 定义一个16Bit长度的整数作为 端口标识,也就是说可定义2e16个端口, 其端口号从 0到 2e16-1。
• 主机1 收到主机 2 发来的同意建 立连接数据段后, 还有再次进行选 择的机会,若其 确认要建立这个 连接,则向主机 2 发送确认数据 段,用来通知主 机2 双方已完成 建立连接;
• 若其已不想建立这个连接,则可以发送一 个将RST置为“1”的应答数据段来告之主 机2 拒绝建立连接。
二、连接的拆除 TCP连接的关 闭过程是一个四 次握手的过程。
• 源端口:主叫方的TCP 端口号。 • 目标端口:被叫方的TCP 端口号。 • 发送序号(SEQ):
– ①SYN=0表示数据段第一个数据字节的序号, 即该数据段在发送方的数据流中的位置; – ②SYN=1表示建立本次连接的初始序号。
• 确认序号(ACK):下一个期望接收的 TCP 数据段号,顺序号和确认号共同用于 TCP 服务中的确认、差错控制。 • 头长:TCP头长,以32 位字长为单位。实 际上相当于给出数据在数据段中的开始位 置。
图5-9 四次握手拆除TCP 连接
• 当主机1 的数据 已发送完毕时, 其在等待确认 的同时可发送 一个将控制字 段FIN 置“1”的 数据段给主机2, 表示请求中断 主机1到主机2 的连接。
图5-9 四次握手拆除TCP 连接
• 若主机2 已正确接 收主机1 的所有分 段,则会发送一个 数据段正确接收的 确认段,同时通知 本地相应的应用程 序,对方要求关闭 连接,接着再发送 一个对主机1 所发 送的FIN段进行确 认的应答段。由此 便拆除了一个方向 的TCP连接。