http协议
http请求方法
请求头信息
在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
| 方法(Method) | 含义 | 
| GET | 请求读取一个Web页面 | 
| POST | 明文提交数据,读取页面 | 
| DELETE | 调用后的接口删除功能的页面 | 
| CONNECT | 用于代理服务器 | 
| HEAD | 请求读取一个Web页面的头部 | 
| PUT | 调用后端,储存、上传功能页面 | 
| TRACE | 用于测试,要求服务器送回收到的请求 | 
| OPTION | 查询特定选项 | 
POST请求向指定的资源提交要被处理的数据
http响应方法
响应报文中的状态码
状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

| 状态码 | 含义 | 
| 200 | 成功 | 
| 301 | 永久重定向(跳转) | 
| 302 | 临时重定向(跳转) | 
| 304 | 本地缓存 | 
| 307 | 内部重定向(跳转) | 
| 400 | 客户端错误 | 
| 401 | 认证失败 | 
| 403 | 找不到主页,权限不足 | 
| 404 | 找不到页面 | 
| 500 | 内部错误 | 
| 502 | 找不到后端主机(哪台服务器日志出现,就查哪台机器) | 
| 503 | 服务器过载 | 
| 504 | 后端主机超时 | 
头部信息
| 头(header) | 类型 | 说明 | 
| User-Agent | 请求 | 关于浏览器和他平台的信息,如Mozilla5.0 | 
| Accept | 请求 | 客户能处理的页面的类型,如text-html | 
| Accept-Charset | 请求 | 客户可以接受的字符集,如Uni’code-1-1 | 
| Accept-Encoding | 请求 | 客户能处理的页面编码方法,如gzip | 
| Accept-Language | 请求 | 客户能处理的自然预言,如en,zh-cn | 
| Host | 请求 | 服务器的DNS名称,从URL中提取出来,必需 | 
| Referer | 请求 | 用户从该URL代表的页面出发访问当前请求的页面 | 
| Cookie | 请求 | 将以前设置的Cookie送回服务器,可用来作为会话信息 | 
| Date | 双向 | 消息被发送时的日期和时间 | 
| Server | 响应 | 关于服务器的信息,如Microsoft-IIS/6.0 | 
| Content-Encoding | 响应 | 内容似乎如何被编码的,如gzip | 
| Content-Language | 响应 | 页面所使用的自然语言 | 
| Content-Length | 响应 | 以字节计算的页面长度 | 
| Content-Type | 响应 | 页面的MIME类型 | 
| Last-Modified | 响应 | 页面最后被修改的时间和日期,在页面缓存机制中意义重大 | 
| Location | 响应 | 指示客户将请求发送给别处,即重定向到另一个URL | 
| Set-Cookie | 响应 | 服务器希望客户保存一个Cookie | 
User-Agent
User-Agent:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识 版本信息
Server
Server:响应头包含处理请求的原始服务器的软件信息
Referer
Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL
HTTP重定向
Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取
HTTP访问流程图


