• 优质范文
  • 工作总结
  • 工作计划
  • 作文大全
  • 心得体会
  • 述职报告
  • 实习报告
  • 写作方案
  • 教案反思
  • 演讲稿
  • 发言稿
  • 读书笔记
  • 精美散文
  • 读观后感
  • 当前位置: 博通范文网 > 教案反思 > 正文

    传输层协议分析实验报告

    时间:2021-09-10 来源:博通范文网 本文已影响 博通范文网手机站

    2.传输层协议分析 2.A 数据包 捕获分析部分 2.1 实验目的 理解 TCP 报文首部格式和字段的作用,TCP 连接的建立和释放过程,TCP 数据传输中编号与确认的作用。

    2.2 实验内容 应用 TCP 应用程序传输文件,截取 TCP 报文,分析 TCP 报文首部信息,TCP 连接的建立过程,TCP 数据的编号和确认机制。

    2.3 实验原理 TCP 协议是传输控制协议的简称,工作在网络层协议之上,是面向连接的,可靠的,端到端的传输层协议。

    1) TCP 的报文格式 TCP 报文段分为头部和数据两部分,如图 1:

    图 1

    TCP 报文段的总体结构 TCP 首部 TCP 数据部分

    TCP 报文段首部又分为固定部分和选项部分,固定部分为 20B,如图 2 所示,这些字段的组合实现了 TCP 的所有功能。

    图 2 TCP 报文段的首部

    0

    15

    31 源端口 目的端口 序号 确认号 头部 长度(4bit)

    保留 U R G A C K P S H R S T S Y N F I N

    窗口 校验和 紧急指针 选项(长度可变)

    填充 TCP 采用传输输连接的方式传送 TCP 报文,传输连接包括连接建立、数据传输和连

    接释放三个阶段。

    2) TCP 连接的建立 TCP 连接建立采用“3 次握手”方式。

    首先,主机 A 的 TCP 向主机 B 的 TCP 发出连接请求报文段,其首部中的同步位 SYN 应置 1,同时选择一个序号 X,表明在后面传送数据时的第一个数据字节的序号是 X+1,如图 3所示:

    图 3

    TCP 连接建立的 3 次握手过程

    然后,主机 B 的 TCP 收到连接请求报文段后,若同意,则发回确认。在确认报文段中应将 SYN 和 ACK 都置 1,确认号应为 X+1,同时也为自己选择一个序号 Y。

    最后,主机 A 的 TCP 收到 B 的确认后,要向 B 发回确认,其 ACK 置 1,确认号为 Y+1,而自己的序号为 X+1。TCP 的标准规定,SYN 置 1 的报文段都要消耗掉一个序号。同时,运行客户进程的主机 A 的 TCP 通知上层应用进程,连接已经建立。当主机 A 向 B 发送第一个数据报文段时,其序号仍为 X+1,因为前一个确认报文段并不消耗序号。

    当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。

    另外,在 TCP 连接建立的过程中,还利用 TCP 报文段首部的选项字段进行双方最大报文段长度 MSS 协商,确定报文段的数据字段的最大长度。双方都将自己能够支持的 MSS 写入选项字段,比较之后,取较小的值赋给 MSS,并应用于数据传送阶段。

    3) TCP 数据的传送 为了保证TCP传输的可靠性,TCP采用面向字节的方式,将报文段的数据部分进行编号,每个字节对应一个序号。并在连接建立时,双方商定初始序号。在报文段首部中,序号字段和数据部分长度可以确定发送方传送数据的每一个字节的序号,确认号字段则表示接收方希望下次收到的数据的第一个字节的序号,即表示这个序号之前的数据字节均已收到。这样既做到了可靠传输,又做到了全双工通信。

    当然,数据传送阶段有许多复杂的问题和情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。

    被动打开 主动打开 确认

    确认 连接请求

    4)TCP 连接的释放 在数据传输结束后,通信的双方都可以发出释放连接的请求。TCP 连接的释放采用“4次握手”。如图

    应 用 进 程 释放连接通知主机应用进程A不再发送报文确认 应用进程释放连接①②确认B不再发送报文FIN,SEQ-XACK,SEQ=Y,ACK=X+1FIN,ACK,SEQ=Y,ACK=X+1ACK,SEQ=X+1,ACK=Y+1AB 图 4 TCP 连接释放的 4 次握手过程 首先,设图 4 中主机 A 的应用进程先向其 TCP 发出释放连接的请求,并且不再发送数据。TCP 通知对方要释放从 A 到 B 这个方向的连接,将发往主机 B 的 TCP 报文段首部的中止位置 1,其序号 X 等于前面已传送过的数据的最后一个字节的序号加 1。

    主机 B 的 TCP 收到释放连接通知后即发出确认,其序号为 Y,确认号为 X+1,同时通知高层应用进程,如图中的箭头①。这样从 A 到 B 的连接就被释放了,连接处于半关闭状态,相当于主机 A 对主机 B 说“我已经没有数据发送了。但是如果你还有数据要发送,我仍然接收。” 此后,主机 B 不再接收 A 发来的数据。但若主机 B 还有一些数据要发给 A,则可以继续发送(这种情况很少)。主机 A 只要正确收到数据,仍然向 B 发送确认。

    若主机 B 不再向主机 A 发送数据,其应用进程就通知 TCP 释放连接,如图中的箭头②。主机 B 发出的连接释放报文段必须将中止位 FIN 和确认位 ACK 置 1,并使其序号仍为 Y(因为签名发送的确认报文段不消耗序号),但是还必须重复上次已经发送过的 ACK=X+1。主机A 必须对此发出确认,将 ACK 置 1,ACK=Y+1,而自己的序号仍然是 X+1,因为根据 TCP 标准,前面发送过的 FIN 报文段要消耗掉一个序号。这样就把 B 到 A 的反方向的连接释放掉。主机A 的 TCP 再向其应用进程报告,整个连接已经全部释放。

    2.4 实验步骤 骤 步骤 1

    在 Wireshark 中设置过滤条件,协议为 TCP

    HTTP,地址为本机->any,并开始截获报文; 步骤 2

    打开 www.sina.com.,完成后,保存截获的报文并命名为“TCP 学号”, ,分析捕获的报文。

    这里,TCP 的连接和建立采用的是:

    三次握手

    方式,本机是

    192.168.3.3

    ,远端主机是 192.168.3.183

    步骤 3

    分析 TCP 连接建立过程的前 3 个报文,填写下表 1:

    表 表 1

    TCP 建立过程的三个报文信息 字段名称 第一条报文 第二条报文 第三条报文

    报文序号 1704 1716 1718 Sequence Nunber 830 849 835 ACK Number 289 291 237 ACK 1 291 1 SYN 1 1 1

    步骤 4

    分析截获报文中数据发送部分的第一条 TCP 报文及其确认报文,将报文中的字段值填写在表格 2 中。

    表 表 2

    TCP 报文首部信息

    字段名 长度 字段值 字段意义 发送报文 确认报文 源端口 16 发送

    目标端口 16 确认 端口号是唯一标识 序号 32

    确认好 32 确认

    头部长度 4

    保留 6

    保留字段 窗口 16

    校验和 16

    紧急指针 16

    选项(长度可变)

    步骤 5

    TCP 连接建立时,其报文首部与其它 TCP 报文不同,有一个 option 字段,它的作用是什么?结合 IEEE802.3 协议规定的以太网最大帧长分析此数据是怎么得出来的? 步骤 6

    分析 TCP 数据传送阶段的前 8 个报文,将报文信息填入表 3:

    表 表 3

    TCP 数据传送部分的前 8 个报文 报文序号 报文种类 序号字段 确认号字段 数据长度 被确认报文序号 窗口 3744 确认 289 1 324 289 123 3754 发送 1 0 66

    16580 3764 确认 1 1 344 291 123 3784 发送 1 0 66

    16579 3794 确认 237 1 290 237 123 3804 发送 1 0 66

    16593 3814 确认 289 0 290 290 16768 3824 确认 290 1 290 290 16768

    2.5

    实验总结 在实验中,通过分析截获的 TCP 报文首部信息,可以看到首部中的序号、确认号等字段是 TCP 可靠连接的基础。

    分析 TCP 头部信息,分析“3 次握手”过程。通过对数据传送阶段报文的初步分析,了解数据的编码和确认机制。

    总之,TCP 协议中的各项设置都是为了在数据传输时提供可靠的面向连接的服务。

    2.B 编程造 构造 UDP 数据包 部分 使用 C 语言构造 UDP 数据包程序。

    1) UDP 首部和伪首部结构体定义

    /* UDP 首部*/ struct udphdr{ unsigned short u_src; unsigned short u_dst; unsigned short u_len; unsigned short u_cksum; char u_data[U_MAXLEN]; //UDP 中校验使用的伪首部 struct pseudo_header {int srcIp; short udp_len; char rsv; char protocol; unsigned short src_port;

    }; unsigned short dsc_port; unsigned short len; unsigned short check_sum; char data[2]; };

    2)构建 UDP 报文数据

    int build_udp_Package(struct socket_pair * sp,const unsigned char *buf,int len,unsigned char *udpPacket[],int *udpPacketLen){ *udpplen=sizeof(struct udp_hdr)+len; struct udp_hdr*uh=(struct udp_hdr*)udppkt; unsigned char*dbuf=(udppkt+sizeof(struct udp_hdr)); memcpy(dbuf,buf,len); Uh->source=htons(s_port); Uh->dest=htons(d_port); Uh->len=htons(sizeof(struct udp_hdr0)+len); Uh->check=0; Un->check=udpcksum(d_ip,d_port,s_ip,udppkt,sizeof(struct udp_hdr)+len); return udppkt; }

    过渡得很合理。

    平铺直叙,用词简达。

    传输层安全协议

    随着计算机网络的普及与发展,网络为我们创造了一个可以实现信息共享的新环境。但是由于网络的开放性,如何在网络环境中保障信息的安全始终是人们关注的焦点。在网络出现的初期,网络主要分布在一些大型的研究机构、大学和公司。由于网络使用环境的相对独立和封闭性,网络内部处于相对安全的环境,在网络内部传输信息基本不需要太多的安全措施。随着网络技术的飞速发展,尤其是Internet的出现和以此平台的电子商务的广泛应用,如何保证信息在Internet的安全传输,特别是敏感信息的保密性、完整性已成为一个重要问题,也是当今网络安全技术研究的一个热点。 在许多实际应用中,网络由分布在不同站点的内部网络和站点之间的公共网络组成。每个站点配有一台网关设备,站点内网络的相对封闭性和单一性,站点内网络对传输信息的安全保护要求不大。二站点之间网络属于公共网络,网络相对开发,使用情况复杂,因此需要对站点间的公共网络传输的信息进行安全保护。

    在网际层中,IPSec可以提供端到端的网络层安全传输,但是它无法处理位于同一端系统之中的不同的用户安全需求,因此需要在传输层和更高层提供网络安全传输服务,来满足这些要求。基于两个传输进程间的端到端安全服务,保证两个应用之间的保密性和安全性,为应用层提供安全服务。Web浏览器是将HTTP和SSL相结合,因为简单在电子商务也应用。

    在传输层中使用的安全协议主要有以下几个:

    1.SSL(安全套接字层协议)

    SSL(Secure Socket Layer)是由Netscape设计的一种开放协议;它指定了一种在应用程序协议(例如http、telnet、NNTP、FTP)和TCP/IP之间提供数据安全性分层的机制。它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL的主要目的是在两个通信应用程序之间提供私密信和可靠性。这个过程通过3个元素来完成:

    l 握手协议。这个协议负责协商被用于客户机和服务器之间会话的加密参数。当一个SSL客户机和服务器第一次开始通信时,它们在一个协议版本上达成一致,选择加密算法,选择相互认证,并使用公钥技术来生成共享密钥。

    l 记录协议。这个协议用于交换应用层数据。应用程序消息被分割成可管理的数据块,还可以压缩,并应用一个MAC(消息认证代码);然后结果被加密并传输。接受方接受数据并对它解密,校验MAC,解压缩并重新组合它,并把结果提交给应用程序协议。l 警告协议。这个协议用于指示在什么时候发生了错误或两个主机之间的会话在什么时候终止。

    下面我们来看一个使用WEB客户机和服务器的范例。WEB客户机通过连接到一个支持SSL的服务器,启动一次SSL会话。支持SSL的典型WEB服务器在一个与标准HTTP请求(默认为端口80)不同的端口(默认为443)上接受SSL连接请求。当客户机连接到这个端口上时,它将启动一次建立SSL会话的握手。当握手完成之后,通信内容被加密,并且执行消息完整性检查,知道SSL会话过期。SSL创建一个会话,在此期间,握手必须只发生过一次。

    SSL握手过程步骤:

    步骤1:SSL客户机连接到SSL服务器,并要求服务器验证它自身的身份。步骤2:服务器通过发送它的数字证书证明其身份。这个交换还可以包括整个证书链,直到某个根证书权威机构(CA)。通过检查有效日期并确认证书包含有可信任CA的数字签名,来验证证书。

    步骤3:然后,服务器发出一个请求,对客户端的证书进行验证。但是,因为缺乏公钥体系结构,当今的大多数服务器不进行客户端认证。

    步骤4:协商用于加密的消息加密算法和用于完整性检查的哈希函数。通常由客户机提供它支持的所有算法列表,然后由服务器选择最强健的加密算法。

    步骤5:客户机和服务器通过下列步骤生成会话密钥:

    a.客户机生成一个随机数,并使用服务器的公钥(从服务器的证书中获得)对它加密,发送到服务器上。

    b.服务器用更加随机的数据(从客户机的密钥可用时则使用客户机密钥;否则以明文方式发送数据)响应。

    c.使用哈希函数,从随机数据生成密钥。

    SSL协议的优点是它提供了连接安全,具有3个基本属性:

    l 连接是私有的。在初始握手定义了一个密钥之后,将使用加密算法。对于数据加密使用了对称加密(例如DES和RC4)。

    l 可以使用非对称加密或公钥加密(例如RSA和DSS)来验证对等实体的身份。l 连接时可靠的。消息传输使用一个密钥的MAC,包括了消息完整性检查。其中使用了安全哈希函数(例如SHA和MD5)来进行MAC计算。

    对于SSL的接受程度仅仅限于HTTP内。它在其他协议中已被表明可以使用,但还没有被广泛应用。

    注意:IETF正在定义一种新的协议,叫做“传输层安全”(Transport Layer Security,TLS)。它建立在Netscape所提出的SSL3.0协议规范基础上;对于用于传输层安全性的标准协议,整个行业好像都正在朝着TLS的方向发展。但是,在TLS和

    SSL3.0之间存在着显著的差别(主要是它们所支持的加密算法不同),这样,TLS1.0和SSL3.0不能互操作。

    2.SSH(安全外壳协议)

    SSH是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。它提供了对安全远程登录、安全文件传输和安全TCP/IP和X-Window系统通信量进行转发的支持。它可以自动加密、认证并压缩所传输的数据。正在进行的定义SSH协议的工作确保SSH协议可以提供强健的安全性,防止密码分析和协议攻击,可以在没有全球密钥管理或证书基础设施的情况下工作的非常好,并且在可用时可以使用自己已有的证书基础设施(例如DNSSEC和X.509)。

    SSH协议由3个主要组件组成:

    l 传输层协议,它提供服务器认证、保密性和完整性,并具有完美的转发保密性。有时,它还可能提供压缩功能。

    l 用户认证协议,它负责从服务器对客户机的身份认证。

    l 连接协议,它把加密通道多路复用组成几个逻辑通道。

    SSH传输层是一种安全的低层传输协议。它提供了强健的加密、加密主机认证和完整性保护。SSH中的认证是基于主机的;这种协议不执行用户认证。可以在SSH的上层为用户认证设计一种高级协议。

    这种协议被设计成相当简单而灵活,以允许参数协商并最小化来回传输的次数。

    密钥交互方法、公钥算法、对称加密算法、消息认证算法以及哈希算法等都需要协商。数据完整性是通过在每个包中包括一个消息认证代码(MAC)来保护的,这个MAC是根据一个共享密钥、包序列号和包的内容计算得到的。

    在UNIX、Windows和Macintosh系统上都可以找到SSH实现。它是一种广为接受的协议,使用众所周知的建立良好的加密、完整性和公钥算法。

    3.SOCKS协议

    “套接字安全性”(socket security,SOCKS)是一种基于传输层的网络代理协议。它设计用于在TCP和UDP领域为客户机/服务器应用程序提供一个框架,以方便而安全的使用网络防火墙的服务。

    SOCKS最初是由David和Michelle Koblas开发的;其代码在Internet上可以免费得到。自那之后经历了几次主要的修改,但该软件仍然可以免费得到。SOCKS版本4为基于TCP的客户机/服务器应用程序(包括telnet、FTP,以及流行的信息发现协议如http、WAIS和Gopher)提供了不安全的防火墙传输。SOCKS版本5在RFC1928中定义,它扩展了SOCKS版本4,包括了UDP;扩展了其框架,包括了对通用健壮的认证方案的提供;并扩展了寻址方案,包括了域名和IPV6地址。

    当前存在一种提议,就是创建一种机制,通过防火墙来管理IP多点传送的入口和出口。这是通过对已有的SOCKS版本5协议定义扩展来完成的,它提供单点传送TCP和UDP流量的用户级认证防火墙传输提供了一个框架。但是,因为SOCKS版本5中当前的UDP支持存在着可升级性问题以及其他缺陷(必须解决之后才能实现多点传送),这些扩展分两部分定义。

    l 基本级别UDP扩展。

    l 多点传送UDP扩展。

    SOCKS是通过在应用程序中用特殊版本替代标准网络系统调用来工作的(这是为什么SOCKS有时候也叫做应用程序级代理的原因)。这些新的系统调用在已知端口上(通常为1080/TCP)打开到一个SOCKS代理服务器(由用户在应用程序中配置,或在系统配置文件中指定)的连接。如果连接请求成功,则客户机进入一个使用认证方法的协商,用选定的方法认证,然后发送一个中继请求。SOCKS服务器评价该请求,并建立适当的连接或拒绝它。当建立了与SOCKS服务器的连接之后,客户机应用程序把用户想要连接的机器名和端口号发送给服务器。由SOCKS服务器实际连接远程主机,然后透明地在客户机和远程主机之间来回移动数据。用户甚至都不知道SOCKS服务器位于该循环中。

    使用SOCKS的困难在于,人们必须用SOCKS版本替代网络系统调用(这个过程通常称为对应用程序SOCKS化---SOCKS-ification或SOCKS-ifying)。幸运的是,大多数常用的网络应用程序(例如telnet、FTP、finger和whois)都已经被SOCKS化,并且许多厂商现把SOCKS支持包括在商业应用程序中.·散列表:

    基本思想:散列表(又称“哈希表”),以查找码的值为自变量,通过一定的函数关系,计算出对应的函数值,并以它作为该结点的存储地址,对结点进行存储。查找时,再根据查找码,用同一个函数计算出地址,去取出结点。

    特点:在散列表中可对结点进行快速检索。

    ·散列函数:

    选择标准:选择一个好的散列函数,对于使用散列表方法是很关键的。对于查找码中的任一值,经散列函数交换,映像到地址集合中任一地址的概率是相等的,即所得地址在整个地址区间中是随机的,称此类哈希函数是“均匀”的。“均匀”是衡量好的哈希函数的主要标准。

    ·碰撞的处理:

    碰撞的定义:在散列法中,不同的关键码值可能对应到同一存储地址,即k1!=k2,但h(k1)=h(k2)现象,称作碰撞(或冲突)。

    处理方法:

    (1)开放地址法(线性探测法):就是当碰撞发生时形成一个探测序列,沿着这个序列逐个地址探测,直到找到一个开放的地址(即未被占用的单元)、将发生碰撞的关键码值存入该地址中。最简单的探测序列为线性探测序列,即若发生碰撞的地址为d,则探测的地址序列为:

    d+1,d+2,...,m-1,0,1,...,d-1

    其中,m是散列表存储区域大小。

    (2)拉链法:就是给散列列表每个结点增加一个link字段,当碰撞发生时利用link字段拉链,建立链接方式的同义词于表。每个同义词子表的第一个元素都在散列表基本区域中、同义词其他元素,采用建立溢出区的方法,即另开辟一片存储区间作为溢出区,用于存放各同义词表的其他元素。

    传输层是TCP/IP模型中的核心层次,提供面可靠地向连接的TCP协议和不可靠面向无连接的UDP协议,为信息互联提供了基础。传输层的安全协议弥补了网际层安全的协议如IPSec等协议的不足,同时也为高层应用层的进程和安全协议如S-HTTP、HTTPS等协议提供了有力的保障。

    推荐访问:传输 协议 实验

    • 读/观后感
    • 精美散文
    • 读书笔记
    • 演讲
    • 反思
    • 方案
    • 心得体会