第三次实验报告:使用Packet Tracer分析TCP连接建立过程
姓名:刘钰
班级:计算1812
学号:201821121036
1 实验目的
- 使用路由器连接不同的网络
- 使用命令行操作路由器
- 通过抓取HTTP报文,分析TCP连接建立的过程
2 实验内容
使用Packet Tracer,正确配置网络参数,通过抓取HTTP数据包,分析TCP连接建立过程。
- 建立网络拓扑结构
- 配置参数
- 抓包
- 分析数据包
3. 实验报告
3.1 建立网络拓扑结构
3.2 配置参数
- 客户端的IP地址为
192.168.1.xx
,xx
是学号的尾数(如201821021079,IP地址后两位为79)。 - 服务端的IP地址为
192.168.1.xx
,xx
是学号的尾数
给出路由器参数配置的详细操作,解释每条命令的功能。
3.2 配置参数
- 客户端的IP地址为
192.168.1.36
。子网掩码为:192.168.1.80 - 服务端的IP地址为
192.168.2.36。子网掩码为:192.168.280
配置、激活端口:
- 首先根据指令:Router>enable 进入特权模式
- Router#config t 进入全局配置模式
- Router(config)#interface F 0/0 进入以太网接口0/0
- Router(config-if)#ip address 192.168.1.80 255.255.255.0 添加IP地址
- Router(config-if)#no shutdown 开启
- Router(config-if)#exit返回上一级
- Router(config)#interface F 0/1 进入以太网接口0/1
- Router(config-if)#ip address 192.168.2.80 255.255.255.0 添加IP地址
- Router(config-if)#no shutdown 开启
配置路由器算法
- R(config)#router rip # 进入配置路由协议的模式
- R(config-router)#version 2 # 使用rip2版本
- R(config-router)#no auto-summary # 关闭自动路由总结
- R(config-router)#network 192.168.1.0 # 设置参与配置协议的网络地址
3.3 抓包,分析TCP连接建立过程
(1)画出TCP连接建立示意图
(2)分析序号和确认号的变化
1.第一次握手:Client将标志位SYN置为1,随机产生一个序列号值seq=x,并将该数据包发送给Serve,PC进入SYN_SENT状态,等待Serve确认
2.第二次握手:Serve收到数据包后由标志位SYN=1知道Client请求建立连接,Serve将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
3.第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
(3)解答:为什么连接建立需要第三次握手
答:3次握手完成两个重要的功能,既要双方做好发送数据的准备工作,也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。目的是为了解决网络中存在延迟的重复分组问题。
只有2 次握手很可能造成“死锁”:假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。导致死锁的造成。
原文地址:https://www.cnblogs.com/Stream--/p/11707539.html
- Flash/Flex学习笔记(3):动态添加组件
- Flash/Flex学习笔记(1):Hello World!
- 数据库常规操作
- 不伦不类的Action Script 3.0
- Asp.Net Mvc中的一些初级问题整理
- Pandas Series笔记
- Asp.Net4.0/VS2010新变化(6):内置的图表控件
- Asp.Net4.0/VS2010新变化(5):可扩展的(分布式)缓存
- Pandas对行情数据的预处理
- 上市公司*ST华泽官网打不开,域名已被挂出售卖
- Asp.Net4.0/VS2010新变化(4):SEO的改进
- Pandas DataFrame笔记
- 让控件填满整个页面
- 用多个类别来进行微调
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法