IPSEC VPN-详解原理

目录

IPSEC提供的安全服务

IPSEC协议簇

​编辑

安全协议

                1.传输模式

          2. 隧道模式

AH ---鉴别头协议

AH提供的安全服务:

AH头部 

AH的保护范围

        1.传输模式

        2.隧道模式

​编辑

ESP ---封装安全载荷协议

ESP提供的安全服务:

ESP的头部

ESP的保护范围

1.传输模式

2.隧道模式

​编辑

AH+ESP

1.传输模式

2.隧道模式

IKE-互联网密钥交换

第一阶段

第二阶段

数据传输阶段

手工建立SA流程

IKE的配置

IPSEC协议簇补充

IKEV2

IPSEC VPN的应用场景

IPSEC VPN网关部署

NAT下的VPN部署场景


IPSEC ----协议簇---一个基于网络层,应用密码学的安全信息协议组。
IPSEC 协议簇是针对 IPV6 设计的,在 IPV6 的产品中, IPSEC 是强制使用, 保证其数据传输的安全性 ;但是,也可以使用在IPV4 中,作为一个可选项来使用。

IPSEC提供的安全服务

机密性 ---数据加密
完整性 ---防篡改
可用性         
        数据源鉴别---身份认证      
                预共享密钥---PSK ---相当于两边对了一个暗号,这个暗号需要事先确定好。
                证书---遵循PKI体系---相当于一个被公认让你的身份证。
不可否认性 ---数字签名
重传攻击保护- --抗重放---IPSEC通过启用 序列号 的方法来进行防重放攻击。---相当于启用一个一次性的数字,不会再次生效。
有限的流量保护 ---在IPSEC中可以抓取感兴趣流,即可以 设定哪些流量需要进入到ipsec通道 中,进行保密传输,哪些不需要进入通道

IPSEC协议簇

安全协议

        工作方式---这里两种不同的工作方式,指的其实是两种不同的封装方式。

                1.传输模式

主要应用场景
        经常用于主机和主机之间端到端通信的数据保护。因为没有创建隧 道,所以,不能穿越公网,一般用于私网内部。
封装方式
        不改变原有的IP包头,在原始的数据包头后面出入IPSEC的包头,将原来数据封装成为被保护的数据。主要针对IP层及以上的数据进行保护,具体的保护方法和范围需要由选用的安全协议来决定。

          2. 隧道模式

主要应用场景
        因为可以跨公网创建隧道,所以,经常用于私网和私网之间通过公网进行通信,建立安全的VPN隧道。
封装方式
        增加新的IP头部,之后是IPSEC的头部,再之后是原始的数据包封装。
安全协议

AH ---鉴别头协议

封装位置在 网络层和传输层之间 ,其协议号为 51
AH提供的安全服务:
1,数据完整性保障---AH的主要工作就是保证数据的完整性的。
                       注意:AH 协议无法提供加解密的服务
2,数据源认证---身份认证
3,抗重放攻击
AH头部 
安全参数索引---SPI ---用来标识唯一的 SA(安全联盟:用于通信双方的基本信息的协商) 的。---- IPSEC SA ----注意,这个SA也是分通信方向的,如果需要构建这个安全通道,需要构建两条通信方向相反的SA 才行 。----不同的SA通道需要通过SPI进行标识,相当于SA的一个ID号。
序列号---防重放---不允许重复
AH的保护范围
        1.传输模式
        
        2.隧道模式
注意 AH 在进行完整性校验时,因为包含 IP 头部,而 IP 头部中的部分数据比如TTL, TOS(标识优先级) 这些参数,在传递的过程中会发生变化,所以, AH 在进行校验时将不包含这
些参数。
注意 因为AH在进行完整性校验的时候,包含有IP地址信息,但是,NAT技术会修改
IP地址信息,所以,AH协议无法通过NAT环境,否则将导致校验失败。

ESP ---封装安全载荷协议

