第09章传输层.docx

上传人:b****2 文档编号:1738697 上传时间:2022-10-23 格式:DOCX 页数:14 大小:272.57KB
下载 相关 举报
第09章传输层.docx_第1页
第1页 / 共14页
第09章传输层.docx_第2页
第2页 / 共14页
第09章传输层.docx_第3页
第3页 / 共14页
第09章传输层.docx_第4页
第4页 / 共14页
第09章传输层.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

第09章传输层.docx

《第09章传输层.docx》由会员分享,可在线阅读,更多相关《第09章传输层.docx(14页珍藏版)》请在冰豆网上搜索。

第09章传输层.docx

第09章传输层

第09章传输层

一传输层概述

1传输层的功能

⏹提供端到端的交付服务

⏹分段和重组

⏹提供端到端的可靠通信保证(检错机制、应答机制、超时重发机制)

⏹按序交付(缓冲机制)

⏹流量控制(窗口机制)

⏹拥塞控制

2什么是端到端的交付

端到端的交付实际是一个多路复用和多路分解的过程,下面的例子有助于我们理解传输层的多路复用和多路分解功能

我们先考察公司之间通过邮政系统互发信件的情景:

公司的收发室为每个部门分配了一个信箱,各个部门都把要发出去的信件放到各自的信箱里,并从信箱里取走发给本部门的信件;收发室的工作人员负责从各部门的信箱里收集要发出去的信件,然后交给每天到家门口来的邮政车,以及从邮政车上取下发往本公司各部门的信件并分投到各部门的信箱之中

主机之间通信的情景跟公司间通信的情景很相似:

主机中各个应用进程将要发出去的数据块放到各自的传输层服务访问点(TSAP)中,并从各自的TSAP中取走发给本进程的数据块;传输层从各个进程的TSAP中收集要发出去的数据块,给它们加上传输层首部,构成报文段,交给网络层(这叫做多路复用);传输层接收来自网络层的报文段,根据报文段的首部信息将它们分别定向各到目标进程的TSAP(这叫做多路分解)

公司=主机

部门=应用进程

收发室=运输层

邮政系统=网络层

信箱=传输层服务访问点TSAP

3端口(Port)和套接字(Socket)

⏹端口就是传输层服务访问点TSAP,每个网络应用进程都有1到多个端口,其作用相当于信箱:

网络应用进程将要发送的数据块放在各自的端口中;传输层从各网络应用进程的端口中收集数据块,给它们加上源、目端口号等控制字段,构成报文段,然后交网络层传送;传输层接收来自网络层的数据报,根据它们的目的端口号字段将它们包含的数据定向到恰当的端口中;网络应用进程从各自的端口中取走发给它们的数据块;端口通常就是报文队列,如上图所示

⏹端口号在一个端系统内有多个端口,端口号就是端口标识,也就是传输层地址

⏹端系统中的端口总是和运行于其上的一个网络应用进程相关联,从这个意义上讲,在一个端系统内,端口号同时也是网络应用进程的标识

⏹有两类端口号:

一类是周知端口号,编号范围是0~1023,每当开发一种新的网络服务程序,必须给它分配一个周知端口号,比如FTP服务器的端口号是21,HTTP服务器的端口号是80,等等;另一类是一般端口号,用来随时分配给请求通信的客户进程

⏹端口号仅具有本地意义,在一个端系统上运行的多个网络应用进程的端口号不能重叠,运行在不同的端系统上的网络应用进程的端口号可以重叠,比如运行在多个端系统上的HTTP服务器进程的端口号都是80。

为了唯一地标识一个网络应用进程的端口,除端口号外,还必须加上IP地址,IP地址加端口号就是所谓的套接字;在TCP/IP协议中,UDP套接字是一个2元组:

(IP地址,端口号);TCP套接字是一个4元组:

(源IP地址,源端口号,目的IP地址,目的端口号)

二互联网的传输层协议

1互联网的两个传输层协议

互联网的传输层协议有两个——传输控制协议TCP和用户数据报协议UDP。

TCP提供可靠的、面向连接的运输服务,UDP提供不可靠的、无连接的运输服务

两个对等的传输层实体在通信时传送的数据单元叫作传输层协议数据单元TPDU;TCP传送的协议数据单元是TCP报文段;UDP传送的协议数据单元是UDP报文或用户数据报

