Lupinus

Re:从零开始的go学习生活(`・ω・´)

0%

[http协议]

http协议

http请求方法

请求头信息

在HTTP请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:

方法(Method) 含义
GET 请求读取一个Web页面
POST 明文提交数据,读取页面
DELETE 调用后的接口删除功能的页面
CONNECT 用于代理服务器
HEAD 请求读取一个Web页面的头部
PUT 调用后端,储存、上传功能页面
TRACE 用于测试,要求服务器送回收到的请求
OPTION 查询特定选项

POST请求向指定的资源提交要被处理的数据

http响应方法

响应报文中的状态码

状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:

image-20220528213523553

状态码 含义
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访问流程图

image-20220528223732645

image-20220528223102817

HTTP协议原理总结

1
2
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
#在浏览器中输入http://blog.driverzeng.com 
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相关术语

1
2
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架构

image-20220529001030555

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#一个电商公司,他的网站页面功能会有很多
注册
登录
首页
详情页
购物车
价格标签
留言
客服
支付中心
物流
仓储信息
订单相信
图片

OSI七层协议

CS架构与BS架构

1
2
3
4
5
6
   Client <= = = = = = = = = = => Server
客户端软件send 服务端软件recv
操作系统 操作系统
计算机硬件<= = = =物理介质= = = =>计算机硬件

Browser<= = = = = = = = = = => Server

网络通信

网络存在的意义就是跨地域数据传输=》称之为通信 网络=物理链接介质+互联网通信协议

OSI七层协议

五层协议 应用层 传输层 网络层 数据链路层 物理层

截屏2022-12-08 20.05.09

协议:规定数据的组织格式

格式:头部+数据部分

封包裹的过程:数据外加头

拆包裹的过程:拆掉头获取数据

OSI七层协议数据传输的封包与解包过程

1036857-20200415215541847-564448301

五层协议

数据链路层

1
2
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地址

截屏2022-12-08 20.07.04

广播:

有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)

ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

1
2
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,
它规定网络地址由322进制表示
范围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地址

网络层

路由器,三层交换机

1
2
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协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进 制表示
范围0.0.0.0-255.255.255.255
一个ip地址通常写成四段十进制数,例:172.16.10.1

#ip地址分成两部分(点分十进制)
网络部分:标识子网
主机部分:标识主机 注意:单纯的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数据包
ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分 head:长度为20到60字节
data:最长为65,515字节。 而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太 网数据包,分开发送了。

按位与运算 AND

1
2
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;

#如何判断是否在统一网段,取决于IP和子网掩码
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

传输层

1
2
3
4
5
6
7
8
传输层功能:建立端口到端口的通信

四层路由器、四层交换机 传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序, 那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与 网卡关联的编号。

注意:端口范围0-65535,0-1023为系统占用端口

TCP好人协议、可靠协议
SYN洪水攻击(持续syn_rcvd状态)

TCP三次握手

1
2
3
4
5
6
TCP协议的11种状态 
三次握手
syn_sent #客户端发送SYN建立连接是的状态
LISTEN #服务端等待客户端连接时的,监听状态
syn_rcvd #服务端返回ACK和SYN给客户端的转态
ESTABLISHED #客户端和服务端建立连接时的状态
截屏2022-12-08 20.30.59

四次挥手

1
2
3
4
5
6
7
8
9
10
#四次挥手 
FIN_WAIT_1 #客户单发送FIN断开连接是的状态
CLOSE_WAIT #服务端收到了客户端发来的断开连接是返回ACK的状态
FIN_WAIT_2 #客户端接收服务端返回的ACK的状态
LAST_ACK #服务端发送FIN给客户端的状态
TIME_WAIT #客户单返回ACK给服务端,断开连接后的状态

#关闭状态
CLOSED (被动关闭端在接收ACK包后,进入CLOSED状态关闭TCP请求)
CLOSING (客户端和服务端同时发起断开连接)
截屏2022-12-08 20.29.38

会话层

建立会话:登录网站

保持会话:保持登录

断开会话:离开网页,断开登录

表示层

表示层主要三大功能:

1.内码转换

2.压缩与解压缩

3.加密与解密

应用层

1
2
应用层功能:规定应用程序的数据格式。
应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

参考博客