HTTP协议原理总结
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 | 1.浏览器向local DNS发起域名解析请求,本地DNS(/etc/hosts)文件中没有
 2.浏览器向DNS根域服务器发起请求,解析域名blog.driverzeng.com
 3.DNS进行递归查询和迭代查询:
 客户端向服务端发起查询 -> 递归查询
 服务端向服务端发起查询 -> 迭代查询
 
 .com根域服务器发起查询
 .com根域服务器 -> .driverzeng.com
 .driverzeng.com -> blog.driverzeng.com A记录 39.104.203.184
 将A记录:39.104.203.184返回给浏览器
 4.浏览器和39.104.203.184所在服务器的80端口建立TCP/IP连接
 防火墙的规则不允许你的IP地址访问该服务器的80端口,则拒绝连接,报错返回给用户
 防火墙的规则允许你的IP地址访问该服务器的80端口,则放行
 -建立连接(TCP/IP 三次握手) syn(建立连接信号)
 客户端 ---------------------> 服务端 syn+ack(我收到建立连接的请求了)
 服务端 ---------------------> 客户端 ack(告诉服务端,我知道你收到建立连接的请求了)
 客户端 ---------------------> 服务端
 5.向服务端的web服务发起http请求(负载均衡)
 -请求头部信息
 1)请求的方法是什么: GET获取
 2)请求的Host主机是: blog.driverzeng.com
 3)请求的资源是什么: /index.html
 4)请求的端口是什么: 默认http是80 https是443
 5)请求携带的参数是什么: 属性(请求类型、压缩、认证、浏览器信息、等等)
 6)请求最后的空行
 6.将请求根据调度算法(rr 轮询)将请求下发给后端的web服务器
 7.读取web服务器上的nginx配置文件,找到站点目录
 8.找到对应的代码文件
 - 静态请求:web服务器将静态求情下发到共享存储服务器上,找到对应的静态资源返回给用户
 - 动态请求:
 1)将请求发送给后端代码,处理
 2)先找数据库的缓存(Redis,memcache)
 3)如果缓存中有数据,则直接将数据返回给用户
 4)如果缓存没有数据,则找后端数据库
 5)从数据库中取出数据后,先存入缓存一份,然后在返回给用户
 9.返回对应的状态码和响应头部信息给浏览器
 10.断开TCP/IP连接
 -四次挥手
 11.浏览器展示网站页面
 
 | 
CDN
CDN:分布式静态缓存服务器
静态资源:html,css,js,mp3,mp4,avi,jpg.png…
1.提升了网站访问速度
2.减少后端服务器的压力
HTTP相关术语
| 12
 3
 4
 5
 6
 7
 8
 
 | PV:独立页面浏览量(一条日志,一个请求) UV:独立设备
 IP:独立的IP地址
 
 假设公司有一座大厦,大厦有100人,每个人有一台电脑和一部手机,上网都是通过nat转换出口,每个人点击网站2次, 请 问对应的pv,uv,ip分别是多少?
 pv:100 * 2 * 2 = 400
 uv:100 * 2
 IP:1
 
 | 
SOA松耦合架构
开发网站为了解耦,做出SOA架构

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | 注册
 登录
 首页
 详情页
 购物车
 价格标签
 留言
 客服
 支付中心
 物流
 仓储信息
 订单相信
 图片
 
 | 
OSI七层协议
CS架构与BS架构
| 12
 3
 4
 5
 6
 
 |    Client <= = = = = = = = = = => Server客户端软件send                  服务端软件recv
 操作系统                        操作系统
 计算机硬件<= = = =物理介质= = = =>计算机硬件
 
 Browser<= = = = = = = = = = => Server
 
 | 
网络通信
网络存在的意义就是跨地域数据传输=》称之为通信 网络=物理链接介质+互联网通信协议
OSI七层协议
五层协议 应用层 传输层 网络层 数据链路层 物理层

协议:规定数据的组织格式
格式:头部+数据部分
封包裹的过程:数据外加头
拆包裹的过程:拆掉头获取数据
OSI七层协议数据传输的封包与解包过程

五层协议
数据链路层
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
 | 物理层负责发送电信号 一组物理层数据称之为:位 单纯的电信号毫无意义,必须对其进行分组数据链路层:ethernet以太网协议
 
 规定1:一组数据称之为一个数据帧
 
 规定2:数据帧分成两部分=》头+数据
 头包含:源地址与目标地址,该地址是mac地址
 数据包含:包含的是网络层发过来的整体的内容
 
 规定3:规定但凡接入互联网的主机必须有一块网卡,每块网卡在出厂时都烧制好一个全世界独一无二的地址,
 该地址称之为mac地址
 
 head包含:(固定18个字节)
 
 发送者/源地址,6个字节
 接收者/目标地址,6个字节
 数据类型,6个字节
 
 data包含:(最短46字节,最长1500字节)
 head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
 
 | 
mac地址:
head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址

