网络协议实践课程第3章20140301讲解

上传人:我** 文档编号:115246022 上传时间:2019-11-13 格式:PPT 页数:58 大小:1.64MB
返回 下载 相关 举报
网络协议实践课程第3章20140301讲解_第1页
第1页 / 共58页
网络协议实践课程第3章20140301讲解_第2页
第2页 / 共58页
网络协议实践课程第3章20140301讲解_第3页
第3页 / 共58页
网络协议实践课程第3章20140301讲解_第4页
第4页 / 共58页
网络协议实践课程第3章20140301讲解_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《网络协议实践课程第3章20140301讲解》由会员分享,可在线阅读,更多相关《网络协议实践课程第3章20140301讲解(58页珍藏版)》请在金锄头文库上搜索。

1、Computer Networking,Internet Protocol Action,李毅超,2011.12,第三章 传输层协议,引 言 在因特网上,传输层协议负责将数据从一个应用程序传递到另一个应用程序。它既不关心所传输的具体数据,也不关心能否正确识别目标主机。 传输层目前的两个主要的协议: TCP(传输控制协议) UDP(数据报协议),第三章 传输层协议,TCP和UDP都提供了多路复用和多路分解,但是TCP提供的许多特性UDP却不提供,比如可靠的有序报文传输、流量控制和拥塞控制。 多路复用(multiplex)和多路分解(demultiplex ) 传输层协议指定了用于正确定位应用程序

2、发送端和接收端的源端口号和目的端口号。这一过程称为多路复用(multiplex)和多路分解(demultiplex )。 因特网同一主机上的应用程序所产生的多个数据流复用一个输出连接。因特网同一主机上不同应用程序的多个数据流可能也会通过一个输出连接传输,但是它们最终将会被分解并传输到各自的应用程序中去。,在本章的实验中,将会详细讨论这些特性。 实验3. 1中,将首先观察简单的TCP流。我们将观察TCP报文段的首部,并且讨论TCP如何完成可靠的有序报文传输。 实验3. 2中,将详细研究TCP的重传。我们将考虑致使TCP重新发送传输过的数据副本的各种事件。我们还会查看各种TCP变体,包括带选择确认

3、的TCP。 实验3. 3中,将介绍UDP及其数据报首部。我们将比较传输同样数据的TCP流和UDP流,我们还会分析,对于没有接收端监听输入数据的情况,TCP和UDP的发送端是如何处理的。 实验3. 4中,将观察TCP流量控制和拥塞控制属性。我们将把TCP与既没有流量控制又没有拥塞控制的UDP进行比较。我们将观察两个并发运行的TCP流、一个与UDP流并发运行的TCP流,以及两个并发运行的UDP流。我们将说明TCP的发送端之间会平等地共享网络,而UDP的发送端却不会限制发送速率。,实验3. 1 TCP介绍,简介 TCP是因特网中最主要的传输层协议。它能够在两个应用程序间提供可靠的有序数据流传输,即使

4、这两个程序运行在不同的主机上并且被一个会丢失、重排序或者破坏分组的不可靠网络所隔开。 TCP能够检测传输过程中分组是否丢失、延迟和改变,如是则重传这些分组,从而提供了可靠的数据流传输。 可以想像一下,你在用一台可能丢页的传真机来传送大量的文档。你可能会把文档编上页号,这样接收端就能知道哪部分丢失了。 TCP报文段首部格式如图3.1.1(RFC793):,源端口字段和目的端口字段就不说了。 序号字段表示分组中第一个字节的在传输字节流中的编号。 确认号字段是数据流中下一个期望接收的字节的编号。 数据偏移字段,它表示报文段的数据部分的开始位置。由于TCP首部的长度会因为使用可变长度选项字段而发生变化

5、,所以设置数据偏移字段是必要的。 标志部分含有6个不同的位:URGENT位、ACKNOWLEDGEMENT位、PUSH位、RESET位、SYN位和FIN位。 ACKNOWLEDGEMENT位只表明确认字段是否有效。 PUSH位用于表示发送端应用程序要求数据立刻发送。 SYN , FIN , RESET这三位用来打开或关闭连接。 URGENT位和紧急指针字段通常很少使用,所以在这里不做讨论。 接收端通告窗口字段和校验和字段,一、配置 如图3.1.2,2台PC上都安装ttcp来产生具有一定特征的TCP流。 先在1台PC上启动接收端,后在另1台PC上启动1个发送端。建立TCP连接,发送数据。,二、实

