网络通信

发布时间 2023-10-10 09:30:06作者: 常羲和

网络通信

1. Web服务器

1.1 web服务器简介

Web服务器又称WWW服务器、网站服务器等。

特点

  • 使用HTTP协议与客户机(浏览器)进行信息交流
  • 不仅能存储信息,还能在用户通过web浏览器提供的信息的基础上运行脚本和程序
  • 该服务器可安装在UNIX、Linux、Windows等操作系统上
    • 著名的Web服务器有Apache Tomcat IIS Nginx

1.2 HTTP协议

HTTP超文本传送协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议

特点

  • 支持C/S架构和B/S架构

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,常用方法:GET、POST、PUT、DELETE、Options、Head。

    【RESTful数据接口API开发规范中的请求方法:GET、POST、PUT、DELETE】

  • 无连接:限制每次连接只处理一个请求【HTTP/1.0版本】

    当前主流的HTTP协议的版本是1.1,是属于长连接(有连接的):请求包含属性Connection:keep-alive

    如果是无连接的话,请求或响应报文头中的Connection为close

  • 无状态:即如果后续处理需要前面的信息,它必须重传,这样可能导致每次连接传送的数据量会增大。

    一般采用:cookie技术将之前请求的能标示用户的唯一信息内容存储起来(客户端或浏览器)

1.3 通信过程

image-20231008084716603

1.4 HTTP报文

HTTP报文格式分为两种:请求报文,响应报文

无论是哪一种报文,报文分两部分,一部分是头部HEAD,另一部分体BODY,两部分之间使用空行分隔的。

1.4.1 HTTP请求报文格式

GET/DELETE请求头一般没有体

GET / HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/png,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding:gzip,deflate
Accept-Language:zh-CN,zh;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Authorization:Token xxxxxxxxxxx
Cookie:xxxx
Host:www.xxx.com
User-Agent:Mozilla/5.0(windows NT 10.0;win64;x64) Applewebkit/537.36(KHTML,like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69

分析第一行:

1)GET是请求方法,POST,PUT,DELETE,OPTIONS,HEAD
2)/  请求资源的路径,默认根资源即为主页资源(index.html,index.htm,index,index.do),还可以写成 /a.html,/images/1.png
3)HTTP/1.1  表示协议的类型和版本号,不安全的HTTP(普通),如果是安全的协议HTTPS    HTTP协议版本:1.0,1.1,2.0,3.0

第二行开始都由头属性名和属性值组成

属性名:属性值

1.4.2 HTTP响应报文格式

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Sep 2023 06:02:37 GMT
Content-Type: text/html
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
X-Cache-Lookup: Cache Miss
X-Cache-Lookup: Hit From Inner Cluster
Content-Encoding: gzip
Transfer-Encoding: chunked
Accept-Ranges: bytes
X-NWS-LOG-UUID: 3869470689060733909
Connection: keep-alive
X-Cache-Lookup: Cache Miss

第一行:HTTP/1.1 协议类型与版本号,200是响应状态码,Ok是状态码的名称

第二行开始:属性名+属性值

1.4.3 常用响应状态码

200 OK 成功
301 Moved Permanently 永久重定向
302 Move Temporarily 临时重定向
400 Bad Request 错误请求
401 Unauthorized 未授权
403 Forbidden 禁止访问
404 Not Found 请求资源不存在
405 Forbidden 请求方法不允许
422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应。
500 Internal Server Error 服务器异常
502 Bad Gateway 错误的网关或代理
503 Service Unavailable 临时的服务器维护或者过载,服务器当前无法处理请求
响应中可以包含一个 Retry-After 头标明延迟时间。
504 Gateway Timeout 网关或代理请求超时

2. 网络通信-switch交换机

2.1 交换机介绍

网络交换机(又称“网络交换器”)是一个扩大网络的器材,可以把更多的计算机等网络设备连接到当前的网络中,用于扩展网络接口,且所有主机独享交换机的带宽

工作在链路层(2层交换)

3层交换机:改交换机的核心层在2层,只是具备第3层的功能(VLAN),所以叫3层交换机

具有性价比高、高度灵活、相对简单、易于实现等特点。

以太网技术已成为当今最重要的一种局域网组网技术,网络交换机也就成为了最普及的交换机

2.2 交换机功能

1.转发过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如改数据帧为广播/组播帧则转发至所有端口)

2.学习功能:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。

3.目前交换机还具备了一些新的功能,如对VLAN(虚拟局域网)的支持、对链路汇聚的支持,甚至有的还具有防火墙的功能

2.3 交换机通信

通过交换机可以组成一个简单的网络

  • 如果PC不知道目标IP所对应的MAC,那么可以看出,PC会先发送ARP广播,得到对方的MAC,然后再进行数据的传送
  • 当switch第一次收到ARP广播数据,会把ARP广播数据包转发给所有端口(除来源端口);如果以后还有PC询问此IP的MAC,那么只是向目标的端口进行数据转发
  • 每台PC都会有一个ARP缓存表,用来记录IP所对应的MAC
  • 如果ARP表中没有记录目的IP对应的MAC地址,协议栈将自动调用广播询问目的IP的MAC地址,目的主机单播应答。源主机通过对方的应答,更新ARP表

3. 网络通信-switch+router

router路由器:负责不同网段数据转发

路由器是不同网段通信的桥梁

路由器工作在网络层

3.1 路由器介绍

路由器(router)又称网关设备(gateway)是用于连接多个逻辑上分开的网络

所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成

具有判断网络地址和选择IP路径的功能