广播:
有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)
ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | 网络层:IP协议 要达到的目的: 划分广播域 每一个广播域但凡要接通外部,
 一定要有一个网关帮内部的计算机转发包到公网 网关与外界通信走的是路由协议
 
 规定1:一组数据称之为一个数据包
 规定2:数据帧分成两部分=》头+数据
 头包含:源地址与目标地址,该地址是IP地址 数据包含的:传输层发过来的整体的内容
 
 IP协议:
 
 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,
 它规定网络地址由32位2进制表示
 范围0.0.0.0-255.255.255.255
 一个ip地址通常写成四段十进制数,例:172.16.10.1
 ipv4地址: 8bit.8bit.8bit.8bit
 
 子网掩码: 8bit.8bit.8bit.8bit
 
 一个合法的ipv4地址组成部分=ip地址/子网掩码地址 172.16.10.1/255.255.255.0 172.16.10.1/24
 
 知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。
 
 IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
 
 总结****** ip地址+mac地址=》标识全世界范围内独一无二的一台计算机
 
 或者: ip地址=》标识全世界范围内独一无二的一台计算机
 
 | 
事先知道的是对方的ip地址 但是计算机的底层通信是基于ethernet以太网协议的mac地址通信
arp协议:将ip地址解析成mac地址
FF:FF:FF:FF:FF:FF:表示想要获取对方的mac地址
二者网络地址一样,拿到目标的mac地址
二者网络地址不一样,拿到网关的mac地址
mac地址学习:记录广播过的mac地址
网络层
路由器,三层交换机
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 
 | 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进 制表示
 范围0.0.0.0-255.255.255.255
 一个ip地址通常写成四段十进制数,例:172.16.10.1
 
 
 网络部分:标识子网
 主机部分:标识主机 注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网 例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网
 
 
 所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.10.1,如果已知网络部分是前24位,主机部分是后8位,那 么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
 知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行 AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
 
 比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?
 两者与子网掩码分别进行AND运算,
 172.16.10.1:10101100.00010000.00001010.000000001
 255255.255.255.0:11111111.11111111.11111111.00000000
 AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
 AND运算又叫做"按位与"运算,符号:"&",在编程术语中表示一种运算方法,不可逆
 172.16.10.2:10101100.00010000.00001010.000000010 255255.255.255.0:11111111.11111111.11111111.00000000
 AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0 结果都是172.16.10.0,因此它们在同一个子网络。
 总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网段
 
 
 ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分 head:长度为20到60字节
 data:最长为65,515字节。 而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太 网数据包,分开发送了。
 
 | 
按位与运算 AND
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | 1&1=1;
 1&0=0;
 0&1=0;
 0&0=0;
 
 
 172.16.10.1
 10101100.00010000.00001010.00000001
 255.255.255.0
 11111111.11111111.11111111.00000000
 172.16.10.2
 10101100.00010000.00001010.00000010
 255.255.255.0
 11111111.11111111.11111111.00000000
 
 | 
传输层
| 12
 3
 4
 5
 6
 7
 8
 
 | 传输层功能:建立端口到端口的通信
 四层路由器、四层交换机 传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序, 那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与 网卡关联的编号。
 
 注意:端口范围0-65535,0-1023为系统占用端口
 
 TCP好人协议、可靠协议
 SYN洪水攻击(持续syn_rcvd状态)
 
 | 
TCP三次握手
| 12
 3
 4
 5
 6
 
 | TCP协议的11种状态 三次握手
 syn_sent
 LISTEN
 syn_rcvd
 ESTABLISHED
 
 | 
 
四次挥手
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | FIN_WAIT_1
 CLOSE_WAIT
 FIN_WAIT_2
 LAST_ACK
 TIME_WAIT
 
 
 CLOSED (被动关闭端在接收ACK包后,进入CLOSED状态关闭TCP请求)
 CLOSING (客户端和服务端同时发起断开连接)
 
 | 
 
会话层
建立会话:登录网站
保持会话:保持登录
断开会话:离开网页,断开登录
表示层
表示层主要三大功能:
1.内码转换 
2.压缩与解压缩 
3.加密与解密
应用层
| 12
 
 | 应用层功能:规定应用程序的数据格式。应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式
 
 | 
参考博客