教学重点和难点: 端口和套接字 TCP报文的格式及其字段的含义 TCP连接建立和拆除的过程 TCP可靠数据传输技术 TCP流量控制和拥塞控制 TCP重发机制 UDP报文格式 常用的TCP/IP应用用程序第8章 TCP/UDP协议 8.1 TCP/IP 的传输层 8.1. 1 传输层协议 TCP/IP的传输层的协议提供传输控制协议(TCP)用户数据报协议(UDP)UDP提供无连接的服务,UDP在传送数 据之前不需要建立连接。TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服 务。 8.1 TCP/IP 的传输层 8.1.2 端口和套接字 传输层协议实现应用进程间端到端的通信。计算机中的不同进 程可能同时进行通信,这时它们会用端口号进行区别,通过网络地址和端口号的组合达到惟一标识的目的,即套接字(Socket)。TCP和U DP都使用端口和套接字。套接字是IP地址加上一个端口。8.1 TCP/IP 的传输层 发送套接字=源IP地址+源端口号 接收套接 字=目的IP地址+目的端口号 每个端口都拥有一个叫端口号的整数描述符,用来标识不同的端口或进程。 8.1 TCP/IP 的传输层 应用层与传输层之间的接口这种端口号一般都小于1024。它们基本上都被分配给了已知的应用协议。 这些端口由于已经有了固定 的使用者,不能被动态地分配给其他应用程序。 8.1 TCP/IP 的传输层 (1) 保留端口 8.1 TCP/IP 的 传输层 TCP协议和UDP协议的一些常用保留端口这种端口的端口号一般都大于1024。这一类的端口没有固定的使用者,它们可以被动态地 分配给应用程序使用。也就是说,在使用应用软件访问网络的时候,应用软件可以向系统申请一个大于1024的端口号临时代表这个软件与传输层 交换数据,并且使用这个临时的端口与网络上的其他主机通信。 netstat命令查看端口使用情况 8.1 TCP/IP 的传输 层 (2) 动态分配的端口某些软件厂商通过使用注册端口,使它的特定软件享有固定的端口号,而不用向系统申请动态分配的端口号。一般,这 些特定的软件要使用注册端口,其厂商必须向端口的管理机构注册。大多数注册端口的端口号大于1024。TCP协议和UDP协议都允许16位 的端口值,分别能够提供65536个端口。不论端口号大于还是小于1024,以上三种端口都分别属于TCP协议和UDP协议。当然,也有些 协议的端口既属于TCP协议也属于UDP协议。 8.1 TCP/IP 的传输层 (3) 注册端口8.1 TCP/IP 的传输层 端口概念示意图TCP的协议数据单元被称为报文段(Segment),TCP通过报文段的交互来建立连接、传输数据、发出确认、进行差错 控制、流量控制及关闭连接。报文段分为两部分,即报文段头和数据,所谓报文段头就是TCP为了实现端到端可靠传输所加上的控制信息,而数据 则是指由高层即应用层来的数据。 8.2 传输控制协议TCP 15.2.1 TCP报文段的格式 8.2 传输控制协议TCP T CP报文段的首部源端口和目的端口字段:各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 8.2 传输控制协议TCP 比特0481692431序号字段:占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个 序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 8.2 传输控制协议TCP 确认号字段:占 4 字节,是期望收 到对方的下一个报文段的数据的第一个字节的序号。 8.2 传输控制协议TCP 数据偏移:占 4 bit,它指出 TCP 报文段的数 据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit 字(4 字节为计算单位)。 8.2 传 输控制协议TCP 保留字段:占 6 bit,保留为今后使用,但目前应置为 0。 8.2 传输控制协议TCP 紧急比特 URG :当 URG ? 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 8.2 传输控制 协议TCP 确认比特 ACK :只有当 ACK ? 1 时确认号字段才有效。当 ACK ? 0 时,确认号无效。 8.2 传输控制 协议TCP 推送比特 PSH (PuSH) :接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整 个缓存都填满了后再向上交付。 8.2 传输控制协议TCP 复位比特 RST (ReSeT) :当 RST ? 1 时,表明 TC P 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 8.2 传输控制协议TCP 同步比特 SYN :同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。 8.2 传输控制协议TCP 终止比特 FIN (FI Nal) :用来释放一个连接。当FIN ? 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。 8.2 传输控制协 议TCP 窗口字段:占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的 接收窗口大小,然后通知对方以确定对方的发送窗口的上限。8.2 传输控制协议TCP 检验和:占 2 字节。检验和字段检验的范围包括首 部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。8.2 传输控制协议TCP 紧急指针字段:占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。 8.2 传输控制协议TCP 选项字段 :长度可变。TC P 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存 所能接收的报文段的数据字段的最大长度是 MSS 个字节。” MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。MSS的选择较小,网络的利用率就降低。选择较大,TCP报文段太长,则IP层传输时就有可能分解成 多个短数据报片,传输时开销增大。MSS(TCP报文段数据部分大小)默认值是536字节。TCP报文段是536+20字节。8.2 传输 控制协议TCP TCP将所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,然后对每一个数据流编一个序号。在 连接建立时,双方要商定初始序号。TCP就将每一次所传送的报文段中的第一个数据字节的序号,放在 TCP首部的序号字段中。 TCP的确 认是对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认。但返回的确认序号是已收到的数据的最高序号加1。也就是说,确 认序号表示期望下次收到的第一个数据字节的序号。 8.2 传输控制协议TCP 15.2.2 序号与确认 TCP连接包括建立连接 、数据传输和拆除连接三个过程。TCP通过TCP端口提供连接服务,最后通过连接服务来接收和发送数据。TCP连接的申请、打开和关闭必须 遵守TCP协议的规定。TCP使用三次握手协议来建立连接。连接可以由任何一方发起,也可以由双方同时发起。一旦一台主机上的TCP软件已 经主动发起连接请求,运行在另一台主机上的TCP软件就被动地等待握手。 8.2 传输控制协议TCP 15.2.3 TCP连接的 建立和拆除 8.2 传输控制协议TCP 主机A主机B连接请求SYN=1,seq=x确认确认SYN=1,ACk=1,seq=y,AC K=x+1ACK=1,seq=x+1,ACK=y+1三次握手建立TCP连接8.2 传输控制协议TCP 发送4个数据段的过程8.2 传输控制协议TCP 主机B应用进程释放连接应用进程释放连接TCP连接释放的过程 8.2 传输控制协议TCP 8.2.4 TC P可靠数据传输技术 TCP协议采用了许多与数据链路层类似的机制来保证可靠的数据传输,如采用序列号、确认、滑动窗口协议等。 TCP协议的目的是为了实现端到端结点之间的可靠数据传输,而数据链路层协议则为了实现相邻结点之间的可靠数据传输。 1. 流量控制 8.2 传输控制协议TCP 8.2.5 TCP流量控制与拥塞控制 TCP采用大小可变的滑动窗口机制实现流量控制功能。主机A主机B主 机A还能发送200字节利用可变滑动窗口进行流量控制SEQ=1SEQ=101SEQ=201ACK=201,WIN=300SEQ=30 1SEQ=401SEQ=201ACK=501,WIN=200ACK=601,WIN=0SEQ=501丢失!主机A还能发送300字节 允许A再发送300字节(序号201至500)A还能发送200字节(序号301至500)A还能发送100字节(序号401至500)A 超时重发,但不能发送序号500以后的数据允许A再发送200字节(序号501至700)A还能发送100字节(序号601至700)不允 许A再发送,(到序号600的数据都收到了)8.2 传输控制协议TCP 8.2.6 重发机制 TCP每发送一个报文段,就设置 一次定时器。只要定时器设置的重发时间到而还没有收到确认,就要重发这一报文段。大家知道,TCP是在一个互连网的环境下工作。发送的报文 段可能只经过一个高速率的局域网,但也可能是经过多个低速率的广域网。报文段的端到端的时延会相差很多倍。 (1)发送数据之前不需要建立 连接,减少了开销和发送数据之前的时延。(2)UDP不使用拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状 态表。(3)UDP用户数据报只有8个字节的首部。(4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送效率降低。 8.3 用户数据报协议UDP 8.3.1 UDP概述 应用层协议使用的传输层协议8.3 用户数据报协议UDP 8.3.2 UDP数据报的首部格式 8.3 用户数据报协议UDP 8.3.3 UDP报文的发送和接收 UDP报文也是通过 IP协议来发送和接收的。 在发送数据时,UDP实体构造好UDP报文后,交付给IP协议,IP协议将整个UDP报文封装在IP数据 报中,形成IP数据报发送到网络中。 在接收数据时,UDP实体判断UDP报文的目的端口是否与当前使用的某个端口匹配。若 匹配,则将报文存入接收队列;若不匹配,则向源端发送一个端口不可达的ICMP报文,同时丢弃UDP报文。 Ipconfig命令可以显示 所有当前的 TCP/IP 网络配置值(如IP地址、网关、子网掩码)、刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设 置。语法格式为:ipconfig [/all] [/renew[Adapter]] [/release [Adapter]] [/ flushdns] [/displaydns] [/registerdns] [/showclassidAdapter] [/se tclassidAdapter [ClassID]] 8.4 任务:常用TCP/IP 实用程序的使用 8.4.1 hos tname命令此程序用于显示当前计算机的名称,即主机名。8.4.2 ipconfig命令 8.4.3 netstat命令 8. 4 任务:常用TCP/IP 实用程序的使用 netstat命令可以显示当前活动的TCP连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4统计信息(对于IP、ICMP、TCP和UDP协议)以及IPv6统计信息(对于IPv6)。netstat[-a] [ -e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval]8.4.4 Nbtstat命令 8.4 任务:常用TCP/IP 实用程序的使用 Nbtstat命令可以显示基于 TCP/IP 的 NetBIOS (NetBT) 协议统计资料、本地计算机和远程计算机的 NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和使用 Windows Internet 名称服务 (WINS) 注册的名称。nbtstat[-a RemoteName] [-A IPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval] |
|