《计算机网络基础与应用》由会员分享,可在线阅读,更多相关《计算机网络基础与应用(68页珍藏版)》请在金锄头文库上搜索。
1、计算机网络基础与应用计算机网络基础与应用信息管理与信息系统系信息管理与信息系统系EmailTo:EmailTo:School of Management运输层运输层运输层运输层1.1.TCP/IP TCP/IP 体系中的运输层体系中的运输层运输层中的两个协议运输层中的两个协议端口的概念端口的概念2.2.用户数据报协议用户数据报协议 UDP UDP UDP UDP 概述概述UDP UDP 用户数据报的首部格式用户数据报的首部格式3.3.传输控制协议传输控制协议 TCP TCP TCP TCP 报文段的首部报文段的首部TCP TCP 的数据编号与确认的数据编号与确认TCP TCP 的流量控制与拥塞
2、控制的流量控制与拥塞控制TCP TCP 的重传机制的重传机制School of Management运输层运输层运输层的介绍运输层的介绍从通信和信息处理的角度看,运输层向它上从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低部分的最高层,同时也是用户功能中的最低层。层。物理层网络层运输层应用层数据链路层面向信息处理面向通信用户功能网络功能School of Management运输层运输层运输层定义:运输层解决的是运输层定义:运输层解决的是计算机程序计算机程序到到计算机程序计算机程序之间的通信
3、问题,即所谓的之间的通信问题,即所谓的“端端”到到“端端”的通信。运输层对信息流具有的通信。运输层对信息流具有调调节节作用,提供可靠性传输,确保数据到达无作用,提供可靠性传输,确保数据到达无误。误。运输层的地位运输层的地位: :中间层中间层两种观点化分两种观点化分高层高层和和底层底层从通信和信息处理的角度看,运输层属于从通信和信息处理的角度看,运输层属于面向通信的最高层。面向通信的最高层。从网络功能或用户功能来划分,运输层属从网络功能或用户功能来划分,运输层属于用户功能的最低层。于用户功能的最低层。School of Management运输层运输层运输层协议和网络层协议的主要区别运输层协议和
4、网络层协议的主要区别应用进程应用进程IP 协议的作用范围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网School of Management运输层运输层运输层为相互通信的应用进程提供了运输层为相互通信的应用进程提供了逻辑通逻辑通信信两个主机进行通信实际上就是两个主机中的两个主机进行通信实际上就是两个主机中的应用应用进程进程互相通信,应用进程之间的通信又称为端到互相通信,应用进程之间的通信又称为端到端的通信。端的通信。 运输层的一个很重要的功能就是运输层的一个很重要的功能就是复用和分用复用和分用。应。应用层不同进程的报文通过不同的端口向下交到运
5、用层不同进程的报文通过不同的端口向下交到运输层,再往下就输层,再往下就共用网络层共用网络层提供的服务。提供的服务。“运输层提供应用进程间的运输层提供应用进程间的逻辑通信逻辑通信”。“逻辑逻辑通信通信”的意思是:运输层之间的通信好像是沿水的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。没有一条水平方向的物理连接。School of Management运输层运输层54321运输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP
6、层LAN1AP1AP2AP4端口端口54321IP 协议的作用范围运输层协议 TCP 和 UDP 的作用范围AP3School of Management运输层运输层运输层的主要功能运输层的主要功能运运输输层层为为应应用用进进程程之之间间提提供供端端到到端端的的逻逻辑辑通通信信(但但网网络络层层是是为为主主机机之之间间提提供供逻逻辑辑通通信)。信)。运输层还要对收到的报文进行差错检测。运输层还要对收到的报文进行差错检测。运运输输层层需需要要有有两两种种不不同同的的运运输输协协议议,即即面面向连接的向连接的 TCPTCP 和和无连接的无连接的 UDPUDP。School of Managemen
7、t运输层运输层运输层向上提供可靠的和不可靠的逻辑运输层向上提供可靠的和不可靠的逻辑通信信道通信信道?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用 TCP 协议使用 UDP 协议不可靠信道发送进程School of Management运输层运输层运输层中的两个协议运输层中的两个协议TCP/IPTCP/IP的运输层有两个不同的协议:的运输层有两个不同的协议:(1)(1)用户数据报协议用户数据报协议UDPUDP(User Datagram (User Datagram Protocol)Protocol)(2)(2)传输控制协议传输控制协议TCPTCP(Transmiss
8、ion Control (Transmission Control Protocol )Protocol )UDPUDP和和TCPTCP都使用都使用IPIP协议协议应有层应有层TCPUDPIP与各种网络的接口与各种网络的接口School of Management运输层运输层两个对等运输实体在通信时传送的数据单位两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元叫作运输协议数据单元TPDU TPDU (Transport (Transport Protocol Data Unit)Protocol Data Unit)。TCP TCP 传送的数据单位协议是传送的数据单位协议是 TCP
9、TCP 报文段报文段(segment)(segment)UDP UDP 传送的数据单位协议是传送的数据单位协议是 UDP UDP 报文或用户报文或用户数据报。数据报。School of Management运输层运输层TCP TCP 与与 UDPUDP1.1.UDP UDP 在在传传送送数数据据之之前前不不需需要要先先建建立立连连接接。对对方方的的运运输输层层在在收收到到 UDP UDP 报报文文后后,不不需需要要给给出出任任何何确确认认。虽虽然然 UDP UDP 不不提提供供可可靠靠交交付付,但但在在某某些些情情况况下下 UDP UDP 是是一一种种最最有有效效的的工工作作方式。方式。2.2
10、.TCP TCP 则则提提供供面面向向连连接接的的服服务务。TCP TCP 不不提提供供广广播播或或多多播播服服务务。由由于于 TCP TCP 要要提提供供可可靠靠的的、面面向向连连接接的的运运输输服服务务,因因此此不不可可避避免免地地增增加加了了许许多多的的开开销销。这这不不仅仅使使协协议议数数据据单单元元的的首首部增大很多,还要占用许多的处理机资源。部增大很多,还要占用许多的处理机资源。School of Management运输层运输层TCP TCP 与与 UDPUDP(contcont)3.3.运运输输层层的的 UDPUDP 用用户户数数据据报报与与网网际际层层的的IPIP数数据据报报
11、有有很很大大区区别别。IPIP 数数据据报报要要经经过过互互连连网网中中许许多多路路由由器器的的存存储储转转发发,但但 UDPUDP 用用户户数数据据报报是是在运输层的端到端抽象的逻辑信道中传送在运输层的端到端抽象的逻辑信道中传送4.4.TCPTCP 报报文文段段是是在在运运输输层层抽抽象象的的端端到到端端逻逻辑辑信信道道中中传传送送,这这种种信信道道是是可可靠靠的的全全双双工工信信道道。但但这这样样的的信信道道却却不不知知道道究究竟竟经经过过了了哪哪些些路路由由器器,而而这这些些路路由由器器也也根根本本不不知知道道上上面面的的运运输输层是否建立了层是否建立了 TCP TCP 连接。连接。Sc
12、hool of Management运输层运输层端口的概念端口的概念端口就是运输层服务访问点端口就是运输层服务访问点 TSAPTSAP。端口的作用就是让应用层的各种应用进程端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层从这个意义上讲,端口是用来标志应用层的进程。的进程。School of Management运输层运输层端口的概念(端口的概念(co
13、ntcont)端端口口号号只只具具有有本本地地意意义义,即即端端口口号号只只是是为为了了标标志志本本计计算算机机应应用用层层中中的的各各进进程程。在在因因特特网网中中不不同同计计算算机机的的相相同同端端口口号号是是没没有有联联系的。系的。端口的表示端口的表示端端口口用用1616位位来来表表示示,即即一一个个主主机机共共有有6553665536个个端端口口。序序号号0-10230-1023端端口口(1 1K K)称称为为熟熟知知端端口口,是是InternetInternet管管理理机机构构保保留留了了一一块块端端口号用于标准的口号用于标准的TCP/IPTCP/IP应用。应用。School of
14、Management运输层运输层端口的表示(端口的表示(contcont)另一类则是一般端口,用来随时分配给请另一类则是一般端口,用来随时分配给请求通信的客户进程。求通信的客户进程。FTPSMTPTFTPDNSTelnetSNMP2123255369161TCP UDP应用层应用层传输层传输层School of Management运输层运输层套接字套接字(socket)(socket)应用编程接口应用编程接口APIAPI(Application Application Programming InterfaceProgramming Interface)是运输层与应用)是运输层与应用层之间的
15、接口的通用名称。层之间的接口的通用名称。ABC IP = 202.112.103.47端口端口500端口端口501 IP = 202.112.103.47端口端口500 IP = 202.112.103.225端口端口25连连接接图图:与主机与主机C的的SMTP建立三个连接建立三个连接School of Management运输层运输层套接字套接字(socket)(socket)TCP TCP 使使用用“连连接接”( (而而不不仅仅仅仅是是“端端口口”) )作作为为最最基基本本的的抽抽象象,同同时时将将 TCP TCP 连连接接的的端端点称为点称为插口插口(socket)(socket),或,
16、或套接字套接字、套接口套接口。插口和端口、插口和端口、IP IP 地址的关系是:地址的关系是:IP 地址131.6.23.13 端口号1500 131.6.23.13, 1500插口(socket)School of Management运输层运输层套接字(套接字(socketsocket)传输层为上一层的应用程序提供一个标准传输层为上一层的应用程序提供一个标准的原语集,为服务提供者和用户之间进行的原语集,为服务提供者和用户之间进行可靠的数据传输架起了一座可靠的数据传输架起了一座“桥梁桥梁”。 原语原语含义含义LISTENLISTEN阻塞,直到有客户试图连接阻塞,直到有客户试图连接CONNEC
17、TCONNECT建立一个连接的活动尝试建立一个连接的活动尝试SENDSEND发送信息发送信息RECEIVERECEIVE阻塞,直到有数据到达阻塞,直到有数据到达DISCONNECTDISCONNECT释放连接释放连接School of Management运输层运输层TCP TCP 概述概述TCPTCP的服务的服务 实现可靠性实现可靠性 包丢失重发机制包丢失重发机制流量控制流量控制拥塞控制拥塞控制三次握手三次握手TCPTCP的报文格式的报文格式School of Management运输层运输层TCPTCP概述概述端口发送 TCP 报文段TCPTCP接收缓存发送缓存报文段报文段报文段端口发送端
18、接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程School of Management运输层运输层TCPTCP的最主要特点的最主要特点1.1.TCPTCP是是面向连接面向连接的运输层协议的运输层协议2.2.每一条每一条TCPTCP连接只能有两个连接只能有两个端点端点3.3.TCPTCP提供提供可靠交付可靠交付的服务,无差错、不的服务,无差错、不丢失、不重复丢失、不重复4.4.TCPTCP提供提供全双工全双工通信通信5.5.面向字节流面向字节流School of Management运输层运输层TCPTCP报文段的首部报文段的首部TCP首部20 字节的固定首部目 的 端 口数据偏
19、移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充源端口和目的端口字段源端口和目的端口字段各占各占 2 字节。端口是运输字节。端口是运输层与应
20、用层的服务接口。运输层的复用和分用功能都层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。要通过端口才能实现。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序号字段序号字段占占 4 字节。字节。TCP 连接中传送的数据流连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的
21、序号。的是本报文段所发送的数据的第一个字节的序号。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认号字段确认号字段占占 4 字节,是期望收到对方的下一个字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。报文段的数据的第一个字节的序号。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)
22、源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充数据偏移数据偏移占占 4 bit,它指出,它指出 TCP 报文段的数据起报文段的数据起始处距离始处距离 TCP 报文段的起始处有多远。报文段的起始处有多远。“数据偏移数据偏移”的单位不是字节而是的单位不是字节而是 32 bit 字(字(4 字节为计算单位)。字节为计算单位)。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSY
23、NRSTPSHACKURG比特 0 8 16 24 31填 充保留字段保留字段占占 6 bit,保留为今后使用,但目前,保留为今后使用,但目前应置为应置为 0。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急比特紧急比特 URG 当当 URG 1 时,表明紧急指时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送应尽快传
24、送(相当于高优先级的数据相当于高优先级的数据)。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认比特确认比特 ACK 只有当只有当 ACK 1 时确认号字时确认号字段才有效。当段才有效。当 ACK 0 时,确认号无效。时,确认号无效。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口
25、序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充推送比特推送比特 PSH (PuSH) 接收接收 TCP 收到推送比特收到推送比特置置 1 的报文段,就尽快地交付给接收应用进程,而不的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。再等到整个缓存都填满了后再向上交付。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8
26、 16 24 31填 充复位比特复位比特 RST (ReSeT) 当当 RST 1 时,表明时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。必须释放连接,然后再重新建立运输连接。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特同步比特 SYN 同步比特同步比特 SYN 置为
27、置为 1,就表示,就表示这是一个连接请求或连接接受报文。这是一个连接请求或连接接受报文。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG填 充终止比特终止比特 FIN (FINal) 用来释放一个连接。当用来释放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。毕,并要求释放运输连接。 School of Management运输层运输层TCP首
28、部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段窗口字段 占占 2 字节。窗口字段用来控制对方发送的数据量,字节。窗口字段用来控制对方发送的数据量,单位为字节。单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。School of Management运输层运输层TCP首部20字
29、节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充检检验验和和 占占 2 字字节节。检检验验和和字字段段检检验验的的范范围围包包括括首首部部和和数数据据这这两两部部分分。在在计计算算检检验验和和时时,要要在在 TCP 报文段的前面加上报文段的前面加上 12 字节的伪首部。字节的伪首部。School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口
30、确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧紧急急指指针针字字段段 占占 16 bit。紧紧急急指指针针指指出出:在在本本报报文文段段中中紧紧急急数数据据共共有有多多少少个个字字节节(紧紧急急数数据据放放在在本报文段数据的最前面)。本报文段数据的最前面)。 School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 只规定了
31、一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” School of Management运输层运输层TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填填充充字字段段 这这是是为为了了使使整整个个首首部部长长度度是是 4 字字节节的的整数倍。整数倍。 School of Management运输层运输层TCP
32、TCP 的数据编号与确认的数据编号与确认TCP TCP 协协议议是是面面向向字字节节的的。TCP TCP 将将所所要要传传送送的的报报文文看看成成是是字字节节组组成成的的数数据据流流,并并使使每每一一个个字节对应于一个序号。字节对应于一个序号。在在连连接接建建立立时时,双双方方要要商商定定初初始始序序号号。TCP TCP 每每次次发发送送的的报报文文段段的的首首部部中中的的序序号号字字段段数数值值表表示示该该报报文文段段中中的的数数据据部部分分的的第第一一个个字字节节的的序号序号。TCP TCP 的的确确认认是是对对接接收收到到的的数数据据的的最最高高序序号号表表示示确确认认。接接收收端端返返
33、回回的的确确认认号号是是已已收收到到的的数数据据的的最最高高序序号号加加 1 1。因因此此确确认认号号表表示示接接收收端端期期望望下下次次收收到到的的数数据据中中的的第第一一个个数数据据字字节节的的序号序号。School of Management运输层运输层可靠传输的工作原理可靠传输的工作原理理想的传输条件应该是:理想的传输条件应该是:1.1.传输信道不产生差错传输信道不产生差错2.2.不管发送方以多快的速度发送数据,接收不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据方总是来得及处理收到的数据停止等待协议停止等待协议1.1.无差错情况无差错情况2.2.出现差错出现差错3.3.
34、确认丢失和确认迟到确认丢失和确认迟到4.4.信道的利用率太低信道的利用率太低School of Management运输层运输层可靠传输的工作原理(可靠传输的工作原理(contcont)连续连续ARQARQ协议协议1.1.发送窗口发送窗口2.2.累积确认累积确认3.3.对按序到达的最后一个分组发送确认对按序到达的最后一个分组发送确认4.4.优点:实现容易优点:实现容易5.5.缺点:不能向发送方反映出接收方已经正缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息,比如中间的一确收到的所有分组的信息,比如中间的一个分组丢失了,发送方无法知道后面分组个分组丢失了,发送方无法知道后面分组的下落
35、,只能回退重传的下落,只能回退重传School of Management运输层运输层TCP TCP 的流量控制与拥塞控制的流量控制与拥塞控制滑动窗口滑动窗口的概念的概念TCP TCP 采采用用大大小小可可变变的的滑滑动动窗窗口口进进行行流流量量控控制制。窗口大小的单位是窗口大小的单位是字节字节。在在 TCP TCP 报报文文段段首首部部的的窗窗口口字字段段写写入入的的数数值值就是当前给对方设置的发送窗口数值的上限。就是当前给对方设置的发送窗口数值的上限。发发送送窗窗口口在在连连接接建建立立时时由由双双方方商商定定。但但在在通通信信的的过过程程中中,接接收收端端可可根根据据自自己己的的资资源源
36、情情况况,随随时时动动态态地地调调整整对对方方的的发发送送窗窗口口上上限限值值( (可可增大或减小增大或减小) )School of Management运输层运输层发送端要发送发送端要发送900900字节长的数据,划分为字节长的数据,划分为9 9个个100100字节长的报文段,而发送窗口确定为字节长的报文段,而发送窗口确定为500500字节。字节。发送端只要收到对方的确认,发送窗口就可前移。发送端只要收到对方的确认,发送窗口就可前移。发送发送 TCP TCP 要维护一个指针。每发送一个报文段,要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。指针就向前移动一个报文段的距离。收
37、到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送 指针School of Management运输层运输层发送端已发送了发送端已发送了 400 400 字节的数据,但只收到对前字节的数据,但只收到对前 200 200 字节数据的确认,同时窗口大小不变。字节数据的确认,同时窗口大小不变。现在发送端还可发送现在发送端还可发送 300 300 字节。字节。收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送 指针1002
38、003004005006007008009001012013014015016017018011可发送不可发送发送窗口前移已发送并被确认已发送但未被确认School of Management运输层运输层发送端收到了对方对前发送端收到了对方对前 400 400 字节数据的确认,但对方通字节数据的确认,但对方通知发送端必须把窗口减小到知发送端必须把窗口减小到 400 400 字节。字节。现在发送端最多还可发送现在发送端最多还可发送 400 400 字节的数据。字节的数据。 1002003004005006007008009001012013014015016017018011已发送并被确认已发送
39、但未被确认可发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小School of Management运输层运输层利用可变窗口大小进行流量控制利用可变窗口大小进行流量控制双方确定的窗口值是双方确定的窗口值是400400SEQ = 1SEQ = 201SEQ = 401SEQ = 301SEQ = 101SEQ = 501ACK = 201, WIN = 300ACK = 601, WIN = 0ACK = 501, WIN = 200主机 A主机 B允许 A 再发送 3
40、00 字节(序号 201 至 500)A 还能发送 200 字节A 还能发送 200 字节(序号 301 至 500)A 还能发送 300 字节A 还能发送 100 字节(序号 401 至 500)A 超时重发,但不能发送序号 500 以后的数据允许 A 再发送 200 字节(序号 501 至 700)A 还能发送 100 字节(序号 501 至 700)不允许 A 再发送,到序号 600 的数据都已收到SEQ = 201丢失!School of Management运输层运输层TCP TCP 的运输连接管理的运输连接管理运输连接就有三个阶段,即:运输连接就有三个阶段,即:连接建立连接建立、数
41、据传送数据传送和和连接释放连接释放。运输连接的管理。运输连接的管理就是使运输连接的建立和释放都能正常就是使运输连接的建立和释放都能正常地进行。地进行。连接建立过程中要解决以下三个问题:连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。School of Management运输层运输层客户服务器方式客户服务器方式TCP TCP 连接的建立都是采用客户服务器方式。连接的建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做主动发起连接建立的应用进程叫
42、做客户客户(client)(client)。被动等待连接建立的应用进程叫做被动等待连接建立的应用进程叫做服务器服务器(server)(server)。School of Management运输层运输层主动打开与被动打开主动打开与被动打开在客户机在客户机/ /服务器模式下,连接的建立请求服务器模式下,连接的建立请求是由客户机发起的,它执行是由客户机发起的,它执行“主动打开主动打开”,而服务器执行,而服务器执行“被动打开被动打开”,并对客户,并对客户机的连接请求被动响应。机的连接请求被动响应。在服务器进程的实现中,首先让服务器执在服务器进程的实现中,首先让服务器执行行“被动打开被动打开”,告诉其
43、,告诉其TCPTCP要准备接受客要准备接受客户进程的连接请求。然后服务器进程就处户进程的连接请求。然后服务器进程就处于于“听听(listen)”(listen)”的状态,不断检测是否的状态,不断检测是否有客户进程要发起连接请求。如有,即作有客户进程要发起连接请求。如有,即作出响应。出响应。 School of Management运输层运输层用三次握手建立用三次握手建立 TCP TCP 连接连接SYN, SEQ = x主机 BSYN, ACK, SEQ = y, ACK= x 1ACK, SEQ = x + 1, ACK = y 1被动打开主动打开确认确认主机 A连接请求School of M
44、anagement运输层运输层A A 的的 TCP TCP 向向 B B 发出连接请求报文段,其首部发出连接请求报文段,其首部中的同步比特中的同步比特 SYN SYN 应置为应置为 1 1,并选择序号,并选择序号 x x,表明传送数据时的第一个数据字节的序号是,表明传送数据时的第一个数据字节的序号是 x x。B B 的的 TCP TCP 收到连接请求报文段后,如同意,收到连接请求报文段后,如同意,则发回确认。则发回确认。B B 在确认报文段中应将在确认报文段中应将 SYN SYN 置为置为 1 1,其确认,其确认号应为号应为 x x 1 1,同时也为自己选择序号,同时也为自己选择序号 y y。
45、A A 收到此报文段后,向收到此报文段后,向 B B 给出确认,其确认给出确认,其确认号应为号应为 y y 1 1。A A 的的 TCP TCP 通知上层应用进程,连接已经建立。通知上层应用进程,连接已经建立。当运行服务器进程的主机当运行服务器进程的主机 B B 的的 TCP TCP 收到主机收到主机 A A 的确认后,也通知其上层应用进程,连接已的确认后,也通知其上层应用进程,连接已经建立。经建立。School of Management运输层运输层为了确保连接的建立和终止都是可靠的,为了确保连接的建立和终止都是可靠的,TCPTCP使用使用三次握手方式三次握手方式(即交换三次消息),(即交换
46、三次消息),SYNSYN消息用来进行创建连接,消息用来进行创建连接,FINFIN消息用来关闭一消息用来关闭一个连接。个连接。若若SYNSYN消息或消息或FINFIN消息丢失了,消息丢失了,TCPTCP将会重发。将会重发。“三次握手三次握手”是由连接双方的是由连接双方的TCPTCP完成的,应完成的,应用程序只要一个简单的用程序只要一个简单的connectconnect调用即可。比调用即可。比如执行如执行telnettelnet命令,当出现命令,当出现loginlogin时连接已建时连接已建立,建立的过程立,建立的过程TCPTCP协议实体在后台进行。协议实体在后台进行。School of Mana
47、gement运输层运输层“三次握手三次握手”的必要性的必要性原因一:防止已失效的连接请求报文原因一:防止已失效的连接请求报文段突然又传送到了主机段突然又传送到了主机B,因而产生,因而产生错误。错误。原因二:是安全性的考虑,防止原因二:是安全性的考虑,防止TCP欺骗,三次握手相当于验证过程。欺骗,三次握手相当于验证过程。 School of Management运输层运输层TCPTCP连接的终止连接的终止 半关闭半关闭的概念:半关闭有的地方叫做半打的概念:半关闭有的地方叫做半打开(开(half openhalf open)它就是关闭一个方向它就是关闭一个方向上的数据传送,而另一个方向可以传输数上
48、的数据传送,而另一个方向可以传输数据的一种状态。据的一种状态。 这是因为一个这是因为一个TCPTCP连接是全双工,每个方向连接是全双工,每个方向都可以独立的传输数据,因此每个方向必都可以独立的传输数据,因此每个方向必须单独地进行关闭。须单独地进行关闭。 这原则就是当一方完成它的数据发送任务这原则就是当一方完成它的数据发送任务后就能发送一个后就能发送一个FINFIN来终止这个方向的连接。来终止这个方向的连接。当一端收到一个当一端收到一个FINFIN,它必须通知应用层另,它必须通知应用层另一端已经终止了那个方向的数据传送。一端已经终止了那个方向的数据传送。 School of Management
49、运输层运输层FIN, SEQ = xACK, SEQ = y, ACK= x 1ACK, SEQ = x + 1, ACK = y 1应用进程释放连接A 不再发送报文FIN, ACK, SEQ = y, ACK = x + 1主机 B主机 A通知主机应用进程应用进程释放连接B 不再发送报文确认确认TCP 连接释放的过程连接释放的过程School of Management运输层运输层前两次握手前两次握手第一个半关闭第一个半关闭当主机当主机A A没有数据向没有数据向B B发送时,主机发送时,主机A A向主机向主机B B发送一个终止连接的发送一个终止连接的TCPTCP报文,将报文首报文,将报文首部
50、的终止比特部的终止比特FINFIN置置1 1,其序号,其序号x x等于前面已等于前面已传送过的数据的最后一个字节的序号加传送过的数据的最后一个字节的序号加1 1。主机主机B B的的TCPTCP收到释放连接的通知后,即发收到释放连接的通知后,即发出确认,其序号为出确认,其序号为x+1x+1。(这是因为终止报。(这是因为终止报文没有数据部分),同时通知高层的应用文没有数据部分),同时通知高层的应用进程。这样,从进程。这样,从A A到到B B的连接就释放了,连的连接就释放了,连接处于半关闭状态。这种状态相当于主机接处于半关闭状态。这种状态相当于主机A A对主机对主机B B说:说:“我已经没有数据要发
51、送了。我已经没有数据要发送了。但你如果还发送数据,我仍接收但你如果还发送数据,我仍接收”。 School of Management运输层运输层后两次握手后两次握手完全关闭完全关闭在主机在主机B B向主机向主机A A的数据发送结束后,其应的数据发送结束后,其应用进程就通知用进程就通知TCPTCP释放连接。主机释放连接。主机B B发出的发出的连接释放报文段必须将终止比特连接释放报文段必须将终止比特FINFIN置置1 1,并使序号并使序号y y等于前面已传送过的数据的最后等于前面已传送过的数据的最后一个字节的序号加一个字节的序号加1 1,还必须重复上次已发,还必须重复上次已发送过的送过的ACK=x
52、+1ACK=x+1。主机主机A A必须对此发出确认,给出必须对此发出确认,给出ACK=y+1ACK=y+1。这样才将从这样才将从B B到到A A的的 反方向连接释放掉。主反方向连接释放掉。主机机A A的的TCPTCP再向其应用进程报告,整个连接再向其应用进程报告,整个连接已全部释放。已全部释放。 School of Management运输层运输层TCP TCP 的正常的连接建立和关闭的正常的连接建立和关闭SYN, SEQ = x客户进程客户进程服务器进程服务器进程LISTEN(被动打开)(被动打开)(主动打开主动打开) SYN_SENTSYN_RCVDESTABLISHEDESTABLISH
53、ED(主动关闭主动关闭) FIN_WAIT_1CLOSE_WAIT ( 被动关闭被动关闭)FIN_WAIT_2LAST_ACKTIME_WAITCLOSED(全双工数据传送阶段)(全双工数据传送阶段)SYN, ACK, SEQ = y, ACK = x + 1ACK, SEQ = x + 1, ACK = y + 1FIN, SEQ = uACK, SEQ = v, ACK = u + 1FIN, ACK, SEQ = v, ACK = u + 1ACK, SEQ = u + 1, ACK = v + 1TIME_WAITCLOSE_WAITSYN_RCVDESTABLISHEDSchool
54、of Management运输层运输层拥塞控制拥塞控制实现流量控制并非仅仅为了使接收端来得实现流量控制并非仅仅为了使接收端来得及接收。如果发送端发出的报文过多会使及接收。如果发送端发出的报文过多会使网络负荷过重。因此会引起报文段的时延网络负荷过重。因此会引起报文段的时延增大,将使主机不能及时的收到确认,因增大,将使主机不能及时的收到确认,因此会重发更多的报文段,而这又会进一步此会重发更多的报文段,而这又会进一步加剧网络的拥塞。为了避免发生拥塞,主加剧网络的拥塞。为了避免发生拥塞,主机应当降低发送速率。机应当降低发送速率。可见发送端的主机在发送数据时,既要考可见发送端的主机在发送数据时,既要考虑
55、到接收端的接收能力,又要使网络不要虑到接收端的接收能力,又要使网络不要发生拥塞。发生拥塞。School of Management运输层运输层拥塞的判别:由于通信线路带来的误码拥塞的判别:由于通信线路带来的误码而使得分组丢失的概率很小(远小于而使得分组丢失的概率很小(远小于1%1%)。因此,只要出现分组丢失或延迟)。因此,只要出现分组丢失或延迟过长而引起超时重发,就意味着在网络过长而引起超时重发,就意味着在网络中的某个地方出现了拥塞。中的某个地方出现了拥塞。 发送窗口发送窗口= =MinMin通知窗口,拥塞窗口通知窗口,拥塞窗口 其中:其中:School of Management运输层运输层
56、通通知知窗窗口口:接接收收端端根根据据其其接接收收能能力力许许诺诺的的窗窗口口值值,是是来来自自接接收收端端的的流流量量控控制制。接接收收端端将将通通知知窗窗口口的的值值放放在在TCPTCP报报文文的的首部中,传送给发送端。首部中,传送给发送端。拥拥塞塞窗窗口口:是是发发送送端端根根据据网网络络拥拥塞塞情情况况得得出出得得窗窗口口值值,是是来来自自发发送送端端的的流流量量控控制制。在未发生拥塞的稳定情况下,接收端通在未发生拥塞的稳定情况下,接收端通知的窗口和拥塞窗口是知的窗口和拥塞窗口是一致一致的。的。 School of Management运输层运输层常见的使用常见的使用TCPTCP的应用
57、层协议的应用层协议ftpftp:定义了文件传输协议:定义了文件传输协议, ,使用使用2121端口。端口。 telnettelnet: 远程登陆远程登陆 ,使用,使用2323端口。端口。smtpsmtp:简单邮件传送协议。使用:简单邮件传送协议。使用2525端口。端口。 httphttp:超文本传送协议。使用:超文本传送协议。使用8080端口。端口。pop3 pop3 :用于接收邮件:用于接收邮件 ,使用,使用110110端口。端口。School of Management运输层运输层用户数据报协议(用户数据报协议(UDPUDP)UDPUDP采采用用无无连连接接的的方方式式提提供供高高层层协协议
58、议间间的的事事务处理服务,允许它们之间互相发送数据。务处理服务,允许它们之间互相发送数据。因为因为UDPUDP是一种无连接的数据报投递服务,是一种无连接的数据报投递服务,它就不保证可靠投递。它跟远程的它就不保证可靠投递。它跟远程的UDPUDP实体实体不建立端到端的连接,而只是将数据报送不建立端到端的连接,而只是将数据报送上网络,或者从网上接收数据报。上网络,或者从网上接收数据报。UDPUDP根据根据端口号对若干个应用程序进行多路复用,端口号对若干个应用程序进行多路复用,并能利用检验和检查数据的完整性。并能利用检验和检查数据的完整性。 School of Management运输层运输层UDP
59、UDP 用户数据报的首部格式用户数据报的首部格式伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报School of Management运输层运输层用户数据报用户数据报 UDP UDP 有两个字段:数据字段和首有两个字段:数据字段和首部字段。首部字段有部字段。首部字段有 8 8 个字节,由个字节,由 4 4 个字个字段组成,每个字段都是两个字节。段组成,每个字段都是两个字节。 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数
60、据报字节44112122222字节发送在前数 据首 部UDP 用户数据报School of Management运输层运输层在计算检验和时,临时把在计算检验和时,临时把“伪首部伪首部”和和 UDP UDP 用户数据报连接在一起。伪首部仅仅是为了用户数据报连接在一起。伪首部仅仅是为了计算检验和。计算检验和。伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报School of Management运输层运输层常见的使用常见的使用UDPUDP的服务的服务DNSDNS:DNSDNS用
61、的是用的是5353端口。域名解析服务。端口。域名解析服务。 SNMPSNMP:简单网络管理协议,使用:简单网络管理协议,使用161161端口,端口,是用来管理网络设备的。是用来管理网络设备的。 聊天软件聊天软件Oicq Oicq :OicqOicq的程序既接受服务,的程序既接受服务,又提供服务,这样两个聊天的人才是平等又提供服务,这样两个聊天的人才是平等的。的。oicqoicq用的是无连接的协议,其服务器用的是无连接的协议,其服务器使用使用80008000端口,侦听是否有信息到来端口,侦听是否有信息到来; ;客户客户端使用端使用40004000端口,向外发送信息。如果上端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。个好友聊天),就顺序往上加。TFTP:TFTP:端口号端口号6969School of Management