3.2 路由器通信

  • 不在同一网段的PC,需要设置默认网关才能把数据传送过去
  • 通常情况下,都会把路由器设为默认网关
  • 当路由器收到一个其他网段的数据包时,会根据"路由表"来决定把此数据包发送到哪个端口;路由表的设定有静态和动态方法

4. 通信过程-浏览器跨网访问Web服务器

4.1 Packet Tracer网络仿真软件

Packet Tracer 是由 Cisco 公司发布的一个辅助学习工具,提供了设计、配置、排除网络故障网络模拟环境可以直接使用拖曳方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实时运行情况。

image-20231009082615632

4.2 通信过程

image-20231009082640096

配置网络设备

PC:IP、NETMASK、DFGATEWAY、DNS
ROUTER:IP、NETMASK、路由表

image-20231009082705870

总结:

  • DNS服务器的作用是解析出IP
  • DFGATEWAY指定发往其他网段的数据包转发的路径
  • 在路由器中路由表指定数据包的“下一跳”的地址

结果:

image-20231009082936031

5. 防火墙

5.1 防火墙的认知

防火墙被定义成一个或一组设备,它在网络之间执行访问控制策略0

image-20231009083048879

分类:

  • 硬件防火墙
  • 软件防火墙

作用:

  • 切割被信任(如子域)与不被信任(如Internet)的网段
  • 划分出可提供Internet的服务与必须受保护的服务
  • 分析出可接受与不可接受的数据包状态

5.2 防火墙的一般网络布线示例

单一网络,仅有一个路由器

image-20231009083508351

内部网络包含安全性更高的子网,需要内部防火墙切开子网

image-20231009083526007

架设在防火墙后端的主机服务器

image-20231009083548816

5.3 防火墙的使用限制

  • 设置了防火墙也不能保证网络一定安全
  • 防火墙不能有效阻止病毒或木马程序
  • 防火墙对于来自内部LAN的攻击无能为力

5.4 iptables应用

iptables是Linux的数据包过滤软件

查询iptables:which iptables

5.4.1 iptables的规则认知

iptables根据数据包的分析资料,“对比”预先定义的规则内容。

对比结果符合Rule1,此时这个网络数据包就会进行Action1的动作,而不会理会后续的Rule2、3等规则了。即如果Rule1满足,不会再判断其他规则

image-20231009084114071

5.4.2 iptables的表与链

iptables有多个表格(table)。而每个表格又有多个链(chain)

image-20231009084256287

1. Fliter(过滤器)

与本机数据有关

INPUT:主要与想要进入Linux本机的数据包有关

OUTPUT:主要与Linux本机所要送出的数据包有关

FORWARD:与本机无关,传送数据到后端的计算机中

2. NAT(地址转换)

主要用来进行来源和目的ip或port的转换

PREROUTING:在进行路由器判断之前所要进行的规则

POSTROUTING:在进行路由判断之后所要进行的规则

OUTPUT:与发出去的数据包有关

3. Mangle(破坏者)

主要与特殊的数据包的路由标志有关(很少使用)

5.4.3 iptables规则应用

1. 查看规则

命令1:

iptables [-t tables] [-L] [-nv]
  • -t:后面接table,例如nat或filter,若省略则使用filter
  • -L:列出前面的table的规则
  • -n:不进行IP与HOSTNAME的反查,这样显示速度快
  • -v:列出更多的信息(数据包的位数,相关的网络接口)

命令2:

iptables-save

会列出完整的防火墙规则(推荐)

2. 清除规则

命令:

iptables [-t table] [-FXZ]
  • -F:清除所有已定制的规则
  • -X:除掉所有用户"自定义"的chain
  • -Z:将所有的chain的计数与流量统计都归零
3. 定义默认策略(policy)

命令:

iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
  • -P:定义策略(Policy),P为大写
  • ACCEPT:该数据包可接受
  • DROP:该数据包直接丢弃,不会让client知道为何丢
4. IP、网络及接口设备的防火墙设置

命令:

iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网域] [-j] [ACCEPT|DROP|REJECT|LOG]
  • -AI 链名:针对某一链进行规则的插入累加

    • -A:新追加一条规则,在原本的规则的最后
    • -I:插入一条规则,如果没有指定此规则的顺序,默认为第一条规则。此链名与-io有关
  • -io 网络接口:设定封包进出的接口规范

    • -i:封包所进入的那个网络接口,如ens33
    • o:封包所传出的那个网络接口,需要与OUTPUT链配合
  • -s:来源IP或网域

    • IP:192.168.1.100

    • 网域:192.168.1.0/24或192.168.1.0/255.255.255.0

      如果规则为【不许】则加即可

      如:-s!192.168.1.0/24即不许此网的封包来源

  • -d:目标IP或网域

  • -j:动作

    • ACCEPT 接受
    • DROP 丢弃
    • REJECT 拒绝
    • LOG 记录
5. 针对端口的防火墙设置

命令:

iptables [-AI 链名] [-io 网络接口] [-p tcp|udp]
         [-s 来源IP/网域] [--sport端口范围]
         [-d 目标IP/网域] [--dport端口范围]
         [-j] [ACCEPT|DROP|REJECT|LOG]
  • --sport 限制来源的端口号
    • 可以是单个端口号,如3306
    • 可以是连续的端口号,如1024:65535
  • --dport 限制目标的端口号
6. 对mac与state的防火墙设置

命令:

iptables -A INPUT [-m state] [--state 状态]
  • -m:iptables的外挂模块,常见:
    • state:状态模块
    • mac:网络卡硬件地址
  • --state:封包的状态,主要有:
    • INVALID:无效的封包,如破损的封装
    • ESTABLISHED:联机状态
    • NEW:想要新建立联机的封包状态
    • RELATED:【最常用】,表示封包是与我们主机发送出去的封包有关