封装位置在 网络层和传输层之间 ,其协议号为 50;
ESP提供的安全服务:
1,数据完整性保障
2,数据源认证---身份认证
3,抗重放攻击
4,ESP可以提供数据的加解密服务 ,并且, 加解密是可选的。
ESP的头部
注意
         ESP尾部主要目的是进行数据的填充 。因为数据进行加密主要使用的 对称加密算法,而其中分组加密需要针对固定长度的分组进行加密 ,如果最后分组的长度不足,则需要填充。满足加密的条件。还有就是下一头部因为包含数据信息,所以,也放在尾部进行保护,因为负载部分和尾部部分是会进行加密的。
ESP的保护范围
加密范围 --- 除了IP头部内容和ESP头部的内容外 ,剩余所有网络层以上的数据都会进行加密。

认证范围---不包含最外层的IP头部,但是包含ESP头部。

1.传输模式
2.隧道模式
AH和ESP的对比

AH+ESP

1.传输模式
2.隧道模式
结论: 只要有AH协议参与的封装都无法通过NAT环

IKE-互联网密钥交换

        主要用来完成IPSEC中需要的密钥相关参数的协商工作 。可以动态建立ipsec sa方法 ---IKE V1,IKE V2

 IKE ---SKEME,OAKLEY,ISAKMP

ISAKMP(互联网安全联盟密钥管理协议)---IKE协议的本体--- 主要用来完成IPSEC中需要的密钥相关参数的协商工作。可以动态建立ipsec sa --- UDP 500 ---源目标端口都必须是500。
SKEME,OAKLEY ---这两个协议可以理解为是IKE协商过程中使用到的资源库。
第一阶段
         主要目的是为了获得 建立IPSEC SA时使用的密钥 ,以及进行 身份认证 。--- IKE(ISAKMP SA) ---这个SA是双向逻辑的,不区分源和目标。 (协商加密参数的参数)
主模式----- 默认使用IP地址作为身份标识(不能改变IP因为它是和PSK 绑定关系) ---需要通过6个数据包进行交互,安全性更高。
第一二个数据包--IKE SA交换
1 ,CI ---cookie ---这个参数每个数据包中都会携带,在IKEV2中,变成了 SPI,在这里作用类似。
2 ,SA ---里面携带的是需要协商的安全参数---“五元组”
加密算法,哈希算法,身份认证, DH 组, SA 存活期
  AES          MD5             PSK        DH2    84600S(默认值)
注意 :手工建立的SA,一经建立,则将永久有效;但是IKE建立的SA,需要配置生存周期,周期时间到了之后,将重新建立SA。SA两端的数值不要求完全相 同,如果时间不同,则按照小的来执行。
第二个回包: 主要确认安全参数,如果安全参数都可以对的上,则将继续完成后面的协商。如果参数没有对上,则将回复一个 负载拒绝报文 ,结束 IKE SA 的建立。
第三四个数据包---DH密钥交换---对称密钥
1,NI,Nr---代表的是随机数
2,X,Y ---DH算法中需要公开的参数
这里,为了加强安全性, DH 算法会生成 四种密钥

PRF---hash算法的一种

种子密钥---剩余三种密钥都需要加入种子密钥运算得出,并且,种子密钥中计算时,会携带预共享密钥

SKEYID_e ---加密密钥---g^ir (代表的就是DH算法中计算出来的Z),CKY-I/CKY-
R(前面双方携带的cookie值)---- 用于第一个阶段5,6数据包和第二阶段数据包加
密使用
SKEYID_a- ---验证密钥--- 用于第二阶段hash时使用的密钥 ---HMAC算法(结合密
钥的HASH算法),安全性比不加入密钥的HASH算法更高。
SKEYID_d ---推导密钥--- 用于计算最终密钥(最终加密数据的密钥)的素材
第五六个数据包---进行身份认证---加密传输
1,ID ---身份信息---在主模式下,默认使用IP地址作为身份信息
2,hash ---针对之前SA信息再进行HASH运算,比对结果。这里的HASH运算会加入验证密钥一起进行,更加安全。

