网络

HTTP

HTTP是一个超文本传输协议

构成:请求报文&响应报文

请求报文


网络_第1张图片

响应报文


网络_第2张图片

HTTP首部字段
//判断一个请求是否结束Content-Length 或者 chunked
Content-Length :1024  
chunked   //最后会有一个空的chunked

//允许在同一个tcp连接上发送多个http请求,但服务器必须按照顺序应答
Connection: keep-alive  
timeout=20 //最多维持20s
max=100  // 最多100次请求后断开
//
//http2后新增
使用二进制数据流,支持头部压缩

HTTP的请求方式有哪些?

GET POST HEAD PUT DELETE OPTIONS
GET和POST有什么区别?

GET和POST的区别?

GET用于获取资源:安全、幂等、可缓存
POST用于处理资源:非安全、非幂等、不可缓存
安全:不引起服务端的任何变化
幂等:同一个请求方法执行多次和执行一次的效果完全相同。
可缓存:代理服务器上可以缓存结果

状态码有哪些?

1xx : 服务器收到请求
2xx:操作被成功接收并处理
3xx:重定向
4xx:客户端错误
5xx:服务端错误

HTTP特点

无连接:建立连接后,又会释放连接 (HTTP持久连接)
无状态:多次请求,不知道是否同一个用户 (Cookie,Session)

HTTP建立连接的过程
网络_第3张图片
Charles抓包原理
网络_第4张图片

HTTPS

HTTPS是安全的HTTP,安全是在应用层之下、传输层之上插入了SSL/TLS中间插件。HTTPS = HTTP + SSL/TLS


网络_第5张图片

HTTPS连接建立流程


网络_第6张图片

HTTPS使用了哪些加密手段
连接过程中使用了非对称加密,非对称加密很耗时
后续通信过程使用了对称加密。


网络_第7张图片

网络_第8张图片

UDP

特点:
1 无连接
2 尽最大努力交付
3 面向报文(既不合并,也不拆分)
功能:
1 复用、分用
2 差错检测

TCP

特点
1 面向连接 : 三次握手,四次挥手
为什么是三次握手?
假设2次握手,client发送 syn = a 超时,此时超时重传 syn = b,Server回应了ack建立一次连接。 之后syn=a到达了Server,Server回应了ack。那么就会建立2次连接。但是三次就不一样。当超时的syn=a达到Server,Server回应ack后,客户端自己知道建立已经连接,就不会再建立新的连接了。
为什么是四次挥手?
客户端和服务端的连接通道是全双工的。需要双方面的连接和释放

2 可靠传输
无差错
不丢失
不重复
按序到达

3 面向字节流

4 流量控制
滑动窗口协议: App继续发送数据时,Server接收窗口比较小,发送方窗口大,以更快的速率往后发,需要由TCP窗口首部字段更改发送方的发送速率。

5 拥塞控制
慢开始,拥塞避免
快恢复,快重传。
x:交互次数,轮询次数
y: 窗口大小
报文次数,窗口门限制前指数增加,门限值后,线性增长。若果发了网络拥塞。重新慢开始,同时降低窗口


网络_第9张图片

DNS

域名到IP地址映射,DNS解析请求采用UDP数据报,且明文


网络_第10张图片

1 DNS解析查询方式
递归查询:我去给你问一下
迭代查询:我告诉你谁可能知道


网络_第11张图片
递归查询

网络_第12张图片
迭代查询

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

2 DNS解析转发?
就是本地DNS为了节省资源,把解析任务外包给其他的DNS服务器。

3 怎样解决DNS劫持?
httpDNS : DNS是使用UDP数据报,明文请求53端口。改为使用HTTP协议向DNS服务器的80端口进行请求。
长连接:Client <----->长连接Server-------->APIServer


Session/Cookie

Cookie主要用来记录用户状态,区分用户;状态保存在客户端。
客户端发送cookie在http请求报文的Cookie首部字段中
服务端设置http响应报文的Set-Cookie首部字段


网络_第13张图片

怎样保证Cookie安全?
对Cookie加密处理
只在https携带Cookie
设置Cookie为httpOnly,防止跨站脚本攻击

Session
网络_第14张图片

Session主要用来记录用户状态,区分用户;状态存放在服务器端。
Session需要依赖Cookie实现。

总结

http GET POST区别?
HTTPS链接建立流程?
TCP UDP区别?
TCP慢开始?
客户端怎样避免DNS劫持?

你可能感兴趣的:(网络)