网络初探

2021-03-18  本文已影响0人  Alex1989

HTTP

超文本传输协议

请求/响应报文

请求报文:

响应报文:

HTTP的请求方式有哪些?

GET和POST的区别?
GET:获取资源(安全的,幂等的,可缓存的)
POST:处理资源(非安全的,非幂等的,非可缓存的)
安全性:不应该引起Server端的任何状态变化,常见的请求方式(GET,HEAD,OPTIONS)
幂等性:同一个请求方法执行多次和执行一次的效果完全相同,请求方式:(GET,PUT,DELETE)
可缓存性:请求是否可以被缓存。请求方式:(GET,HEAD)

状态码
2xx:形影成功
3xx:网络重镜像
4xx:客户端请求本身问题
5xx:server端问题

连接建立流程(3次握手,4次挥手)

完整流程


image.png

HTTP的特点

无连接:进行一个HTTP的持久连接的一个补偿
无状态:Cookie、Session

持久连接

非持久连接:客户端打开一个TCP连接,服务端返回后会关闭,当返送第二个请求后会再次开启,重新创建TCP连接(3次握手4次挥手)
持久连接:客户端打开一条有一定失效TCP连接通道,多个http请求会在tcp链路上,时间过后会关闭,也是提升网络效率。

持久连接涉及的请求头部字段

头部字段:
Connection: keep-alive
time:20(持续时间:同一域名访问复用tcp连接)
max:10 (最多可以发生多少http请求)

怎样判断一个请求是否结束?

Charles的抓包原理是怎样的?

HTTPS与网络安全

HTTPS和HTTP有什么区别?

HTTPS链接建立流程?
1.客户端:服务端返送报文:(TLS协议版本号,支持的加密算法,随机数)
2.server端:返回server证书,商定的加密算法,随机数
3.客户端:对证书的验证,是否为合法server,对server端的公钥进行验证。
4.客户端:组装会话密钥:双端产生的随机数以及客户端产生的预主密钥进行组装
5.客户端:通过server的公钥对预主密钥进行加密传输。
6.server端通过私钥解密得到的预主密钥
7.server端通过双端产生的随机数和预主密钥进行会话密钥的组装。
8.客户端再发送加密的握手消息。
9.server端返回加密的握手消息。
会话密钥:客户端随机数 + 服务端随机数 + 预主密钥(对称加密的结果)

HTTPS链接使用哪些加密方式?为什么

TCP、UDP

都是传输层协议:TCP传输层控制协议,UDP用户数据报协议

UDP(用户数据报协议)

特点:
无连接,尽最大努力交付,面向报文(既不合并,也不拆分)


image.png

功能: 复用,分用,差错检测
复用:
1.建立传输过程中,需要有ip地址和端口号组成-套接字。
2.同一个应用会采用不同的传输层协议,端口号也不同。
3.即使不同的端口号都可以复用udp协议进行传输。
4.最终进行ip层交互

分用:
1.ip层接受了一个ip数据报数据。
2.拆分成UDP数据报
3.每一个数据报都会有源端口和目的端口标识,通过目的端口进行分发。

差错检测:
1.一部分:UDP进行差错检测额外拼装:12字节伪首部
2.二部分:8字节的UDP首部
3.三部分:传输的数据
4.以16位字为一个单元,按二进制饭吗计算出这些16位字的和,将和的二进制饭吗写入检测和位(8字节UDP首部的末尾)
5.接收方也会进行校验。

TCP(传输控制协议)

特点:
面向连接,可靠传输,面向字节流,流量控制,拥塞控制。

面向连接:

建立连接:3次握手,数据传输后释放连接:4次挥手。

为什么要进行3次握手?
避免重复建立连接,如果客户端超时。

四次挥手流程

image.png

可靠传输:

无差错,不丢失,不重复,按顺序到达。

面向字节流

TCP会对传输数据进行划分,10字节可以拆分成3字节7字节。

流量控制

滑动窗口协议:
1.发送窗口:数据发送到TCP层:发送缓存字节编号序号的是增大的。
2.接收方可以告知发送方调整发送缓存的大小,通过tcp报文告知。
3.接收方如果接收到未按序到达的字节会先存放等待中间的没有达到的字节进行补全。


image.png

拥塞控制

慢开始,拥塞避免
快回复,快重传。


image.png

DNS(通过域名解析IP地址)

了解DNS解析么?
域名到IP地址的映射,DNS解析请求采用UDP协议报文,并且是明文传输。

image.png

DNS解析查询方式?

迭代查询:通过上级DNS高速可能知道的DNS服务器进行查询。


image.png

DNS解析存在哪些问题?
DNS劫持问题和DNS解析转发的问题。

DNS劫持和HTTP的关系是怎样?
没有关系,发生在HTTP建立之前,DNS解析请求使用的是UDP数据报,端口号53

怎样解决DNS劫持?
httpDNS,长链接。

Session、Cookie

HTTP协议无状态的特点的补偿。

Cookie

1.cookie用来记录用户状态,区分用户,保存在客户端。
2.服务端发起请求,Server返回数据携带Cookie,客户端进行存储。
3.通过“set-cookie”字段
4.客户端请求也可以携带保存的cookie,服务端进行识别。
如何修改cookie
新cookie覆盖旧cookie,覆盖规则:name,path,domain与原cookie一致。
如何删除cookie
和修改规则一致,设置cookie的expires的时间节点,或者maxAge = 0
如何保证cookie安全

Session

Session也是用来记录用户状态的,区分用户,状态存放在服务端。
Session需要依赖于Cookie。

Session工作流程:
在server返回Cookie的会添加sessionId
客户端发送sessionId即可,server去识别用户。

上一篇下一篇

猜你喜欢

热点阅读