注意:前四个数据包是明文,五六数据包是密文 

野蛮模式---可以自定义身份标识,速度快,只需要三个数据包就可以完成协商,安全性低
注意:
         在野蛮模式中,可以自定义身份标识,主要是因为身份信息不需要加密,并且,前两个数据包都无法加密,所以,野蛮模式安全性较低。仅第三个数据包会进行加密( 前两个数据包是明文,第三个数据密文) 。但是, 野蛮模式适用于NAT环境以及IP地址不固定的环境。

两种模式对比
第二阶段
        基于已经建立的安全通道,来协商建立IPSEC SA的安全参数,完成后,则标志着IPSEC SA的建立。---快速模式(Quickmode)-- -UDP 500

IKE SA是双向只需要建立一条,IPSEC SA是单向的,要建立两条方向相反的数据链路

需要协商的安全参数: 

加密算法---正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥第一阶段                        计算出来的推导密钥会加入到该密钥的计算中)
HASH 算法---正式传输数据时进行完整性校验的算法
安全协议---AH/ESP
封装模式---传输模式/隧道模式
存活时间
PFS ---密钥完美向前保密 ---正常工作中,第二阶段的最终密钥是通过第一阶段的推导密钥计算出来的,但是,这样做不安全,推导密钥泄露可能导致最终密钥泄露。所以,可以开启这个PFS技术(注意:要开启需要两端设备都开启才行),之后,则将在第二阶段重新进行一次DH交换,计算最终的密钥。从而提高安全性。
数据传输阶段
        VPN黑洞 ---隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞
解决方法--- DPD死亡对等体检测
类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。
手工建立SA流程
IKE的配置
1,抓取感兴趣流
[r1]acl 3000 ---这里只能选择使用高级ACL列表,因为后面调用的时候,仅能调用高级的。
[r1-acl-adv-3000]rulepermit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0                                       0.0.0.255
2,配置IKE安全提议
[r1]ike proposal 1 ---后面需要添加一个提议的编号
[r1-ike-proposal-1]encryption-algorithm aes-cbc-128 ---定义加密算法---缺省是DES算法
[r1-ike-proposal-1]authentication-algorithm md5 ---定义校验算法---缺省是SHA1
[r1-ike-proposal-1]authentication-method pre-share ---定义认证方式---缺省是预共享密钥
[r1-ike-proposal-1]dh group2 ---定义DH组---缺省DH组1
[r1-ike-proposal-1]sa duration ? ---定义SA的老化时间----建议:老化时间修改的时候,要大                                                        于600S。

INTEGER<60-604800> Value of time(in seconds), default is 86400
[r1-ike-proposal-1]sa duration 86400

3,配置IKE对等体 

[r1]ike peer aa v1---需要声明对等体的名称(自定义),第一次进入时,需要写版本号
[r1-ike-peer-aa]ike-proposal 1 ---关联IKE安全提议
[r1-ike-peer-aa]exchange-mode ? ---选择一阶段的模式
         aggressive Aggressive mode ---野蛮模式
         main Main mode ---主模式
