简单叙说http的要点

TCP/IP协议族按层次分别划分为:应用层,传输层,网络层和数据链路层

层次划分

  1. 应用层(http,ftp,dns)

​ 决定了向用户提供应用服务时通信的活动

  1. 传输层(tcp,udp)

​ 提供处于网络连接中的两台计算机之间的数据传输

  1. 网络层(ip)

​ 选取合适的网络路径到对方计算机并把数据包传送给对方

  1. 数据链路层

​ 处理连接网络的硬件部分

  1. 先是作为发送端的客户端在应用层发出一个想看某个Web页面的请求,Http报文

  2. 为了传输方便,在传输层,分割Http请求报文,给它打上标记序号和端口号,转发给网络层,TCP报文段

  3. 网络层,把MaC地址给它一起转发给链路层,IP数据包

  4. 然后接收端的链路层接收到数据,按序往上层发送,一直到应用层,才能算真正接收到由客户端发来的Http请求

IP协议

把各种数据包传送给对方 需要两个重要条件:IP地址和MAC地址

ip间的通信依赖MAC地址需要使用ARP地址解析然后发往下一站,然后继续解析下一站的MAC地址,这中间使用了路由选择,然后最后找到对应的ip

路由选择:选择大致认为是对的地址进行发送

TCP协议

为了准确发送数据,将大的数据分割为以报文段为单位的数据包进行管理

还会先建立一个三次握手的过程

保证安全的措施: 拥塞控制,流量控制,超时重传,校验和,序列号

DNS

域名解析服务

提供域名到IP地址的之间的解析服务

C:\Users\李川\AppData\Roaming\Typora\typora-user-images\image-20200909151319512.png

#用户想要访问一个web页面
#发送方:
1.先发送域名到DNS服务,收到DNS服务的ip地址,给ip地址发送请求
2.HTTP协议,生成针对目标服务器的请求报文
3. TCP协议,为了方便通信,将HTTP报文分割成多个报文段,每个报文段经过3次握手安全准确的发送给对方
4.IP协议搜索对方地址,一边中转一边传送
#接收方:
1. IP协议,经过中转传输接收对方发送
2. TCP协议,和对方进行3次握手,接受对方报文段,并按照原顺序重组
3. HTTP协议,对请求的内容进行处理

到达服务器处理完毕后通过同样的顺序回传

HTTP协议

http请求报文
get /index.htm HTTP/1.1   方法+uri+http版本号
Host: hackr.jp            请求首部字段
name=sad&age=12           内容实体

在这里插入图片描述

http响应报文
HTTP/1.1 200 OK           版本号  状态码 描述
Date: Tue,JUl 2012 06:50:15   创建响应时间
Content-Type: text/html       实体的内容资源
<html>

这里写图片描述

Http是一种不保存状态的协议,对于请求响应不会持久化

为什么呢? 因为为了更快处理大量事务,确保协议的可伸缩性

如果需要状态可以利用CookieSession技术

要保留无状态,不用记住可以减轻cpu资源消耗,可以利用Cookie技术在报文里写入Cookie信息来保存状态

cookie怎么做到保存状态的

  1. 在服务器响应报文里面有一个Set-Cookies的字段,会通知客户端保存Cookie,下次客户端再发送请求的时候会自动在请求报文里加入Cookie值

  2. 服务器会去检查Cookies是从哪一个客户端发来的连接请求,然后对比之前的记录得到状态

http1.1 的不同之处

在http1.1版本中使用的是长连接避免了每次频繁tcp连接,建立一次可多次利用,但是需要双方都支持这个版本

管线化: 可以多个请求并行发送,不用等待上一个响应

HTTP还有分块传输的能力,传输大数据分块成十六进制然后接收的时候再解码,这样可以逐步显示页面

状态码
分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
Http的缺点
  1. 通信使用的明文,不加密,可能被窃听
  2. 不验证通信方身份,所以可能被伪装(DNS劫持)
  3. 无法验证报文的完整性

http再套上SSL安全套接层就变成了HTTPS

https这么安全,为什么不一直用它?

因为与纯文本通信的Http相比,加密通信会消耗更多的CPU及内存资源,如果每次都加密,会消耗更多的资源,因此如果是非敏感信息则用http通信,如果是个人信息就用Https加密通信

全套接层就变成了HTTPS**

https这么安全,为什么不一直用它?

因为与纯文本通信的Http相比,加密通信会消耗更多的CPU及内存资源,如果每次都加密,会消耗更多的资源,因此如果是非敏感信息则用http通信,如果是个人信息就用Https加密通信

特别是访问量较多的Web网站在进行加密处理时,他们负载很重,如果全加密不敢想象,节约购买证书的开销也是原因之一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值