HTTP:超文本传输协议;
主要内容:包含请求/响应报文,连接建立流程,http特点
请求报文:请求行(方法字段(get、post等)、URL(请求地址)、协议版本(一般是1.1版本))
请求头部字段(以key value的形式组合在一起)
实体主体(get不带实体主体,post 带有)
响应报文:响应行(版本、状态码,描述(状态码的描述))
首部字段名区域
实体主体(响应实体主体)
常见问题1、HTTP的请求方式有哪些?
get post head options put delete
常见问题2、Get、Post方式对区别
Get以?分割拼接在URL后面,有长度限制,是明文显示
Post请求参数放在Body里面,一般没有长度显示,不是明文显示,略微安全
语义:从协议的定义规范
Get是获取资源的,是安全的(不引起server端的变化)、幂等的(同一请求方法执行一次和执行多次效果相同),可缓存的
Post是处理资源,是不安全的,非幂等的,不可缓存的
状态码
1XX
200 响应成功
3XX 301/302 发生网络重定向
4XX 401/404 客户端发起的本身存在问题
5XX 501/502 server端有异常
http链接过程:TCP三次握手建立连接,http响应报文,TCP四次挥手释放连接
常见问题3、
为什么要三次握手?四次挥手为什么要建立两方面的断开?
http特点
1、无连接(连接有建立和释放的过程),解决方法:建立http的持久连接(提升了网络请求的效率,减少TCP连接建立的数量,减少握手挥手的过程,头部字段connection:keep alive,time:20,max:10)
2、无状态(多次发送请求,server端不知道是否是同一用户),解决方法:cookie/session
常见问题3、
怎样判断一个请求是否结束?
响应报文头部字段connect-length:1024,sever端会携带响应数据的大小,可以根据接手的响应字段是否和sever端提供的一致
Post请求时,server端是经过多次响应数据的,那么有个字段chunked ,最后会有一个空的chunked,为空就代表结束
Charles抓包原理,就是中间人攻击漏洞,中间人其实就是代理服务器,我们不是直接发给服务器,而是发给了代理服务器,这个中间人都可能会篡改我们的数据。
HTTPS与网络安全
https = http + ssl/TLS
客户端发送版本号,支持的加密算法,随机数C,服务器端接收后,返回选择的加密算法,随机数S,服务器端证书,客户端验证服务器证书,验证合法性,验证公钥,客户端将随机数C,随机数S,预主密钥组合起来形成会话密钥,客户端通过服务端的公钥对预主密钥进行加密传输,服务端通过私有密钥解密得到预主密钥,组装会话密钥,通过发送加密的握手信息建立连接,验证通道是否完成
TCP/UDP
TCP:传输控制协议
特点:面向连接:数据开始之前,需要建立连接,结束之后,释放连接
可靠传输(无差错,不丢失,不重复,按序到达)通过停止等待协议,无差错,每一个发送到达确认之后,才能发送下一个;超时重传,会被丢弃掉;确认丢失(丢弃重传报文,然后重传),确认迟到(重传,丢弃)
面向字节流:不管发送方一次传递多少,要根据tcp实际情况来控制传递多少
流量控制:滑动窗口协议:客户端要发送数据时,服务端接收窗口没那么大,那么客户端要根据接收字段去更改窗口值去调整接受发送速率
拥塞控制:慢开始(指数增长),拥塞避免(加法增大);快开始快重传
三次握手:预防出错超时等
四次挥手:关闭双向链接
UDP:用户数据报协议
特点:无连接(不需要事先建立好连接),尽最大努力交付,面向报文(记不合并也不拆分)
功能:复用(建立传输过程中,是要有IP地址和端口号的组成,同一IP地址的电脑可能会有不同的应用,应用又对应不同协议,端口号可能不同,不管是哪个端口传递出去,都可以复用udp传输层的协议),分用,差错检测(12字节伪首部,8字节UDP首部,7字节数据)
DNS解析
域名到ip地址的映射,DNS解析请求采用UDP数据报,且明文
递归查询/迭代查询
存在哪些常见问题?DNS劫持/DNS解析转发问题
DNS劫持:明文传输,可能会被劫持,
DNS解析转发:可能会被移动转发给电信,权威DNS解析又会根据运营商来返回,导致跨网访问请求缓慢的问题
DNS劫持解决:用httpDNS,(正常DNS是使用DNS协议向DNS服务器53端口进行请求,httpDNS使用HTTP协议向DNS服务器80端口进行请求,直接跨过)
通过长连接server,通过内网专线等进行解析,避免公网解析被劫持的问题
cookie/session
对http无状态协议的补偿
Cookie是用来记录用户状态,区分用户,状态保存在客户端