zoukankan      html  css  js  c++  java
  • 北航研究生计算机网络实验_实验七 传输层实验

    ** 这个实验我没有约到没有问题的机子(连续三台机子都是坏的...)因此仅供参考

    1、根据2.6中步骤3答:TCP的连接和建立采用的是   三次握手   方式,PCA 主动打开方(C)    PCB 被动打开方(S)    先点击发送再点击接收,会出现什么问题?为什么?

    答:先点击发送再点击接受会导致连接失败,而且如果没有应用进程被动打开,那么主动打开的应用进程无法建立连接。

    因为C/S模式下,若Server没有启动,那么Client就连接不上。服务器和客户端的结合需要看TCP状态机,必须存在被动打开方才能够连接。

     

    2、根据2.6中步骤5,结合预习报告,分析TCP连接的建立过程,根据TCP建立过程的三个报文,先填写下表:

    字段名称

    第一条报文

    第二条报文

    第三条报文

    报文序号

    3

    4

    5

    Sequence Number

    0

    0

    1

    Acknowledgement Number

     

    1

    1

    Ack

    0

    1

    1

    Syn

    1

    1

    0

    3、根据2.6中步骤6回答:

    TCP连接建立时,其报文首部与其它TCP报文不同,有一个“Option”字段,它的作用是什么,值为多少?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎样得出的。

    答:Option字段的值中包含一个最大报文段长度(Maximum segment sizeMSS),取C/S两方承载的MSS中取较小的值。MSS应用于数据传送阶段,在本实验中得到的MSS值是1460 bytes

    MSS=最大MTU长度-IP首部固定长度(20)-TCP首部固定长度(20)=1500-20-20=1460

    4、根据2.6中步骤7:结合预习报告,分析TCP连接的释放过程,选择TCP连接撤消的四个报文,将报文信息填入下表。

    字段名称

    第一条报文

    第二条报文

    第三条报文

    第四条报文

    报文序号

    385

    386

    387

    388

    Sequence Number

    355911

    1

    1

    355912

    Acknowledgement Number

    1

    355911

    355912

    2

    Ack

    1

    1

    1

    1

    Fin

    1

    0

    1

    0

    5、根据2.6中步骤8:分析TCP数据传送阶段的前8个报文,将报文信息填入下表。

    报文序号

    报文种类

    (发送/确认)

    序号字段

    确认号字段

    数据长度

    被确认报文序号

    窗口

    6

    发送

    1

    1

    140

     

    5840

    7

    确认

    1

    1401

    0

    13

    8400

    8

    发送

    1401

    1

    1460

    14

    5840

    9

    发送

    2861

    1

    1460

     

    5840

    10

    确认

    1

    2861

    0

     

    11680

    11

    确认

    1

    4321

    0

    16

    14600

    12

    发送

    4321

    1

    1460

    17

    5840

    13

    确认

    1

    5781

    0

    19

    17520

    请写出TCP数据部分长度的计算公式。数据传送阶段第一个报文的序号字段值是否等于连接建立时第三个报文的序号?

    答:TCP数据部分长度 = IP总长度 - IP首都长度 - TCP首部长度

    数据传送阶段第一个报文的序号字段值 等于 连接建立时第三个报文的序号。

     

    6. 根据3.6.1中“ 滑动窗口机制和窗口侦查机制分析”步骤6回答:

    (1) 分析数据发送部分的前几条报文,描述发送方发送窗口的变化,并解释为什么?

    答:发送方发送窗口的大小线性增大,每次递增2920

    因为数据发送部分前几条报文时处于慢启动状态,拥塞窗口cwnd指数规律增长,而滑动窗口rwnd线性增长。一般而言rwnd < cwnd,而且发送窗口=min[cwnd, rwnd],因此发送窗口的大小也随着rwnd线性增长。

    (2) 指出从哪个序号的报文能够看出接收端开始休眠,并解释理由。

     

    如果接收缓存大于65535,在接收窗口值持续减少前接收端已开始休眠。

    如果接收缓存小于等于65535,在接收窗口值持续减少时接收端开始休眠。

    因为其后通告的接收窗口越来越小,(左边沿在不断向右移动,而右边沿不再移动),接收方在窗口范围外的可用缓存已被使用完,表明接收方在窗口范围外的可用缓存被已确认的数据占据着,应用程序进程没有再从缓存中读取这些已确认的数据,即表明其已开始休眠

     (3)分析文件send2-组座号-tcpsndwnddata.txt,选中三次握手连接建立后的前4条报文记录(3DATA报文、1ACK报文,序号为4567),记下发送方发送窗口的相关值(rcv_wnd , snd_wnd_left , snd_wnd_point , snd_wnd_left+cwnd , snd_wnd_left+rcv_wnd , (snd_wnd_point- left))。按下表分析计算接收方(及发送方)的窗口的相关值。

    5号报文(sender----data---->receiver

    rcv_wnd

    snd_wnd_left

    snd_wnd_pointer

    snd_wnd_left+cwnd

    snd_wnd_left+rcv_wnd

    snd_wnd_point- left

    发送方发出报文

    5840

    2379935191

    2379938051

    2379939571
    2379941031

    2860

    发送窗口右边沿

    2379941031

    通告的接收窗口

    接收窗口左边沿

    接收窗口指针

    接收窗口右边沿

    在接收缓存中的数据量(即未确认的数据)

    接收方接到DATA

    2

    2379935191

    2379936591

    2379935191

    1400

    接收方接到DATA

    3

    2379935191

    2379938051

    2379935191

    2860

    6号报文(sender----data---->receiver

    rcv_wnd

    snd_wnd_left

    snd_wnd_pointer

    snd_wnd_left+cwnd

    snd_wnd_left+rcv_wnd

    snd_wnd_point- left

    发送方发出报文

    5840

    2379935191

    2379939511

    2379939571
    2379941031

    4320

    发送窗口右边沿

    2379941031

    通告的接收窗口

    接收窗口左边沿

    接收窗口指针

    接收窗口右边沿

    在接收缓存中的数据量(即未确认的数据)

    接收方接到DATA

    3

    2379935191

    2379938051

    2379935191

    2860

    接收方接到DATA

    3

    2379935191

    2379939511

    2379935191

    4320

    7号报文(receiver ----ack----> sender

    通告的接收窗口

    接收窗口左边沿

    接收窗口指针

    接收窗口右边沿

    在接收缓存中的数据量(即未确认的数据)

    接收方发出ACK

    4

    2379935191

    2379935191

    2379941031

    0

    rcv_wnd

    snd_wnd_left

    snd_wnd_pointer

    snd_wnd_left+cwnd

    snd_wnd_left+rcv_wnd

    snd_wnd_point- left

    发送方接到ACK

    8400

    2379936591

    2379939511

    2379942431

    2379944991

    2920

    发送窗口右边沿

    2379944991

    发送方接到ACK

    5840

    2379935191

    2379939511

    2379939571
    2379941031

    4320

    发送窗口右边沿

    2379941031

    (1) 根据文件send2-组座号-tcpsndwnddata.txt中发送方的发送窗口相关值进行分析,接收方开始休眠后,描述接收窗口的变化,指出窗口收缩、窗口合拢、窗口张开对应的开始报文序号,并记下send2-组座号-tcpsndwnddata.txt文件中的对应报文的数值记录(pkt_seqno,pkt_type..……)。

    窗口收缩:右边沿向左移动,RFC强烈不建议使用,一般不发生。

    窗口合拢:窗口的左边沿向右边沿靠近,发生在接收窗口持续减小期间:

    166       snd_data

    167       rcv_ack

    168       snd_data

    169       snd_data

    170       snd_data

    171       snd_data

    172       snd_data

    173       rcv_ack

    174       snd_data

    175       rcv_ack

    窗口张开:当窗口的右边沿向右移动时将允许发送更多的数据,一般发生在休眠结束后通告大窗口时

    180       rcv_ack        

    181       snd_data       

    182       rcv_ack        

    183       snd_data       

    184       rcv_ack        

    7. 根据3.6.1中“ 滑动窗口机制和窗口侦查机制分析”步骤7回答:

    写出窗口侦查开始的报文序号,窗口侦查报文数据长度、窗口侦查报文发送的时间规律。

     

    窗口侦查报文指的是Keep-Alive报文,长度为5840

    每相邻两条窗口侦查报文Keep-Alive报文 时间差组成的数据序列的规律:成倍增加规律

    13、根据4.6中步骤7

    1)分析UDP报文结构:选中第一个UDP报文,将UDP协议树中各字段名、字段长度、字段值、字段表达信息,填入下表。并绘制UDP报文结构,详细绘制UDP协议树字段。

    字段名

    字段长度

    字段值

    字段表达信息

    Source Port

    2 bytes

    murray(1123)

    源端口:1123

    Destination

    2 bytes

    1030

    目的端口:1030

    Length

    2 bytes

    13

    报文长度:13

    Checksum

    2 bytes

    0x301d

    校检码:0x301d

    2UDP报文结构与TCP报文结构有什么区别?

    答:UDP报文仅有源端口、目的端口、报文长度、校检码和数据组成。

    TCP除此之外还有seqack、偏移字段等字段,用于保证传输的可靠性。

    3)在步骤5交换机S1S2之间的网线拔掉期间,PCAPCB发送的UDP消息,在步骤6交换机S1S2之间的网线重新插上之后,PCB是否还能收到?请解释为什么会出现这种现象?

    答:PCA会向PCB发送i’m fine, and you?

    在步骤6交换机S1S2之间的网线重新插上之后,PCB不能收到。因为UDP是不可靠传输协议,因此因为拔掉网线而发送失败后报文就丢失了。

    4)综合分析TCP协议和UDP协议的不同之处。

    UDP

    TCP

    无连接

    面向连接

    不可靠传输,无流量控制和拥塞控制

    可靠传输,使用流量控制和拥塞控制

    支持一对一、一对多、多对一、多对多交互通信

    只支持一对一通信

    面向报文

    面向字节流

    首部8字节

    首部20~60字节

    适用于实时应用

    适用于要求可靠传输的应用。

  • 相关阅读:
    Apache-一个IP多个主机域名
    Apache-配置详解
    Apache-配置、测试和调试
    Linux-Memcache和Redis常用命令
    Linux-Linux下安装redis报错"undefined reference to__sync_add_and_fetch_4"解决办法
    C-从源文件到可执行文件的详细编译链接过程
    JavaScript-jQuery报TypeError $(...) is null错误(jQuery失效)解决办法
    MSSQL-SQL SERVER一些使用中的技巧
    unity 在Game视图中显示Gizmos
    unity Transform.TransformPoint
  • 原文地址:https://www.cnblogs.com/khunkin/p/12526988.html
Copyright © 2011-2022 走看看