网络

一、http(超文本传输协议)
请求、响应报文
连接建立流程
http的特点

请求报文:请求行包括方法、URL、协议版本、,首部字段(多个key value组成的键值对),请求实体(get中没有,post中有)
响应报文:响应行包括版本、状态码、请求短语,首部字段(多个键值对),响应实体

http的请求方式有get、post、head、put、delete、options
get和post的请求区别是get是通过?和&将参数拼接在url上的,post请求参数在body里,get参数长度限制2048个字符,post一般没有限制,get请求不安全,post请求相对安全。get是用来获取资源的对于服务器来说是(安全的,幂等的,可缓存的),post是用来处理资源的(非安全、非幂等的,不可缓存的)

常见的安全性的不引起server端变得的请求方式有get、head、options
幂等性是多次和一次执行的效果是完全一样的
可缓存性标签请求是否可缓存

状态码:
1xx 2xx(200表示访问成功) 3xx(301、302可能发生了网络的重定向) 4xx(401、404表示访问不存在) 5xx(501、502表示服务端有问题)

三次握手和四次挥手
client syn(同步报文)-> server
client <-syn ack(同步ack的tcp报文) server
client ack(确认报文)> server

client http请求报文-> server
client <-http相应报文 server

client fin(终止报文) -> server
client <-ack(确认报文) server
client <-fin ack(服务端再次发送终止报文,因为可能还有服务端向客户端传送数据) server
client ack(确认报文)-> server

http特点有无连接(解决方法用http持久链接)、无状态(Cookie、Session来解决无状态的问题)
持久链接涉及的头部字段 Connection:keep-alive,time,max,
持久链接判断持久链接接受:相应报文Content-length:1024表示请求结束,chunked如果为空表示请求结束
Charles是用来http中间人攻击来实现的,一个中间人或者说代理服务器,可以串改一些相关数据

二、https和网络安全
和http的区别,http=http+SSL/TLS,多了一个安全相关的模块,在应用层之下传输层之上插入了SSL/TLS
IP协议栈-》TCP传输层-》应用层

https的建立流程
client ->(tls版本、支持的加密算法、随机数) server
client <-(商定的加密算法、随机数,server证书) server
client 验证证书,组装会话秘钥
client ->(通过客户端的公钥对预主秘钥进行加密传输) server
server 通过私钥解密得要预主秘钥,组装会话密码
client 发送加密的握手消息
server 返回加密的握手消息

https使用了非对称加密和对称加密的两种手段,在链接建立的过程中使用非对称加密,建立之后后续的通讯过程使用对称加密(因为非对称加密比较耗时)

非对称加密,使用了公钥和私钥,加密和解密使用的秘钥是不一样的饿,如果加密用公钥解密用私钥,加密用私钥解密则用公钥
对称加密,由于使用的同一秘钥,可能需要网络进行秘钥传输,是不安全的

三、传输协议
TCP 传输控制协议 面向连接,可靠传输,面向字节流,流量控制,拥塞控制
UDP 用户数据报协议 ,特点有无连接,尽最大努力交付,面向报文(既不合并也不拆分)。有复用、分用、差错检查的功能

三次握手是为了解决请求超时场景,来规避连接异常产生的问题
四次挥手是因为客户端和服务端建立的双通的,需要双方发送请求断开报文

TCP的可靠性包括无差错、不丢失、不重复、按序到达,通过停止等待协议实现的(无差错情况,超时重传,确认丢失,确认迟到)
TCP的流量控制是通过滑动窗口协议实现的
TCP拥塞控制是通过慢开始、避免拥塞、快恢复、快重传

四、DNS
域名到ip地址的映射,DNS解析请求采用UDP数据报协议,且明文。解析过程为先向DNS服务器发送请求获取IP,然后通过IP去请求对应的服务器。
DNS查询方式:递归查询(逐级向上询问)、迭代查询(向周围的DNS服务器询问)
DNS的劫持:UDP协议且明文,可能会被劫持,是其访问错误的IP。DNS劫持与http没有关系,因为其发生在http建立连接之前,DNS解析是请求使用UDP报文的53端口号
DNS解析转发:是因为直接的DNS服务器,转发给其他的DNS服务进行解析,可能会出现解析缓慢的问题,因为出了跨网访问,比如访问移动的DNS服务器可能最终是由电信的DNS服务器进行解析的。
DNS劫持的解决方案有httpDNS(采用http协议的的80端口去获取dns解析,因为不存在UDP协议,所以不存在被劫持的问题)和长连接DNS(建立一个常连接通过Server,这个Server通过内外去请求DNS)

五、Session、Kookie
Session和CookieHTTP协议是无状态协议的一种补偿,Cookie是保存在客户端的
客户端发送的cookie在http的请求报文的Cookie首部字段中
服务端设置http相应报文的Set-Cookie首部字段
新Cookie覆盖老Cookie修改Cookie,覆盖规则为:name、path、domain等需要需原cookie一直,删除也一样,只是给cookie的过期时间expires或者maxAge设置为0
对Cookie进行加密处理保证Cookie的安全、在https上携带Cookie、设置Cookie为httpOnly可防止垮站脚攻击
Session也是记录用户状态,区分用户的,是存放在服务器的,Session是需要依赖Cookie的机制来实现

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