2用户数据报协议UDP

1)UDP概述

⏹UDP提供不可靠的、无连接的运输服务

⏹UDP只在IP的数据报服务之上增加了很少一点的功能,也就是端口的功能和差错检测的功能。

UDP不提供差错恢复、流量控制和拥塞控制功能,不保证按序交付

⏹发送数据时无须事先建立连接,收到一个UDP报文时无须应答

⏹UDP的优点:

UDP的主机无须维护复杂的连接状态表;UDP用户数据报只有8字节的首部开销;网络出现拥塞时不会使源主机的发送速率降低。

这对某些实时应用是很重要的

2)UDP用户数据报的格式

3传输控制协议TCP

1)TCP概述

⏹TCP是面向连接的协议,即位于两个端系统中的一对应用进程在交换数据前,这两个端系统中的TCP必需事先交换一系列用于控制目的的报文段,目的是为那一对进程建立一个TCP连接。

建立TCP连接实质就是两个端系统中的TCP为连接的双方分配资源,初始化若干状态变量

⏹一个TCP连接包含以下要素:

一台主机上的缓存、一组变量、与一个进程关联的套接字,以及另一台主机上的缓存、一组变量、与一个进程关联的套接字

⏹TCP连接既不是电路交换网络中的端到端TDM或FDM电路,也不是一条虚电路,原因在于TCP连接状态仅保存在端系统中,中继结点不会维持TCP连接状态

⏹TCP连接的双方以全双工方式通信,图中为了简洁只表现了一个方向上的数据流。

TCP连接仅支持点对点方式,不支持多点方式,因此TCP不支持广播和多播

⏹一旦建立起TCP连接,两个应用进程就可以交换数据了,大致的过程如上图所示,同样是为了简洁没有表现出IP和链路层的动作

⏹发送进程发送数据的速度和接收进程接收数据的速度不相同,TCP需要缓存暂存数据。

每个方向上都有两个缓存,发送缓存和接收缓存,缓存的数据结构可能是环形字节队列,如下图所示。

发送缓存中的的位置分为3类:

白色为空位置,发送进程可以将数据填入到空位置;浅灰色位置存放的是TCP将要要发送的字节;深灰色位置存放的字节已发送出去,但还没被确认,一旦其中的字节被确认,存放被确认字节的位置即可被发送进程再利用。

接收缓存中的位置分为2类:

白色表示空闲位置,从网络接收的数据存放到这个区域;灰色位置存放已接收的字节,这些字节可以被接收进程读取,当其中的字节接收进程被读取后,其位置可被再利用

2)TCP报文段首部格式

⏹源端口号(2B)和目的端口号(2B)源端口号就是发放方进程的端口号,目的端口号就是接收方进程的端口号。

TCP借助于这两个字段实现多路复用和多路分解功能

⏹序号(4B)序号字段的值指示本报文段所携带的数据的首字节序号。

比如A、B两个进程建立了TCP连接,A通过该连接向B发送了500000B,假设TCP这50000B数据分成500个片段,每个片段段长度为1000B,第一个片段的首字节编号为0,第二个片段的首字节编号为1000,第三个片段的首字节编号为2000,……。

然后TCP会将这500个片段封装成500个报文段交网络层发送,则第一个报文段的序号字段填入0,第二个报文段的序号字段填入1000,第三个报文段的序号字段填入2000,……

⏹确认号(4B)期望收到对方的下一个报文段的数据的首字节序号

⏹首部长度(4b)由于存在选项字段,所以要设首部长度字段指示TCP首部的字节数。

需要强调的是该字段的单位是32比特字

⏹保留(6b)留着以后使用,目前应置为0

⏹紧急比特URG(1b)为1表示紧急指针字段有效。

它告诉系统此报文段中有紧急数据(相当于高优先级数据)应尽快传送

⏹确认比特ACK(1b)为1表示确认号字段有效

⏹急迫比特PSH(1b)接收方TCP收到PSH位置1的报文段后,会立即交付接收方应用进程,而不是等接收缓存满后再上交

⏹复位比特RST(1b)为1表示TCP连接出现严重错误,需立即释放连接,然后重建TCP连接

