1 软件的分类

  • B/S架构:Browser Server,浏览器和服务器架构,如在浏览器中访问百度、淘宝等
  • C/S架构:Client Server,客户端和服务器架构,如在PC中安装使用QQ、微信等
  • 单机架构:安装在PC,无需联网也能运行的软件,如office、WPS、单机游戏等
  • 混合架构:拥有两种以上架构的软件,如微信既有网页端又有客户端

    2 B/S | C/S的区别

    | 架构/区别 | B/S | C/S | | —- | —- | —- | | 维护性 | 只需更新服务端即可 | 服务端、客户端都需更新 | | 性能 | 服务端处理数据 | 服务端、客户端都能处理数据 | | 安全性 | 采用公共的传输协议,如:HTTP、HTTPS等 | 私有协议 | | 兼容性 | 兼容不同的浏览器,如:Chrome、Safari、FireFox等 | 兼容不同的操作系统,如:Linux、Windows、macOS |

3 Web的组成

前端:

  • HTML:超文本标记语言,用来编写静态网页
  • JavaScript:简称js,一般用来生成动态页面,如:轮播图、弹窗等
  • CSS:层叠样式表,能够对网页中元素进行像素级精确控制,用来美化网页

后端:

  • Web服务器:处理Web客户端的请求并给出响应,知名的有:Apache、Nginx、Tomcat等
  • 数据库(DataBase):用来存储、处理数据,知名的有:MySQL、Oracle、Redis等

    4 HTTP

    4.1 HTTP协议

  • 协议:网络协议的简称,网络协议是通信计算机双方必须共同遵守的一组约定。(比如小明想写信给小方,那么寄信的信封上要首信地址、邮编等,想要寄信就要遵守这个规则)

  • HTTP协议:Hyper Text Transfer Protocol,超文本传输协议
  • HTTPS协议:HTTP + SSL,超文本传输加密协议
  • 超文本:文本(字符、特殊字符、数字…)以及图片、音视频等
  • HTTP协议属于应用层,是一种 无状态 协议,即服务端对于事务处理没有记忆能力

    4.2 HTTP状态码

状态码 释义
200 请求成功
3xx 请求转移或者重定向
4xx 客户端错误
5xx 服务器错误

4.3 Cookie | Session | Token

Cookie

  • Cookie是在浏览器中永久储存的一种数据,主要用途有:

    • 会话管理:记住登录状态
    • 个性化:用户偏好,主题偏好设置
    • 追踪:记录和分析用户行为

      为什么要用 Cookie 来记住登录状态等这些操作呢,因为 HTTP 是无状态协议

  • Cookie由服务器生成,发送给浏览器,浏览器会以 键值对 的形式保存,下一次请求时相同网站时会把该cookie发送给服务器

  • Cookie总大小建议不超过4kb,每个域数量不超过50个
  • 大多数Cookie都是永久性有效,当然有的cookie也会有有效期
  • Cookie的安全性略低,且保存数据有限

Session

  • Session表示 会话,代表浏览器与服务器的会话过程
  • 浏览器访问服务器时,服务端判断是否有SeesionID,若有,则根据检出的处理;若没有,则创建一个Session并绑定一个不重复的SessionID
  • Session储存在服务器中,安全性更高
  • Session默认有效期30分钟,可以在代码中进行修改

Token

  • Token是指 令牌,是一种用户身份的验证方式,储存在浏览器
  • Token解决了当访问增多,Session占用服务端大量性能的问题,服务端不用储存,只用加/解密即可
  • Token一般由 uid + time + sign 组成(用户唯一身份标识 + 当前时间戳 + 签名)
机制/区别 Cookie Session(会话) Token(令牌)
保存位置 浏览器 服务器+浏览器 浏览器
大小限制 小于4K 基本无限制 基本无限制
有效期 默认永久 默认30分钟,可设置 自行设置
安全性 略低 稍高 更高

4.4 GET | POST

POST 与 GET 是 HTTP 中常见的两种请求方法

  • GET:向指定的URL 获取 数据,比如访问百度首页,查看商品详情等
  • POST:向指定的URL 提交 数据,比如注册、登录等

GET 与 POST 的区别

请求方法/区别 GET POST
请求参数 参数在URL中 参数在请求体内
安全性 略低 略高
传输速度 略快 略慢
大小限制 有限制 无限制

备注

  • POST请求是在TCP三次握手后,服务端返回100 continue以后,再提交数据;而GET在三次握手中的第三次就已经发送数据了,所以,从这流程来看,GET速度稍快,但其实配置高的话,基本看不到太大的差异
  • GET请求大小限制一般不超过2k,而POST本身是没有限制的,限制它的是服务端,如果请求数据太大,服务端处理不了,比如Tomcat是小于2M

    5 抓包工具

    5.1 抓包工具的分类

  • HTTPWatch:基于IE浏览器的抓包工具

  • WireShark:专业级的抓包工具,可以看到更细节网络数据
  • Fiddler:Windows常用抓包工具,免费,测试常用
  • Charles:Mac用户常用的抓包工具,与Fiddler类似

    5.2 安装Fiddler

5.3 Fiddler工作原理

  • 以Web代理服务器的方式来运行

Snipaste_2021-02-22_11-00-54.png

5.4 Fiddler基本布局

Snipaste_2021-02-22_11-09-22.png

5.5 抓包步骤

