2021-01-13

博客介绍了网络配置步骤,包括地址规划、配IP、开启DHCP服务、写路由、设置NAT、开启远程登录功能和端口映射等,还详细阐述了TCP三次握手的具体流程,包括客户端和服务器端各阶段状态及报文标志位、序号、确认号的变化,确保数据传输连贯性和可靠性。

第一步:地址规划,如图所示:
在这里插入图片描述
第二步:配IP
第三步:在设备AR4的GE0/0/2口开启DHCP服务
在这里插入图片描述
PC1与PC2均通过DHCP服务获取到IP
在这里插入图片描述
第四步:写路由,以AR1为例可将AR5以左的IP汇总为:192.168.1.0/26;192.168.1.128/26;192.168.1.192/26,AR5及以左部分均用一条缺省路由代替
在这里插入图片描述
第五步:经检验AR1、2、3、4、5各几口以及环回均可互相ping通,以AR1为例:
在这里插入图片描述
第六步:在AR5的公有IP所在端口设置一对多的NAT
在这里插入图片描述
经检验AR5以左可以ping通AR6的环回,以AR1为例:
在这里插入图片描述
第七步:在设备AR2开启远程登录功能
在这里插入图片描述
第八步:在设备AR5通过端口映射绑定AR2的G0/0/0接口的23端口与公有IP12.1.1.1
在这里插入图片描述
经检验AR6可以通过12.1.1.1登录AR2
在这里插入图片描述

TCP:传输控制协议—除完成传输层基础工作外,还需要保障数据传输可靠性
面向连接的可靠传输协议
面向连接—进行3次握手来建立端到端的虚链路(请求 应答 确认)
具体流程
在这里插入图片描述
握手之前主动打开连接的客户端结束CLOSED阶段,被动打开的服务器端也结束CLOSED阶段,并进入LISTEN阶段。随后开始“三次握手”:
(1)首先客户端向服务器端发送一段TCP报文,其中:
标记位为SYN,表示“请求建立新连接”;
序号为Seq=X(X一般为1);
随后客户端进入SYN-SENT阶段。
(2)服务器端接收到来自客户端的TCP报文之后,结束LISTEN阶段。并返回一段TCP报文,其中:
标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,服务器能正常接收客户端发送的数据,并同意创建新连接”(即告诉客户端,服务器收到了你的数据);
序号为Seq=y;
确认号为Ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值;随后服务器端进入SYN-RCVD阶段。
(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP报文。其中:
标志位为ACK,表示“确认收到服务器端同意连接的信号”(即告诉服务器,我知道你收到我发的数据了);
序号为Seq=x+1,表示收到服务器端的确认号Ack,并将其值作为自己的序号值;
确认号为Ack=y+1,表示收到服务器端序号Seq,并将其值加1作为自己的确认号Ack的值;
随后客户端进入ESTABLISHED阶段。
服务器收到来自客户端的“确认收到服务器数据”的TCP报文之后,明确了从服务器到客户端的数据传输是正常的。结束SYN-SENT阶段,进入ESTABLISHED阶段。
在客户端与服务器端传输的TCP报文中,双方的确认号Ack和序号Seq的值,都是在彼此Ack和Seq值的基础上进行计算的,这样做保证了TCP报文传输的连贯性。一旦出现某一方发出的TCP报文丢失,便无法继续"握手",以此确保了"三次握手"的顺利完成。此后客户端和服务器端进行正常的数据传输。这就是“三次握手”的过程。

你提供的数据是一个典型的空气质量监测数据集,包含日期、AQI 和多种污染物浓度以及污染等级。我们可以基于此数据进行统计分析、可视化或模型训练等操作。 以下是一些可以执行的常见任务和示例代码: --- ### ✅ 1. 数据加载与查看 ```python import pandas as pd # 假设你的数据存储在一个 CSV 文件中 data = pd.read_csv("air_quality_data.csv") # 查看前几行数据 print(data.head()) ``` --- ### ✅ 2. 按污染等级分组统计污染物均值 ```python grouped_stats = data.groupby('污染等级').agg({ 'PM2.5': 'mean', 'PM10': 'mean', 'CO': 'mean', 'NO2': 'mean', 'SO2': 'mean', 'O3_8h': 'mean' }).reset_index() print(grouped_stats) ``` --- ### ✅ 3. 绘制箱线图(Boxplot)比较不同污染等级下的污染物分布 ```python import matplotlib.pyplot as plt import seaborn as sns pollutants = ['PM2.5', 'PM10', 'CO', 'NO2', 'SO2', 'O3_8h'] fig, axes = plt.subplots(2, 3, figsize=(16, 10), dpi=100) axes = axes.flatten() for i, pollutant in enumerate(pollutants): sns.boxplot(x='污染等级', y=pollutant, data=data, ax=axes[i], palette="Set2") axes[i].set_title(f'{pollutant} 分布') axes[i].tick_params(axis='x', rotation=45) plt.tight_layout() plt.show() ``` --- ### ✅ 4. 进行显著性检验(ANOVA 或 Kruskal-Wallis) ```python from scipy.stats import f_oneway, kruskal for pollutant in pollutants: groups = [group[pollutant].values for name, group in data.groupby('污染等级')] # 正态性检验(可选) normality_results = [stats.normaltest(group) for group in groups] p_values_normal = [p for stat, p in normality_results] if all(p > 0.05 for p in p_values_normal): f_stat, p_val = f_oneway(*groups) print(f"污染物 {pollutant}: ANOVA p-value = {p_val:.4f}") else: h_stat, p_val = kruskal(*groups) print(f"污染物 {pollutant}: Kruskal-Wallis p-value = {p_val:.4f}") ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值