⏹同步比特SYN(1b)为1表示是一个连接请求或连接接受报文段

⏹终止比特FIN(1b)为1表示此报文段的发送方已发完数据,请求释放连接

⏹窗口(2B)用来控制对方发送的数据量,单位是字节。

TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限

⏹检查和(2B)检验和字段检验的范围包括首部和数据这两部分

⏹紧急指针(2B)指出本报文段中紧急数据的最后一个字节的序号

⏹选项TCP只规定了一种选项,即最大报文段长度MSS,该字段旨在告诉对方TCP,我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节

3)TCP如何确保传输的可靠性

TCP确保传输可靠性的措施包括计算校验和、给要发送的数据以字节为单位编号、在报文段中捎带确认信息、重传

TCP如何计算检查和?

TCP通过计算检查和提供检错功能,校验的范围包括首部、数据和伪首部;伪首部长度为12B,其中包括了源IP地址(4B)、目的IP地址(4B)、协议号、报文段长度等字段,伪首部仅仅用于计算检查和;在计算检查和时,临时将TCP首部中的检查和字段置0;如果数据部分的长度是奇数个字节,则在其后临时补一个全0字节,计算完检查和后删除该字节;将伪首部、首部、数据看成是一个16位长的字序列,将所有的字进行二进制反码求和,即最高位上有进位时不进位,而是在和的最低位上加1,然后将求和的结果取反,得到的结果就是检查和

TCP如何给要发送的数据编号?

TCP把一个连接中发送的所有数据字节都编了号,且两个方向上的数据流中的字节编号是彼此独立的。

编号不一定总是从0开始,TCP生成一个0~232-1之间的随机数作为第一个字节的编号。

比如主机A中的进程1通过TCP连接向主机B中的进程2一共发送了50000字节的数据,这些数据被主机A中的TCP看成是一个字节流,字节流的首字节序号是0,其后的字节序号依次是1、2、3、……、49999

假设主机A中的TCP将这50000B数据等分成500个的数据块,每个数据块的大小是1000B,则第一个数据块的首字节序号是0,第二个数据块的首字节序号是1000,第三个数据块的首字节序号是2000,依次类推

主机A中的TCP将这500个数据块封装成500个报文段交网络层发送,它将在第一个报文段的序号字段填入0,在第二个报文段的序号字段填入1000,在第3个报文段的序号字段中填入2000,依次类推。

一言蔽之,报文段中的序号字段的值就是它所携带的数据块的首字节序号

TCP如何对收到的数据进行确认?

规则1一方向另一方发送报文段时,通过报文段的确认号字段告诉对方它期待的下一个数据字节的序号是多少。

比如主机A中的进程1和主机B中的进程2通过TCP连接交换数据,在某一时刻,主机B中的TCP收到一个报文段,其中包含了进程1发给进程2的数据,假设该报文段的确认号字段的值为ACKN,于是主机B中的TCP就明白了:

进程2发给进程1的数据中,序号为ACKN-1的字节以及在它之前的字节已经被主机A中的TCP收到,正期待接收序号为ACKN的字节

规则2如果一方没有数据要发送,并且它接收到对方一个按序到达的报文段,同时前一个按序到达的报文段已经确认过了,它会等待500毫秒,如果500毫秒内没有收到对方下一个按序到达的报文段,它会向对方发一个不包含数据的ACK报文段,通过其中的确认号字段告诉对方它期待的下一个数据字节的序号;ACK报文段不携带数据,不消耗序号,也不用确认

规则3如果一方收到按序到达的报文段,前一个按序到达报文段还没有确认,它立即向对方发送ACK报文段

规则4接收端收到一个失序到达的报文段,使得接收到的数据中产生空隙,接收端立即发送ACK报文段,以告诉对方它期待收到的下一个数据字节的序号

规则5接收端收到一个能补空隙的报文段,接收端立即发送ACK报文段,以告诉对方它期待的下一个数据字节的序号

规则6接收端收到一个重复到达的报文段,接收端立即发送ACK报文段,以告诉对方它期待的下一个数据字节的序号

Seq=501,501~600,Ack=x

Ack=701

发送方

接收方

Seq=601,601~700,Ack=x

Seq=501,501~600,Ack=x

Ack=701

超时

规则6图示

TC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1