第7章 传输层.docx
- 文档编号:11094205
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:21
- 大小:1.03MB
第7章 传输层.docx
《第7章 传输层.docx》由会员分享,可在线阅读,更多相关《第7章 传输层.docx(21页珍藏版)》请在冰豆网上搜索。
第7章传输层
第7章传输层
教学内容
7.1传输层协议概述
7.2TCP/IP体系中的传输层
7.3用户数据报协议UDP
7.3传输控制协议TCP
本章重点
▪运输层协议的功能
▪套接字
▪TCP报文格式
▪TCP的流量控制与拥塞控制
▪TCP和连接与释放
7.1传输层协议概述
7.1.1进程之间的通信
传输层在层次体系结构中的地位
▪属于面向通信部分的最高层,用户功能中的最低层
▪为应用层提供通信服务
如何为应用进程提供逻辑通信
▪两个主机进行通信实际上就是两个主机中的应用进程互相通信。
应用进程之间的通信又称为端到端的通信。
▪传输层根据下面通信子网的特性最佳地利用网络资源,以可靠和经济的方式在两端主机的应用进程之间,建立一条运输连接,以透明地传送报文,即运输层向上一层为进行通信的两个进程之间提供一个端到端的逻辑通信,使它们看不见运输层以下的数据通信细节。
▪在通信子网内的各个交换节点以及连接各通信子网的路由器只能为主机之间提供逻辑通信,而且都没有运输层,所以,运输层只能存在于通信子网外面的主机中。
运输层的一个很重要的功能就是复用和分用。
应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。
7.1.2传输层中的两个协议
用户数据报协议UDP(UserDatagramProtocol)
▪提供不可靠的无连接的服务,实现尽力而为的传输
▪TPDU称为UDP报文或用户数据报
传输控制协议TCP(TransmissionControlProtocol)
▪提供可靠的面向连接的服务,由于需要确认、流量控制、计时和连接管理,会增加许多开销
▪TPDU称为TCP报文段
两点强调
▪UDP数据报与IP数据报存在很大区别:
IP数据报要经过互连网中的路由器进行转发,而UDP数据报是在传输层之间的端到端的逻辑信道中传输
▪TCP和网络层中的虚电路完全不同:
TCP报文段是在传输层的端到端的逻辑信道中传送,是可靠的全双工通信,但这样的信道却不知道经过哪些路由器
7.1.3端口与套接字
传输层与网络层最大的区别是传输层提供应用进程之间通信能力。
因此,通信端点的标识不仅是主机地址,还包括可以描述进程的某种信息。
为此TCP/IP协议提出了协议端口TSAP的概念,用于标识通信的进程。
端口是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。
UDP和TCP都使用端口与上层的应用进程进行通信和交互,因此在传输协议数据单元TPDU的首部都需要写入源端口和目的端口。
应用进程通过系统调用与某端口建立连接(binding绑定)后,从该端口将数据发给传输层,传输层传给该端口的数据都被相应绑定的进程所接收。
因此,端口标志着应用层的进程。
采用了复用和分用技术,在传输层与网络层的交互中只看见TCP报文段或UDP数据报,看不见应用进程。
端口用一个16位的端口号进行标识,端口号只具有本地意义,用来标识区分本机中应用层的各进程。
套接字socket,即套接口,或插口,由IP地址和端口号两部分组成,用来表示连接一个端点,好比单位电话号码+内部分机号码唯一表示通话的一方。
无论是面向连接的TCP协议,还是无连接的UDP协议都需用到套接字的概念。
7.2用户数据报协议UDP
7.2.1UDP概述
用户数据报协议UDP:
建立在IP之上的一种无连接的、不可靠的数据报传输服务,它只比IP数据报服务增加了端口、复用与分用和差错控制的功能。
UDP实体只是将数据报送上网络,或者从网上接收数据报。
UDP与IP的差别
▪IP由系统管理的网络软件使用,一般用户无法使用
▪UDP可由普通用户直接使用,故称为用户数据报UDP
▪UDP必须运行在IP之上,增加端口、差错控制等功能。
UDP保留应用程序定义的边界
▪不会将两个以上应用报文合并为一个
▪不会将一个应用报文分为几段。
UDP根据端口(Port)号对若干个应用程序进行多路复用,并能利用检验和检查数据的完整性。
基于UDP的应用程序必须自己解决可靠性问题,如报文丢失、报文重复、报文失序、流量控制等。
虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点。
▪无连接:
发送数据之前不需要建立连接。
▪尽最大努力传输:
不保证可靠交付,不使用拥塞控制,因此,不需要维持复杂的连接状态表。
▪没有拥塞控制,出现拥塞也不会降低发送速率,可满足某些实时应用(视频会议、IP电话等)。
▪面向报文:
应用进程的报文不再划分成分组传送。
▪支持一对一、一对多、多对一和多对多通信。
▪开销小:
只有8个字节的首部,不需要建立/释放连接。
伪首部:
并不是UDP数据报真正的首部,只是在计算校验和时和UDP用户数据报连接在一起进行计算,它无需向下传送,也无需向上递交,仅是为了计算检验和。
UDP首部字段的含义
▪源端口号、目的端口号
▪长度:
用户数据报的长度
▪检验和:
对首部(含伪首部)和数据按16位为一组,求和后取其反码
UDP支持的应用层协议主要有:
▪名字转换:
DNS,端口号为53
▪文件传送:
TFTP,端口号为69
▪路由选择协议:
RIP,端口号为520
▪远程过程调用:
SUNPRC,端口号为111
▪IP地址配置:
BOOTP,端口号为67
▪简单网络管理:
SNMP,端口号为161和162
▪远程文件服务器:
NFS
▪IP电话
▪流式多媒体通信
7.3传输控制协议TCP
7.3.1TCP概述
TCP是TCP/IP体系中面向连接的传输层协议,在不可靠的因特网上提供面向连接的、可靠的、端到端的、全双工的、基于字节流的传输服务。
TCP协议提供可靠性服务
▪将应用程序数据(字节流)封装成TPDU
选择适合发送的数据块大小(不超过64K,通常为1500字节)
▪对发送的TPDU启动计时器,超时重传
▪对正确接收的TPDU进行确认
▪对报头和数据计算校验和
对接收TPDU检错,丢弃差错的TPDU
▪识别并丢弃重复的TPDU
▪提供流量控制(实行缓冲区管理)
TCP协议提供面向连接的服务
▪每条连接用套接字对(套接字1,套接字2)来表示,套接字用来标识应用进程的端点
▪TCP连接是点到点的全双工通道,该全双工可视为两个不同方向的单工通道
▪TCP不支持多点组播或广播,只提供一对一通信。
TCP报文段首部各字段的含义
▪源端口和目的端口:
各16位,是传输层与应用层的服务接口;
▪序号:
指出报文段中数据的第1个字节在发送端数据流中的编号;
▪确认号:
捎带指出本机希望接收的下一个报文段的序号;
▪TCP头的长度:
4位,长度单位为32位字,包含可选项域;所以,它指明数据部分开始始离TCP报文段的起始处有多远;
▪6位的保留域;
▪6位的标识位:
置1表示有效
URG:
在URG=1时,和紧急指针配合使用,发送紧急数据;
ACK:
ACK=1时确认号才有效;
PSH:
PSH=1时,指示发送方和接收方将数据(一般是命令)不做缓存,立刻发送或接收;
RST:
RST=1时用于不可恢复的错误重置连接(即复位);
SYN:
用于连接建立指示;如:
SYN=1而ACK=0时表示连接请求报文段;SYN=1且ACK=1表示同意连接的报文段;
FIN:
FIN=1表示数据传送结束,指示连接释放
7.3.3TCP的数据编号与确认
字节的编号:
TCP提供面向字节流的传输,每个字节对应于一个编号,初始序号在建立连接时双方确定。
确认号:
TCP对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认,但返回的确认序号是已收到的数据的最高序号加1。
表示期望下次收到的第一个数据字节的序号。
副本与重传:
TCP将发送出去的每一个报文段副本保存在自己的发送缓存中。
若超时且未收到确认,则重传之;若未超时就收到确认,可删除此副本。
捎带确认:
TCP能提供全双工通信,因此通信中的每一方都不必专门发送确认报文段,而可以在传送数据时顺便把确认信息捎带传送,这样作可以提高传输效率。
报文段发送的控制机制:
▪TCP维持一个变量,等于MSS,当缓存的数据达到MSS字节时,就组装成一个报文段发送出去;
▪发送端应用进程使用PSH标志,指明要立即发送的报文段;
▪发送端计时器到,将当前缓存的数据装入报文段发送出去。
发送方在确定报文段的发送速率时,需要考虑接收端的接收能力,又要从全局考虑不使网络发生拥塞。
▪接收端窗口rwnd(receiverwindow):
由接收端根据其目前的接收缓存大小所许诺的最新的窗口值,以实现流量控制。
接收端在TCP报文中由win字段说明,又称通知窗口。
▪拥塞窗口cwnd(congestionwindow):
发送端根据自己估计的网络拥塞程度而设置的窗口值,通常初值设为MSS。
▪网络未发生拥塞时,通知窗口和拥塞窗口一般相等。
当网络未发生拥塞时,拥塞窗口可增大,以便充分利用网络资源;当网络发生拥塞时,拥塞窗口应减少,以减少流入到网络中的分组数。
网络拥塞:
只要发送端没有按时收到应当到达的确认报文ACK,即可认为网络发生拥塞
发送窗口的上限值=min{rwnd,cwnd}
慢开始(slow-start)算法
▪先将拥塞窗口初值cwnd0设为MSS
▪发送端按若发出一个最大段长的TCP段,并得到正确确认,将拥塞窗口变为最大段长的两倍;
▪每当发送端发出(拥塞窗口/最大段长)个TCP报文段,且都按时得到确认,则拥塞窗口加倍:
cwndi+1=2*cwndi;
▪重复上述步骤,拥塞窗口保持指数规律增长,直至发生丢包超时事件,或拥塞窗口大于阈值ssthresh(初始时ssthresh值设为64个报文段)。
发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。
我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。
在执行慢开始算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。
发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端可以接着发送M1和M2两个报文段。
接收端发回ACK2和ACK3。
发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加1。
现在发送端的cwnd从2增大到4,并可发送M4~M6共4个报文段。
发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加1,因此拥塞窗口cwnd随着传输次数按指数规律增长。
当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。
假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。
更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢开始算法。
当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。
7.3.7TCP的连接管理
TCP提供面向连接的传输服务:
建立连接,传送数据,释放连接。
建立连接要解决的三个问题
▪使每一方都能确知对方的存在,明确连接的端点
▪允许双方协商一些参数(最大报文长度,最大窗口大小,服务质量等)
▪对传输层实体资源(如缓存大小、连接表中的项目等)进行分配
TCP连接采用客户-服务器方式:
客户主动发出连接请求,服务器被动等待连接的建立
三次握手——建立连接
▪服务器方执行LISTEN和ACCEPT原语,被动监听;
▪客户方执行connect原语,产生一个SYN为1和ACK为0的TCP段,表示连接请求;
▪服务器方的传输实体接收到这个TCP段后,首先检查是否有服务进程在所请求的端口上监听,若没有,回答RST置位的TCP段;
▪若有服务进程在所请求的端口上监听,该服务进程可以决定是否接受该请求。
在接受后,发出一个SYN置1和ACK置1的TCP段表示连接确认,并请求与对方的连接;
▪发起方收到确认后,发出一个SYN置0和ACK置1的TCP段表示给对方的连接确认;
三次握手对于在连接的两端之间的正确同步既是必要的,也是充分的。
若两个主机同时试图建立彼此间的连接,则只能建立一条连接。
TCP连接是全双工的,包含了两个独立的流传送,每个方向上一个。
建立连接,一为数据交换做好准备,二是协商初始序列号等参数。
释放连接
▪当一个应用程序告诉TCP它没有更多的数据要发送时,发出FIN=1的TCP段,并启动定时器。
在收到确认后,或无确认并且超时,TCP关闭在一个方向上的连接。
▪正在发送的TCP为了关掉一条连接上的方向的那一半,把剩余数据发送完毕,等待接收方对它应答,然后发送一个FIN=1的报文段,接收方TCP确认这个FIN报文段,并通知自己这一边的应用程序没有更多的数据可提供(例如,使用操作系统的文件结束机制)。
▪当两个方向都已关断时,在每一端点上的TCP软件便删除各自的连接记录。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 传输层 传输