6、验 本地ttcp连接 接收端PC(192.168.0.102) Ethereal开始捕获,启动发送端PC(192.168.0.100) 发送端和接收端退出时候Ethereal停止捕获,将跟踪的结果保存在tcp_pcattcp_n1.cap中。,三、观察跟踪记录tcp_pcattcp_n1.cap 连接建立 分组3到5显示的就是3次握手。 第1条SYN分组。 SYN位为1。序号是随机数,而Ethereal显示0为逻辑序号。 第2条SYNACK分组。 SYN、ACK位均为1。确认号是前SYN分组随机数+1,而Ethereal显示1为逻辑序号。序号也是另一随机数,而Ethereal显示0 。 第3条

7、ACK分组,客户端发送带有标志ACK的TCP报文段来完成三次握手的过程。这个报文段将确认服务器发送的SYNACK分组,并检查TCP连接的两端是否正确地打开和运作。,所有随后的TCP报文段都将拥有ACK标志,因为每端都会报告数据流中预期到来的下一个字节。如果一方没有发送数据,另一方会为余下的连接发送同样的确认号。 三次握手也会用来协商连接的某些属性。比如,MSS (Maximum Segment Size)。本地网上能发送的最大TCP报文段1460字节 。 单向数据流 一旦连接建立了,ttcp发送端(客户端)将向数据流写入8192个字节。从应用程序的角度来看,这是作为一个单位传送的。然而,底层的

8、网络并不能支持容纳8192个字节这样大的分组,因此TCP会将这一个逻辑传送单位分成多个报文段。,跟踪记录中,包含数据的第一个报文段如分组6所示。它包含前1460个字节。再加上20个TCP首部字节和20个IP首部字节,这样就达到了1500个字节,这也是以太网所允计的最大字节长度。再加上14个字节的以太网帧首部,这个帧的总大小为1514个字节。 分组7、 9、10和11也都传送1460个字节,这样就传送了1460 x 5 = 7300个字节,剩下的8192-7300 = 892个字节将在分组13里面发送。 本实验服务器不会回传任何数据给客户端。因此,所有从端口号5001到2440发送的分组都只包含

9、TCP首部而没有数据。即使没有自身要传送的数据,服务器也要发送TCP报文段给客户端,提供哪些数据已经被成功接受的反馈。 比如在分组8中,服务器发送一个确认号为2921的报文段。服务器通过宣布期望接收的下一个字节号是2921来确认分组6和分组7已经接收。,连接关闭 当两端交换带有FIN标志的TCP报文段并且每一端都确认另一端发送的FIN包时,TCP连接将会关闭。 但那些重传的数据仍然会被传送,直到接收端确认所有的信息。 在tcp_pcattcp_n1.cap中,通过分组13至16我们可以看到TCP连接被关闭。ttcp发送端写完了数据的8192个字节,它就准备断开连接了。,在分组13里,包含了最后

10、892节并且设置了FIN位指示没有额外的数据将要被传送。 在分组14里,服务器确认已经收到了所有发送的数据。我们注意到这时确认号为8194而不是8193。这是由于FIN自身被当作第8193个字节了。 在分组15中,服务器也发送一个FIN标志指示不会发送任何其他附加的数据了。 在分组16中,客户端会发送最后一个确认号为2的报文段来确认服务器所发的FIN标志,因为FIN本身也被看作为最后的字节。,2个FIN和相应ACK是用来终止一个TCP连接的较好方法。 也可以通过设置RESET位来终止TCP连接。尽管设计RESET是为了处理不可恢复的错误,但是在实践中也经常用来进行快速终止连接,以避免常规的FI

11、N-ACK交换。,连接统计 StatisticTCP Stream GraphTime-Sequence Graph(tcptrace) 注意只能看发送端到接收端1到8194,或者接收端到发送端0到2。 AnanyzeFollow TCP Stream 看到两端所有数据,或发送端到接收端/接收端到发送端的数据。 (见下页截图) Statistics Protocol Hierarchy 在这种情况下,Ethereal会报告在整个跟踪文件中总共有9090个字节的数据、8988个字节的TCP通信。在我们的跟踪记录中,有6个分组(分组6, 7, 9, 10, 11和13)含有数据,它们都包含有54个

