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代理服务器的方式来运行
5.4 Fiddler基本布局
5.5 抓包步骤
5.6 抓包分析
七层模型记忆口诀:应、表、会、传、网、数、物
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
,释放连接报文
TCP 三次握手:
- 客户端向服务端发送连接请求,将标志位设置
SYN=1
,即请求报文标志位,同时发送自己的序列号Seq=X
- 服务端收到请求后,需要向客户端发送一个确认报文,那么需要设置
ACK=1
,接着需要设置一个确认号ACKNum
,确认号为客户端请求序列号+1
,因为这也是服务端发送请求,所以需要设置SYN=1
,同时还需要发送自己的序列号Seq=Y
- 客户端收到服务端的响应后,需要发送一个确认报文
ACK=1
,确认号设置为ACKNum=Y+1
,表示接受到了服务端的响应。至此,客户端与服务端 发送 与 接受 数据的能力都得到了验证,所以说TCP
是可靠的6.4 TCP四次挥手
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,一般是局域网
如何查看
- 打开命令行
- 查看IP地址:ipconfig
- 查看IP地址详细信息:ipconfig -all
网关:
- 网关其实就是指路由器的IP,是一个翻译器,实现局域网与广域网互连
DNS
- 域名系统
- 将域名与服务器IP作映射
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(毫秒)
- 电脑任务栏右下角查看网络(图标)是否已连接
- 电脑网线口指示灯是否闪烁,若使用无线网,无线开关是否打开
- 查看本机IP地址,是否设置了 静态IP,若有,切换回 自动获取
- ping 网关
- 查看DNS是否配置正确
- 在浏览器设置中,搜索 代理,确保本机没有打开 代理服务器
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