[r1-ike-peer-aa]exchange-mode main ---这里缺省选择的是主模式
[r1-ike-peer-aa]pre-shared-key cipher 123456 --- 定义预共享密钥的具体值,注意,两边必须一样
[r1-ike-peer-aa]remote-address 23.0.0.2 ---三位一体
1:邻居对等体的建邻地址;2:参与查找预共享密钥;3:作为身份标识验证对端身份
4,配置IPSEC的安全提议
[r1]ipsec proposal aa ---需要定义一个提议的名称
[r1-ipsec-proposal-aa]transform esp ---定义安全协议---缺省esp
[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128 ---定义数据加密算法---缺省des
[r1-ipsec-proposal-aa]esp authentication-algorithm md5 ---定义数据验证算法---缺省 md5
[r1-ipsec-proposal-aa]encapsulation-mode tunnel ---选择封装模式---缺省为隧道模式

5,配置IPSEC安全策略 

[r1]ipsec policy aa 1 isakmp ---需要定义策略的名称和编号,并且需要选择手工模式还是IKE                                                   的方式。
[r1-ipsec-policy-isakmp-aa-1]security acl ? ---关联ACL列表
                     INTEGER<3000-3999> Apply advanced ACL
[r1-ipsec-policy-isakmp-aa-1]security acl 3000
[r1-ipsec-policy-isakmp-aa-1]ike-peer aa ---关联IKE对等体
[r1-ipsec-policy-isakmp-aa-1]proposal aa ---关联ipsec提议
6,接口调用
[r1-GigabitEthernet0/0/1]ipsec policy aa
注意:对端R3的IPSEC 也是相同的配置,在R3的g0/0/0接口调用
查看SA命令
display ike sa     查看IKE SA
display ipsec sa   查看IPSEC SA

IPSEC协议簇补充

解释域:主要是用来存储前面协商的一些参数 

SPD ---安全策略数据库
SAD ---安全关联数据库

IKEV2

IKEV1的缺点:
1,协商速度慢

        如果第一阶段使用主模式---6 + 3 = 9 条消息完成IPSEC SA的协商;
        如果第一阶段使用野蛮模式---3 + 3 = 6条消息完成IPSEC SA的协商。
IKEV2针对协商速度进行了优化:
IKEV2 中,第一阶段协商 IKE SA 仅需要两个数据包就可以完成;而第二个阶段,在
协商 IPSEC SA 时,也仅需要两个数据包就可以完成---2 + 2 = 4
2,IKEV1不支持远程用户接入
        如果IKEV1 想要接入远程用户,可以结合 l2tp来构建VPN隧道,只能借助l2tp,通过 ppp协议完成远程用户的认证。
         而 IKEV2增加EAP的认证方式来完成身份认证 ,则可以实现远程用户的接入。
注意 :防火墙上,一般 V1 V2 同时开启,发起协商的时候,一般使用 IKEV2 ,接受协商的时候,同时支持V1 V2

IPSEC VPN的应用场景

IPSEC VPN网关部署

IPSEC 不支持动态路由协议
        VPN设备安置在内网和公网的边界位置,这种方式最为简单,就是数据来到出口后,判断是否需要走VPN 隧道,匹配上的流量则通过 VPN 隧道安全的传输到对端私网中。(两边的私网网段需要区分开,否则将导致地址冲突)
网关部署的问题:
不太安全,因为边界设备将承载很多攻击行为,而VPN 设备只是保证业务数据安全的设备。
解决方案:
1.使用防火墙在边界充当VPN设备(但是,一台设备需要承担太多的功能,可能导致性能不足)
2,VPN设备下沉到内网中---VPN的单臂部署(NAT下的VPN部署场景)

NAT下的VPN部署场景

IKE协商
        
         第一个问题 ---我们企业一般会采用NAPT的方式来进行NAT转换。但是,在IKE协商中,要求源目端口号必须时UDP 500,否则可能导致协商失败。所以,在NAPT的环境下,则可能更改端口号,导致协商失败。----解决方案:NAT -T

第二个问题---身份认证的问题---主模式无法通过NAT环境----解决方案:使用野蛮模式 

数据传输阶段
         第一问题 ---AH在进行完整性校验的时候,会包含IP地址信息,所以,NAT如果转换了IP地址,则将导致校验失败。所以,在NAT环境下,无法使用AH协议。
解决方案:使用 ESP协议( 但是,使用ESP协议还需要分情况来看
1. 如果ESP选择传输模式                        
        四层封装的时候,里面存在 伪头部校验 。所谓伪头部就是传输层的协议在进行封装的时候,也需要进行完整性校验,但是,这个完整性校验的时候,还需要包含三层IP 头部中的部分数据一起进行校验。这些数据中,就包含了IP 地址的信息。在正常的 NAT 中环境,数据进行 NAT 转换(转换IP 地址或者端口号)数据包中传输层的伪头部校验也会重新计 算,但是,在ESP 选择传输模式的封装下,因为此时,传输层的内容已经被加密了,所以,NAT 转换后无法修改校验和,所以,导致对方在接受的时候,会出现校验和不匹配的问题,导致通信中断。所以,ESP在传输模式也时无法通过NAT 环境了。
2. ESP 隧道模式
        在这种环境下,因为添加了新的IP 头部,并且, NAT 修改的也是新 IP 头部。这个头部的内容没有进行完整性校验,所以,可以被修改。并且,四层在进行伪头部校验时使用的数据是原始IP 头部中的内容,新的 IP 头部内容变更,也无法影响到伪头部校验的结果。所以,ESP 隧道模式的封装可以通过NAT 环境。
NAT -T ----NAT穿越技术
        NAT-T会将IKE协商的数据包中的源端口和目标端口都修改为4500,并且,允许源端口不是4500,但是目标端口必须是4500。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程的概念 | PCB | Linux下的task_struct | 父子进程和子进程

在讲进程之前首先就是需要去回顾一下我们之前学的操作系统是干嘛的&#xff0c;首先操作系统是一个软件&#xff0c;它是对上提供一个良好高效&#xff0c;稳定的环境的&#xff0c;这是相对于用户来说的&#xff0c;对下是为了进行更好的软硬件管理的&#xff0c;所以操作系统…

es文档操作命令

文档操作 documents 创建数据&#xff08;put&#xff09; 向 user 索引下创建3条数据 PUT /user/_doc/1 {"name":"zhangsan","age":18,"sex":"男","info":"一顿操作猛如虎&#xff0c;一看工资2500"…

关于卷积神经网络特征可视化

卷积神经网络CNN&#xff0c;一个大号/深层的&#xff0c;现代的&#xff0c;黑箱的&#xff0c;信号/图像处理器。 简单讲解如何将图像输入到卷积神经网络CNN并显示网络不同层的激活图&#xff0c;并通过将激活图与原始图像进行比较以探索网络学习哪些特征 本例来源于Mathwo…

IP代理技术革新:探索数据采集的新路径

引言&#xff1a; 随着全球化进程不断加深&#xff0c;网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而&#xff0c;地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源&#xff0c;成为解决这些问…

大A为何频繁跳水,Python量化1200W条交易数据给你答案!| 邢不行

这是邢不行第 110 期量化小讲堂的分享 作者 | 邢不行、密斯锌硒 常看我文章的读者应该能发现&#xff0c;我介绍过的量化策略大多都会在开盘时买入。 比如小市值策略和散户反着买策略&#xff1a; 小市值策略文章 散户反着买策略 它们都会在每个周期的第一个交易日开盘去…

Git Bash命令初始化本地仓库,提交到远程仓库

git init&#xff1a;初始化空仓库 // 初始化一个空仓库或者重新初始化一个存在的仓库 git init git remote // 为当前本地仓库添加一个远程仓库地址 git remote add origin https://gitee.com/xxx/demo.git git pull // 从设置好链接的远程仓库拉去已经存在的数据&#xff0c;…

Python自动化测试——postman,jmeter接口测试

关于众所postman&#xff0c;jmeter&#xff0c;做自动化测试的我想对这两个词并不陌生。大家都知道postman用来做接口测试很方便,下面我们就用一些例子来演示一下它该如何进行接口测试&#xff1a; 首先我们来介绍一下接口测试的概念&#xff1a; 1、什么是接口测试&#xf…

被围绕的区域c++

题目 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 输入 4 4 XXXX XOOX XOXX XXOX输出 XXXX XXXX XXXX XXOX思路 由题知边界上的"O"和 与边界的"O"相连的"O"不会被标记&#xff0c;我们可以用一个数组st[][]标…

SpringBoot项目如何打包成war包,并部署在tomcat上运行

项目场景&#xff1a; 正常情况下&#xff0c;我们开发 SpringBoot 项目&#xff0c;由于内置了Tomcat&#xff0c;所以项目可以直接启动&#xff0c;部署到服务器的时候&#xff0c;直接打成 jar 包&#xff0c;就可以运行了。 有时我们会需要打包成 war 包&#xff0c;放入外…

23.1 微服务理论基础

23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略&#xff0c;围绕"云-管-端"协同的新ICT技术架构&#xff0c;打造的业界覆盖ICT领域最广的认证体系&#xff0c;包含"ICT技术架构认证"、"ICT开发者…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之布局更新动画

概述 动画的原理是在一个时间段内&#xff0c;多次改变UI外观&#xff0c;由于人眼会产生视觉暂留&#xff0c;所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧&#xff0c;对应一次屏幕刷新&#xff0c;而决定动画流畅度的一个重要指标就是帧率FPS&#x…

怎么看一手伦敦银多少钱?

做伦敦银投资的朋友需要搞清楚“一手伦敦银多少钱”的问题&#xff0c;这也是伦敦银交易的基础问题。为什么需要搞清楚这个基础问题呢&#xff1f;有些基础问题我们不需要搞懂&#xff0c;但是关于一手伦敦银多少钱却需要搞清楚&#xff0c;因为这决定了投资者的资金利用率。 关…

Java-Java基础学习(1)-重写和多态对比分析

Java中的重写&#xff08;Override&#xff09;和多态&#xff08;Polymorphism&#xff09;是两个核心概念&#xff0c;它们在面向对象编程中扮演着非常重要的角色。下面我将对这两个概念进行详细的对比分析&#xff0c;包括它们的区别、联系以及应用场景&#xff0c;并附上相…

为什么关掉了公众号留言功能?

为什么公众号没有留言功能&#xff1f;根据要求&#xff0c;自2018年2月12日起&#xff0c;新申请的微信公众号默认无留言功能。有些人听过一个说法&#xff1a;公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

2024年阿里云服务器所在机房位置详细说明

阿里云服务器地域和可用区有哪些&#xff1f;阿里云服务器地域节点遍布全球29个地域、88个可用区&#xff0c;包括中国大陆、中国香港、日本、美国、新加坡、孟买、泰国、首尔、迪拜等地域&#xff0c;同一个地域下有多个可用区可以选择&#xff0c;阿里云服务器网aliyunfuwuqi…

Linux应用 线程同步之自旋锁

1、概念 1.1 定义 自旋锁&#xff08;Spinlock&#xff09;是一种特殊的锁机制&#xff0c;当线程尝试获取锁而锁不可用时&#xff0c;线程会进入忙等待&#xff08;即循环检查锁是否可用&#xff09;&#xff0c;而不是进入睡眠状态。这种机制适用于锁持有时间非常短的场景&…

深度学习指标| 置信区间、Dice、IOU、MIOU、Kappa

深度学习部分指标介绍 置信区间混淆矩阵DiceIOU和MIOUKappa 置信区间 95%CI指标 读论文的时候&#xff0c;常会看到一个“95%CI”的评价指标。 其中CI指的是统计学中的置信区间&#xff08;Confidence interval&#xff0c;CI&#xff09;。在统计学中&#xff0c;一个概率样…

用python写网络爬虫:2.urllib库的基本用法

文章目录 urllib库抓取网页data参数timeout参数更灵活地配置参数登录代理Cookies 参考书籍 建议新入门的小伙伴先看我同一专栏的文章&#xff1a;用python写网络爬虫&#xff1a;1.基础知识 urllib库 urllib是python中一个最基础的HTTP库&#xff0c;一般是内置的&#xff0c;…

Linux网络基础2

目录 实现网络版本计算器 自己定协议实现用json协议实现 重谈OSI七层模型HTTP协议 域名介绍url介绍HTTP请求和响应 实现一个简易的HTTP服务器 实现简易Http服务器初级版实现简易Http服务器中级版 实现一个简易的HTTP服务器最终版 请求方法HTTP状态码HTTP常见的Header 实现网…