12、字节的首部(20个字节的TCP首部、20个字节的IP首部和14个字节的以太网首部)即总共54x6=324 字节+8192字节数据=8516字节,另外8个分组不含数据,54x8=432字节,总和正好为8988字节。,远程SSH连接(交互式双向数据流) 除了在本地网上由ttcp产生的一个TCP连接以外,我们还在本地机和一个远程服务器之间产生一个SSH连接。将所捕获的网络通信保存在文件tcp_ssh. cap中。 客户端和服务器都发送数据。通过使用Follow TCP Stream来分离开每一方的数据通道,你能够很快地发现不同之处。实际操作来看看 SSH客户端会发送很多只有少量数据的报文段,因为这种

13、连接代表一种交互式的数据流,而不是大量传输8192个字节的ttcp流。 看看其TCP报文段首部的PUSH标志位。TCP层正常情况下尝试在通过网络发送数据之前收集足够多的数据来最大限度地填满一个报文段。在应用程序要求该报文段不等填满便立即被发送的时候,PUSH标志位置1。,TCP首部消耗了整个数据流中的较大比例。 在SSH流中即使最大报文段大小仍为1460个字节,事实上,大多数报文段包含的数据都少于100个字节。 整个会话过程的字节数是8606个。这比起ttcp流中的8192个字节来说并不算多,但是却一共需要118个报文段包含数据,而不是6个报文段。 在这个实验中TCP数据流包含有8606个字节

14、的数据,而总共传输却有18508个字节(数据占46%)。而在ttcp流中含有8192个字节的数据,总共传输8988个字节(数据占91% ) 。,小节,本堂课,我们用Ethereal逆向分析了TCP协议的一些细节,让我们对TCP报文段格式、TCP连接建立、连接关闭、单向或双向数据流传输以及传输的开销都有了直观基本的认识。,实验3. 2 TCP重传,简介 本节重点探讨TCP在一个不可靠的网络上如何依靠接收端返回的检查丢失或错误的反馈来提供一个可靠的数据传输。在这个实验里,将观察发生重传时TCP连接的跟踪记录。 重传计时器 当一个TCP发送端传输一个报文段的同时也设置了一个重传计时器。确认到达时,该

15、计时器就自动取消。如果在数据的确认信息到达之前这个计时器超时,那么数据将会重传。 重传计时器能够自动灵活设置。最初,TCP是基于初始的SYN和SYN ACK之间的时间来设置重传计时器的。在整个TCP连接中,TCP都会注意每个报文段的发送和收到相应的确认所经历的时间。我们会计算出这些时间的一个平均值,那样的话,累积平均值会比最近采样更具有说服力。,TCP也会把一系列重复确认的分组当作是数据丢失的先兆。 也就是说发送端不一定非得等到超时重传。 如果接收端期望的字节号是1000,然而接收到的字节号却是2000到3000,那么它们必须继续设置确认号为1000。如果包含字节号从1000到1099的段丢失

16、了,那么它们将继续为每个新接收的报文段发送确认号1000。当发送端看见带有同样确认号的一系列报文段的时候,它会假设虽然数据到达了另外一端并且发送了确认号,但是包含第1000字节的报文段却丢失了。 TCP后来的版本为接收端提供了一种方法,可以指示已经接收到的报文段中哪些是失序的。这称为选择确认,具有这种特征的TCP常常被称作TCP SACK。发送端和接收端可以在连接建立的三次握手期间协商是否使用SACK这样的附加特征。,一、配置,便携式电脑使用无线接口,方便对其进行一个强信号的干扰。 使用ttcp来产生一个具有特殊属性的TCP流,通过TCP连接下载一个文件。,二、实验 本地TTCP连接 便携式电脑(192.168.0.102)运行一个ttcp流的接收端 携式电脑随后启动Ethereal开始捕获 台式机先启动Ethereal开始捕获 随后台式机(192.168.0.100)启动ttcp流发送端,发送端和接收端程序都退出时,停止数据捕获。将从发送端(台式机)捕获的跟踪记录保存在pcattcp_retrans_t.cap,将从接收端 (便

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号