Internet运输层协议(TCP)(1) ■传输控制协议TCP和用户数据报协议UDP TCP和UDP所使用的网络层协议是IP,提 供不可靠的网络服务(C类网络) TCP的主要作用:在不可靠的网络服务上 提供端到端的可靠的字节流 TCP由RFC793定义,RFC1122进行了修 改和改进,RFC1323进行了扩展
Internet运输层协议(TCP)(1) ◼ 传输控制协议TCP和用户数据报协议UDP ◼ TCP和UDP所使用的网络层协议是IP,提 供不可靠的网络服务(C类网络) ◼ TCP的主要作用:在不可靠的网络服务上 提供端到端的可靠的字节流 ◼ TCP由RFC 793定义,RFC1122进行了修 改和改进,RFC1323进行了扩展
Internet运输层协议(TCP)(2) TCP的服务提供方式和Uni密切相关 ■通过端口号来区分TCP的用户 ■所有TCP服务都是通过套接字来完成的 TCP连接是全双工和点对点的 可同时发送接受数据,不可支持广播和多播 TCP是面向字节流的(用户数据无边界) PUSH标志:马上发送数据 ■ URGENT标志:最高优先级发送紧急数据
Internet运输层协议(TCP)(2) ◼ TCP的服务提供方式和Unix密切相关 ◼ 通过端口号来区分TCP的用户 ◼ 所有TCP服务都是通过套接字来完成的 ◼ TCP连接是全双工和点对点的 ◼ 可同时发送接受数据,不可支持广播和多播 ◼ TCP是面向字节流的(用户数据无边界) ◼ PUSH标志:马上发送数据 ◼ URGENT标志:最高优先级发送紧急数据
Internet运输层协议(TCP)(3) Unⅸ中TCP通过 Socke来实现TCP的服务 TCP服务 功能含义 SOCKET 建立一个 Socket BIND 为建立的 Socke建立一个标识 LISTEN 在一个 Sokce上监听外来的连接请求 ACCEPT 接受 Socket上到来的连接 CONNECT 在一个 Socket上建立连接 SHUT DOWN 关闭连接 SEND 在一条连接上发送数据 RECEIVE 在一条连接上接受数据 SELECT 检查一组 Socket是否有数据或异常
Internet运输层协议(TCP)(3) ◼ Unix中TCP通过Socket来实现TCP的服务 TCP服务 功能含义 SOCKET 建立一个Socket BIND 为建立的Socket建立一个标识 LISTEN 在一个Sokcet上监听外来的连接请求 ACCEPT 接受Socket上到来的连接 CONNECT 在一个Socket上建立连接 SHUT_DOWN 关闭连接 SEND 在一条连接上发送数据 RECEIVE 在一条连接上接受数据 SELECT 检查一组Socket是否有数据或异常
Internet运输层协议(TCP)(4) TCP通过段( Segment)来交换数据 段长度受到IP包长的限制65535字节 段长度不能超过 MTU(Maximum Transfer Unit):一般默认 值是1500 TCP协议段格式如下图: 32位 源端口号 目的端口号 序号 确认号 头部 窗口大小 校验和 紧急指针 选项(0个或多个32位字 数据(可选)
Internet运输层协议(TCP)(4) ◼ TCP通过段(Segment)来交换数据 ◼ 段长度受到IP包长的限制65535字节 ◼ 段长度不能超过MTU(Maximum Transfer Unit):一般默认 值是1500 ◼ TCP协议段格式如下图:
Internet运输层协议(TCP)(5) ■TCP协议中使用三次握手方式建立连接 时主 YN(SBQ, ACKmx#i). 王 间机 机 这里,SYI(SEQx)表示一个TCP段,它的序号是x,它的 SY标志为1,它的ACK标志为0, SYNSEQ=ACK=y+1 表示ACK标志为1,并且确认号为y+1
Internet运输层协议(TCP)(5) ◼ TCP协议中使用三次握手方式建立连接
Internet运输层协议(TCP)(6 源端口号和目的端口号字段用于分别表示发送方和接 收方的端口号,TCP协议中对每一个字节都给予编号, 序号和确认号都是字节的编号,序号表示发送的用户 数据第一个 的编号,而确认号表示的是下一个希 望接收的字节的编号 TCP头部长度是TCP头部(包括20字节的固定部分和 选部分)的32位字的数目,所以,选项的32位字的数 目=TCP头部长度-5。 URG标志是紧急数据标志,当有紧急数据时,该指针 为1,同时,紧急指针是本TCP段中,紧急数据的开始 位置(一个字节偏移量),即序号+紧急指针。 ACK表明确认号有效,如果ACK为0,则,确认号无效
Internet运输层协议(TCP)(6) ◼ 源端口号和目的端口号字段用于分别表示发送方和接 收方的端口号,TCP协议中对每一个字节都给予编号, 序号和确认号都是字节的编号,序号表示发送的用户 数据第一个字节的编号,而确认号表示的是下一个希 望接收的字节的编号。 ◼ TCP头部长度是TCP头部(包括20字节的固定部分和可 选部分)的32位字的数目,所以,选项的32位字的数 目=TCP头部长度-5。 ◼ URG标志是紧急数据标志,当有紧急数据时,该指针 为1,同时,紧急指针是本TCP段中,紧急数据的开始 位置(一个字节偏移量),即序号+紧急指针。 ◼ ACK表明确认号有效,如果ACK为0,则,确认号无效
Internet运输层协议(TCP)(7) PSH标志表示要求马上发送数据,用于实现PUSH功能。 RST标志用于对本TCP连接进行复位,通常在TCP连接发生故障时 设置本标志,以使通信双方实现重新同步,初始化某些连接变量 SYN标志用于建立TCP连接,一般SYN=1和ACK=0表示发起TCP连 接的建立,而SYN=1和ACK=1表示接受TCP连接 FIN表示连接释放。 窗口大小字段用于实现TCP协议的流量控制和差错恢复,TCP协议 中窗口大小是可变的。 校验和用于对TCP的头部实现校验。 选项部分用于实现除TCP头部指定功能外的附加功能 数据部分用于传送TCP用户所要求发送的数据
Internet运输层协议(TCP)(7) ◼ PSH标志表示要求马上发送数据,用于实现PUSH功能。 ◼ RST标志用于对本TCP连接进行复位,通常在TCP连接发生故障时 设置本标志,以使通信双方实现重新同步,初始化某些连接变量。 ◼ SYN标志用于建立TCP连接,一般SYN=1和ACK=0表示发起TCP连 接的建立,而SYN=1和ACK=1表示接受TCP连接。 ◼ FIN表示连接释放。 ◼ 窗口大小字段用于实现TCP协议的流量控制和差错恢复,TCP协议 中窗口大小是可变的。 ◼ 校验和用于对TCP的头部实现校验。 ◼ 选项部分用于实现除TCP头部指定功能外的附加功能。 ◼ 数据部分用于传送TCP用户所要求发送的数据
Internet运输层协议(TCP)(8) ■TCP协议建立连接冲突处理 SYNSEG∞) 02 主机 主机
Internet运输层协议(TCP)(8) ◼ TCP协议建立连接冲突处理
Internet运输层协议(TCP)(9) TCP协议连接管理状态图(下页) 状态转换图由状态和状态转换组成,状态表 达了系统所处的状态,在一定的状态下,系 统只能进行该状态所允许的动作,状态转换 表示一个状态到另一个状态的迁移,包括迁 移的条件和迁移的动作,用“条件/动作” 表示
Internet运输层协议(TCP)(9) ◼ TCP协议连接管理状态图 (下页) ◼ 状态转换图由状态和状态转换组成,状态表 达了系统所处的状态,在一定的状态下,系 统只能进行该状态所允许的动作,状态转换 表示一个状态到另一个状态的迁移,包括迁 移的条件和迁移的动作,用“条件/动作” 表示
Internet运输层协议(TCP)(10) Closed LISTEN/-LCLOSEA Listen SYN SYN R SYN/SYN+ACK Sent Established 主动释放 Aw·-被动释放 FINACK Clo Close Wait AGK ACK/- FIN FIN/ACK Wait 2
Internet运输层协议(TCP)(10) Closed Listen SYN Received SYN Sent Established FIN Wait 1 FIN Wait 2 Timed Wait Closing Close Wait 开始 ACK/- LISTEN/- CLOSE/- CLOSE/- CONNECT/SYN SYN/SYN+ACK RST/- SYN/SYN+ACK CLOSE/FIN ACK/- SYN+ACK/ACK FIN/FIN+ACK 超时 ACK/- CLOSE/FIN FIN/ACK FIN+ACK/ACK FIN/ACK ACK/- 主动释放 被动释放