5.6 抓包分析

  • 请求类型
  • 响应码
  • URL
  • 协议类型
  • session、cookie

    6 网络

    6.1 网络分层

  • OSI(开放系统互联) 是参考 ISO(国际标准化组织) 制定的一个用于计算机或通信系统间互联的标准体系

Snipaste_2021-02-22_11-38-11.png

七层模型记忆口诀:应、表、会、传、网、数、物

6.2 各层作用

分层 作用 代表协议
物理层 光纤、网线…
数据链路层 交换机、网卡
控制网络层与物理层之间通信

- ARP:地址解析协议
- RARP:逆向地址解析协议
网络层 路由器
- ICMP:网络控制报文协议(ping命令)
- IGMP:网络组管理协议(服务器集群)
传输层 建立、维护、管理端到端连接
- TCP:传输控制协议,面向连接,可靠,需三次握手
- UDP:用户报文协议,无需连接即可发送数据,不可靠
会话层 建立、维护、管理会话连接
表示层 建立、维护、管理会话连接
应用层 为应用程序提供网络服务
- HTTP:超文本传输协议
- HTTPS:超文本传输加密协议
- FTP:文件传输协议
- DNS:域名系统
- SMTP:电子邮件传输协议
- Telnet:远程登录协议
- SSH:安全的远程登录协议,登录Linux

备注:

  • 地址解析协议:根据ip地址寻找mac地址,ip地址跟地理位置有关,mac地址只跟硬件有关,通信用ip,但是里面没有mac地址,这个时候就需要根据ip寻找mac

    6.3 TCP三次握手

    TCP 报文的三个重点标志位

  • ACK=1,确认报文

  • SYN=1,连接请求或者连接接受报文
  • FIN=1,释放连接报文

11 |  Web网络基础知识 - 图4

TCP 三次握手:

  1. 客户端向服务端发送连接请求,将标志位设置SYN=1,即请求报文标志位,同时发送自己的序列号Seq=X
  2. 服务端收到请求后,需要向客户端发送一个确认报文,那么需要设置ACK=1,接着需要设置一个确认号ACKNum,确认号为客户端请求序列号+1,因为这也是服务端发送请求,所以需要设置SYN=1,同时还需要发送自己的序列号Seq=Y
  3. 客户端收到服务端的响应后,需要发送一个确认报文ACK=1,确认号设置为ACKNum=Y+1,表示接受到了服务端的响应。至此,客户端与服务端 发送接受 数据的能力都得到了验证,所以说TCP是可靠的

    6.4 TCP四次挥手

11 |  Web网络基础知识 - 图5

6.5 IP地址

概念
IP地址有4个部分,每个部分的取值范围是0~255的数字组成的,如:192.168.12.6

分类

  • A类:首位取0~127,默认子网掩码:255.0.0.0,一般是广域网(互联网,公网)
  • B类:首位取128~191,默认子网掩码:255.255.0.0,一般是城域网
  • C类:首位取192~223,默认子网掩码:255.255.255.0,一般是局域网

如何查看

  1. 打开命令行
  2. 查看IP地址:ipconfig
  3. 查看IP地址详细信息:ipconfig -all

网关:

  • 网关其实就是指路由器的IP,是一个翻译器,实现局域网与广域网互连

DNS

  • 域名系统
  • 将域名与服务器IP作映射

Mac地址:网络设备的物理地址

6.6 网络诊断

Ping:

  • 中文名:因特网包探索器
  • 是一个用来测试网络连接的程序

基本用法:

  • ping ip地址,如:ping 192.168.1.1
  • ping 域名,如:ping www.baidu.com
  • pi 计算机名,如:ping YIHANG,注意名称需全大写,如果不知道名称,可以通过nbtstat -a ip 来获取
  • ping ip -t ,表示连续不断地ping,Ctrl+C停止

结果分析:

  • 丢包率:一般不大于4%,超过则网络可能无法使用
  • 数据发送/接收时间,单位ms(毫秒)
    • <1ms:一般是局域网,极好
    • 1ms~20ms:很好
    • 20ms~100ms:一般
    • 100ms~200ms:慢
    • 200ms:很慢,需要中断

      6.7 本机网络诊断

      若电脑无法访问因特网时,可采取如下步骤逐一排查:

  1. 电脑任务栏右下角查看网络(图标)是否已连接
  2. 电脑网线口指示灯是否闪烁,若使用无线网,无线开关是否打开
  3. 查看本机IP地址,是否设置了 静态IP,若有,切换回 自动获取
  4. ping 网关
  5. 查看DNS是否配置正确
  6. 在浏览器设置中,搜索 代理,确保本机没有打开 代理服务器

    6.8 端口

    定义:
  • 设备与外界通讯交流的出口,分为虚拟端口与物理端口
  • 虚拟端口是一个数字,范围在0~65535之间
  • 访问程序必须通过 IP + 端口 的访问访问(默认端口除外)
  • 同一计算机的端口,不能重复
  • 一个IP可以有多个端口号,就跟一栋房子有多扇门一样

分类:

  • 虚拟端口(计算机中的80)
  • 物理端口(RJ45网口)

常见的默认端口:

  • HTTP:80
  • HTTPS:443
  • FTP:21
  • SSH:22
  • Apache:80
  • Tomcat:8080
  • Oracle:1521
  • MySQL:3306

查看端口(命令行):

  • 查看所有端口信息:netstat -an
  • 查看端口中包含80的信息:netstat -an | findstr 80