计网HTTP篇总结

网络模型:下到上:物数网传会表应:物理层通过物理设备把电脑连起来传输比特流,链路层把比特流封装成帧,通过mac地址在局域网内传输,网络层通过ip地址远程定位实现不同网络的主机到主机的通信,传输层实现端到端,会话层负责建立连接和断开连接,表示层负责数据格式转换,应用层与用户交互;
四层模型:网络接口层-网络层(ip,arp,icmp)-传输层(tcp,udp)-应用层(http,dns)。
基于tcp的应用层协议:http80,https443, FTP20,SMTP25文件传输协议,SSH安全外壳协议22;
基于UDP的应用层协议:DNS53
键入网址到网页显示,期间发生了什么:1.DNS域名解析得到ip地址(解析过程)。2.建立tcp连接。3.应用层生成http请求报文(请求格式),经各层封装,发送到目标主机。服务端处理请求发回响应。4.浏览器收到接应解析后显示页面。
DNS:域名和ip相互映射的数据库。我们输入域名(容易记)它解析得到ip,是应用层协议,使用UDP传输(因为快)。具体过程:先查浏览器缓存,若没有,查本地DNS服务器缓存,本地也没有,就会开始递归查询:本地DNS服务器先向根DNS服务器查,根dns返回一个顶级域名服务器的ip,再向顶级域名服务器查询,返回次级域名服务器ip,一直递归,知道本地dns获得目标ip,存储到本地dns缓存,然后返回给浏览器。起始就是只指路不带路。
负载均衡:把用户的请求均衡分配到不同服务器。DNS负载均衡策略:为一个主机名配置多个ip, 回复响应时提供不同的ip,把请求引导到不同的机器上实现负载均衡,可以根据每台机器的负载量,用户到机器的地理位置等。还有一些负载均衡方式:http重定向、反向代理nginx、轮询、一致性哈希。
http请求报文主要有哪些字段:请求行,请求头,请求体
举例:
POST url(资源地址) http/1.1 请求行
Host:服务器ip端口
Connection:keep-alive长连接
Content-Length 请求体的长度
空行
name =tom 请求体
例子:

GET / HTTP/1.1 \r\n Host: 192.168.88.8:10000\r\n Connection:
keep-alive\r\n Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60 Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate Accept-Language:
zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6


空行
请求体

常见状态码:1xx:正在处理中,2xx:成功;3xx:重定向;4xx:客户端错误;5xx:服务端错误
常见的:101切换请求协议,200请求成功,301永久重定向会缓存(请求的页面永久移动了),302临时重定向不缓存(暂时无法访问);400客户端请求的语法错误,403服务端禁止访问,并不是客户端请求错误。404找不到资源。500服务端错误
GET和POST:都是请求方法,1.get是从服务器获取资源,如打开网页,浏览器就把get请求给服务器。Post是对指定资源做处理,通常用于向服务器提交数据;3.GET请求会放在URL后面,所以它的长度受限于浏览器对URL长度的限制,POST请求放在http报文请求体里,无长度限制。GET可以缓存,POST一般不会缓存,所以post更安全。其他方法:DELETE:删除服务器资源;HEAD:请求页面头部。
http是无状态的:http无记忆能力,每个请求都是独立的,如访问某个页面输密码,下次我还要输。可以通过cookie来记录状态信息。
http协议:超文本传输协议,基于tcp,采用请求应答的模式。
http/1.0:默认是短连接。性能很差。
http/1.1优缺点:1.默认长连接,一个tcp发送多个请求响应,避免频繁建立连接(1.0是短连接),设置方法:在请求头的connection字段位keepalive(保活机制),达到重传次数或超时时间就会断开连接。2.窃听(明文传输)、篡改(无法保证报文完整性)、冒充(不严重通信双方的身份)。3.严重的发送方队头阻塞,若第一个请求没有回来响应,后面的请求发不出去。
https:https = http + tls,在应用层和传输层间加了tls协议,为了解决窃听、冒充、篡改,采用加密、校验、身份证书。原理:若使用同一把钥匙即对称加密的方式进行通信,那就必须要把钥匙发送过去才行,若钥匙被截取呢?那采用非对称加密,双方都用对方的公钥加密,用自己的私钥解密,这样公钥公钥被窃取也无所谓,因为它解不了密。但非对称加密很慢。所以tls结合2者:服务器先把公钥发过去,浏览器生成一个会话密钥用服务器的公钥加密发回给服务器,后续双方通过会话密钥通信,即传输密钥采用非对称加密保证安全,后续通信采用对称加密保证效率。
现在数据无法被窃听,还要保证完整性(我不窃听就篡改):服务器对内容进行哈希得到一个哈希值,然后用私钥对哈希值加密生成数据签名,把数据和内容一起发过去,客户端用服务器公钥解密,若能解密则表示这个消息就是来自持有私钥的一端的,得到哈希值,然乎他也对内容哈希比对2个哈希值是否相等。
数据的完整性也保证了,还有一个问题,万一刚开始发送公钥的时候,第3方直接把公钥替换成他自己的,他不就能2头骗了吗,所以还要验证通信方身份。采用数字证书:服务器向CA机构注册生成数字证书,把公钥放到数据证书里发过去,数据证书是无法冒充的,他是有服务器的一些信息的,客户端向CA机构验证即可保证公钥确实是服务器的。至此解决了3个问题。
Tls四次握手过程:1.客户端发送请求,里面有客户端tls版本号,支持的密码套件(密钥协商算法,签名算法,通信算法,摘要算法),第1个随机数;2.服务端回应,确认加密套件,给出第2个随机数,然后把含有公钥和数字签名的数字证书也发过去。3.客户端验证后,生成第3个随机数,用服务端公钥加密发过去。4.服务端收到,用私钥解密,至此双方都有这3个随机数,3个随机数生成会话密钥,服务端最后回应确认握手结束。
http/2:基于https安全,兼容http/1.1,他把http/1.1优化了很多。1.头部压缩:若同时发出多个相同头部的请求,就会消除重复头部;2.采用二进制即帧传数据,增加传输速度,http/1.1采用文本格式传输;3.并发传输:引入流概念,一个请求对应一个流,每个流有一个streamID, 把所有的请求全拆分成帧,添加streamID(标识他是属于哪个流的即哪个请求的),所有的帧并发发送,过去再根据streamID组装。它解决了发送方的队头阻塞,但到了接收方,只有一个窗口,他得一条请求一条请求的处理,一旦丢包,所有请求都停等待重传,所以http/2会有接收方阻塞,其实是tcp造成的。4.服务器可以主动推送资源给客户端,1.1就只是请求-响应。
http/3.0:采用QUIC作为传输层协议。
cookie和session:用来记录用户状态信息的2个机制。Cookie:首次访问服务器时,服务器会发送一个cookie到浏览器本地保存,后续再访问带上cookie服务器就认得。Session:是会话,首次访问时在服务端为用户创建sessionID,返回给浏览器,后续访问通过sessionid。sessionid可以放在cookie里面,当会话结束,cookie也就过期了。2者由于存储位置不同,安全性session更安全。应用场景:cookie用于存储一些简单的信息如用户名密码(记住我);敏感信息如如购物车、订单就用session。

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值