计算机网络第5章运输层

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机网络第5章运输层内容概览运输层协议概述用户数据报协议UDP传输控制协议TCP概述可靠传输的工作原理TCP报文段的首部格式TCP可靠传输的实现TCP的流量控制TCP的拥塞控制TCP的运输连接管理2019/12/1725.1运输层协议概述运输层的功能为不同主机上运行的应用进程之间提供逻辑通信(logicalcommunication)运输层协议的工作内容发送方:把应用数据划分成报文段(segments),交给网络层接收方:把报文段重组成应用数据,交付给应用层2019/12/173运输层为相互通信的应用进程提供了逻辑通信54321运输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1AP1AP2AP4端口端口54321IP协议的作用范围运输层协议TCP和UDP的作用范围AP35.1运输层协议概述运输层协议和网络层协议的区别2019/12/1755.1运输层协议概述两种不同的运输层协议TCP协议逻辑通信信道相当于一条全双工的可靠信道协议数据单元称为TCP报文段UDP协议逻辑通信信道是一条不可靠信道协议数据单元称为UDP报文或用户数据报TCPvsUDPUDP在传送数据之前不需要先建立连接。对方的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。TCP则提供面向连接的服务。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源2019/12/1765.1运输层协议概述端口端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程(或者线程)从这个意义上讲,端口是用来标志应用层的进程(或者线程)端口用一个16bit端口号进行标志端口分类熟知端口——数值一般为0~1023。登记端口号——数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。客户端口号或短暂端口号——数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。2019/12/1775.2用户数据报协议UDP一个最简单的运输层协议必须提供多路复用/多路分解服务差错检查2019/12/178实际上这就是UDP所提供的功能(RFC768)5.2用户数据报协议UDPUDP处理数据的流程发送方从应用进程得到数据附加上为多路复用/多路分解所需的源和目的端口号及差错检测信息,形成报文段(数据报)递交给网络层,尽力而为的交付给接收主机接收方从网络层接收报文段(数据报)根据目的端口号,将数据交付给相应的应用进程2019/12/179UDP通信事先无需握手,是无连接的5.2用户数据报协议UDPUDP的优势无需建立连接——建立连接会增加时延简单——发送方和接收方无需维护连接状态段首部开销小——TCP:20BytevsUDP:8Byte无拥塞控制——UDP可按需要随时发送面向报文的UDP发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。应用程序必须选择合适大小的报文。2019/12/17105.2用户数据报协议UDPUDP的首部格式2019/12/1711伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。5.2用户数据报协议UDPUDP的检查和目标检测收到的报文段的“差错”(例如,出现突变的比特)发送方把报文段看作是16比特字的序列检查和:对报文段的所有16比特字的和进行1的补运算发送方将计算校验和的结果写入UDP校验和字段中接收方计算接收到的报文段的校验和检查计算结果是否与收到报文段的校验和字段中的值相同不同—检测到错误相同—没有检测到错误(但仍可能存在错误)2019/12/17145.2用户数据报协议UDP2019/12/1715例子:将两个16比特字相加1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷和检查和注意:最高有效位的进位要回卷加到结果当中计算UDP检验和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101101→求和得出的结果0110100100010010→检验和153.19.8.104171.3.14.1112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全0171510871315全0数据数据数据数据数据数据数据全05.3传输控制协议TCP概述TCP的主要特点TCP是面向连接的运输层协议每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。TCP提供可靠交付的服务TCP提供全双工通信面向字节流2019/12/17175.3传输控制协议TCP概述TCP面向流的概念2019/12/17185.3传输控制协议TCP概述TCP连接是一条虚连接而不是一条真正的物理连接。TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。TCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。2019/12/17195.3传输控制协议TCP概述TCP连接TCP把连接作为最基本的抽象。每一条TCP连接有两个端点。TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenatedwith)IP地址即构成了套接字。2019/12/1720套接字socket=(IP地址:端口号)TCP连接::={socket1,socket2}={(IP1:port1),(IP2:port2)}5.3传输控制协议TCP概述若干Socket应用编程接口API称为socketAPI,简称为socketsocketAPI中使用的一个函数名也叫作socket调用socket函数的端点称为socket调用socket函数时其返回值称为socket描述符,可简称为socket在操作系统内核中连网协议的Berkeley实现,称为socket实现2019/12/17215.4可靠传输的工作原理2019/12/1722发送进程接收进程数据数据可靠信道应用层运输层可靠数据传输协议(发送方)可靠数据传输协议(接收方)数据数据rdt_send()Deliver_data()udt_send()rdt_rcv()分组分组不可靠信道网络层a)提供的服务b)服务实现不可靠信道的特性决定了可靠数据传输协议(rdt)的复杂性。5.4可靠传输的工作原理2019/12/1723发送方接收方rdt_send():由上层(如应用层)调用,将数据发送给接收方的上层udt_send():由rdt调用,将分组通过不可靠通道传给接收方rdt_rcv():当分组到达接收方时调用deliver_data():由rdt调用,将数据交付上层可靠数据传输协议(发送方)可靠数据传输协议(接收方)数据数据rdt_send()Deliver_data()udt_send()rdt_rcv()分组分组不可靠信道5.4可靠传输的工作原理我们将要:逐步地开发可靠数据传输协议(rdt)的发送方和接收方只考虑单向数据传输(unidirectionaldatatransfer)的情况但控制信息是双向传输的!用有限状态机(FSM)来描述发送方和接收方2019/12/1724状态1状态2事件引起状态变迁状态转换过程中的动作状态:由事件引起一个状态到另一个状态的变迁。事件动作5.4可靠传输的工作原理可靠信道上的可靠传输——rdt1.0底层信道完全可靠不会产生比特错误不会丢失分组分别为发送方和接收方建立FSM发送方将数据发送给底层信道接收方从底层信道接收数据2019/12/1725packet=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)等待来自下层的调用rdt_rcv(packet)发送方接收方等待来自上层的调用5.4可靠传输的工作原理信道可能导致比特出现差错时——rdt2.x第一个版本——rdt2.0假设分组比特可能受损所有传输的分组都将按序被接收,不会丢失处理机制如何判断分组受损——差错检测如何通知发送方分组是否受损——接收方反馈(ACK和NAK)在得知分组受损后,发送方如何处理——出错重传2019/12/17265.4可靠传输的工作原理rdt2.0的有限状态机FSM2019/12/1727等待来自上层的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&corrupt(rcvpkt)等待ACK或NAK等待来自下层的调用发送方接收方rdt_send(data)L5.4可靠传输的工作原理2019/12/1728等待来自上层的调用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)r

1 / 101
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功