浏览器原理与常⽤协议总结
⽬录
⼀、HTTP
什么是HTTP?
超⽂本传输协议,是⼀个基于请求与响应,⽆状态的,应⽤层的协议,常基于TCP/IP协议传输数据,互联⽹上应⽤最为⼴泛的⼀种,所有的WWW⽂件都必须遵守这个标准。设计HTTP的初衷是为了提供⼀种发布和接收HTML页⾯的⽅法。
HTTP特点:
⽆状态:协议对客户端没有状态存储,对事物处理没有“记忆”能⼒,⽐如访问⼀个⽹站需要反复进⾏登录操作
⽆连接:HTTP/1.1之前,由于⽆状态特点,每次请求需要通过TCP三次握⼿四次挥⼿,和服务器重新建⽴连接。⽐如某个客户机在短时间多次请求同⼀个资源,服务器并不能区别是否已经响应过⽤户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
基于请求和响应:基本的特性,由客户端发起请求,服务端响应
简单快速、灵活
通信使⽤明⽂、请求和响应不会对通信⽅进⾏确认、⽆法保护数据的完整性
多路复⽤
多路复⽤:通过单⼀的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享⼀个TCP连接,实现多路并⾏⽽不是依赖建⽴多个TCP连接。
ssl协议是指什么
HTTP报⽂格式
也可以⽤请求⾏,请求头,请求体的说法。
HTTP请求由请求⾏、请求头部、空⾏和请求体四个部分组成。
请求⾏:包括请求⽅法,访问的资源URL,使⽤的HTTP版本。GET和POST是最常见的HTTP⽅法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
请求头:格式为“属性名:属性值”,服务端根据请求头获取客户端的信息,主要有cookie、host、connection、accept-language、accept-encoding、user-agent。
请求体:⽤户的请求数据如⽤户名,密码等。
get请求:
将请求参数追加在url后⾯,不安全
url长度限制get请求⽅式数据的⼤⼩
没有请求体
⼀般的HTTP请求⼤多都是GET。
post请求:
请求参数在请求体处,较安全。
请求数据⼤⼩没有显⽰
只有表单设置为method=“post”才是post请求,其他都是get请求
常见get请求:地址栏直接访问、<a href="">、<img src="">等
HTTP响应也由四个部分组成,分别是:状态⾏、响应头、空⾏和响应体。
状态⾏:协议版本,状态码及状态描述。
响应头:响应头字段主要有connection、content-type、content-encoding、content-length、set-cookie、Last-Modified,、Cache-Control、Expires。
响应体:服务器返回给客户端的内容。
响应⾏:
例如:
HTTP/1.1 200 OK
状态码:
状态码:由3位数字组成,第⼀个数字定义了响应的类别
1xx:指⽰信息,表⽰请求已接收,继续处理
2xx:成功,表⽰请求已被成功接受,处理。
3xx:重定向,需要进⼀步操作已完成请求
4xx:客户端错误
5xx:服务器端错误,服务器未能实现合法的请求。
常见的状态有
200-请求成功、202-服务器端已经收到请求消息,但是尚未进⾏处理 301-永久移动、302-临时移动、304-所请求的资源未修改、 400-客户端请求的语法错误、404-请求的资源不存在 500-服务器内部错误。
HTTP1.0和HTTP1.1的区别?
长连接:HTTP1.0默认使⽤短连接,每次请求都需要建⽴新的TCP连接,连接不能复⽤。HTTP1.1⽀持
长连接,复⽤TCP连接,允许客户端通过同⼀连接发送多个请求。不过,这个优化策略也存在问题,当⼀个队头的请求不能收到响应的资源时,它将会阻塞后⾯的请求。这就是“队头阻塞”问题。
断点续传:HTTP1.0 不⽀持断点续传。HTTP1.1 新增了 range 字段,⽤来指定数据字节位置,⽀持断点续传。
错误状态响应码:在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表⽰请求的资源与资源的当前状态发⽣冲
突、410(Gone)表⽰服务器上的某个资源被永久性的删除。
Host头处理:在HTTP1.0中认为每台服务器都绑定⼀个唯⼀的IP地址,因此,请求消息中的URL并没有传递主机名。到了HTTP1.1时代,虚拟主机技术发展迅速,在⼀台物理服务器上可以存在多个虚拟主机,并且它们共享⼀个IP地址,故HTTP1.1增加了HOST信息。
HTTP1.1和 HTTP2.0的区别?
HTTP2.0相⽐HTTP1.1⽀持的特性:
新的⼆进制格式:HTTP1.1 基于⽂本格式传输数据;HTTP2.0采⽤⼆进制格式传输数据,解析更⾼效。
多路复⽤:在⼀个连接⾥,允许同时发送多个请求或响应,并且这些请求或响应能够并⾏的传输⽽不被阻塞,避免 HTTP1.1 出现的”队头堵塞”问题。
头部压缩,HTTP1.1的header带有⼤量信息,⽽且每次都要重复发送;HTTP2.0 把header从数据中分离,并封装成头帧和数据帧,使⽤特定算法压缩头帧,有效减少头信息⼤⼩。并且HTTP2.0在客户端和服务器端记录了之前发送的键值对,对于相同的数据,不会重复发送。⽐如请求a发送了所有的头信息字段,请求b则只需要发送差异数据,这样可以减少冗余数据,降低开销。
服务端推送:HTTP2.0允许服务器向客户端推送资源,⽆需客户端发送请求到服务器获取。
⼆、HTTPS
什么是HTTPS?
HTTPS是⼀种通过计算机⽹络进⾏安全通信的传输协议,经由HTTP进⾏通信,利⽤SSL/TLS建⽴全信道,加密数据包。HTTPS使⽤的主要⽬的是提供对⽹站服务器的⾝份认证,同时保护交换数据的隐私与完整性。
PS:TLS是传输层加密协议,前⾝是SSL协议,由⽹景公司1995年发布,有时候两者不区分。
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对⽅⾝份以及数据完整性保护
内容加密:采⽤混合加密技术,中间者⽆法直接查看明⽂内容
验证⾝份:通过证书认证客户端访问的是⾃⼰的服务器
保护数据完整性:防⽌传输的内容被中间⼈冒充或者篡改
安全性考虑:
HTTPS协议的加密范围也⽐较有限,在⿊客攻击、拒绝服务攻击、服务器劫持等⽅⾯⼏乎起不到什么作⽤
SSL证书的信⽤链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间⼈攻击⼀样可⾏
成本考虑:
SSL证书需要购买申请,功能越强⼤的证书费⽤越⾼
SSL证书通常需要绑定IP,不能在同⼀IP上绑定多个域名,IPv4资源不可能⽀撑这个消耗(SSL有扩展可以部分解决这个问题,但是⽐较⿇烦,⽽且要求浏览器、操作系统⽀持,Windows XP就不⽀持这个
扩展,考虑到XP的装机量,这个特性⼏乎没⽤)。
根据ACM CoNEXT数据显⽰,使⽤HTTPS协议会使页⾯的加载时间延长近50%,增加10%到20%的耗电。
HTTPS连接缓存不如HTTP⾼效,流量成本⾼。
HTTPS连接服务器端资源占⽤⾼很多,⽀持访客多的⽹站需要投⼊更⼤的成本。
HTTPS协议握⼿阶段⽐较费时,对⽹站的响应速度有影响,影响⽤户体验。⽐较好的⽅式是采⽤分⽽治之,类似12306⽹站的主页使⽤HTTP协议,有关于⽤户信息等⽅⾯使⽤HTTPS。
HTTPS与HTTP的区别?
1. HTTP是超⽂本传输协议,信息是明⽂传输;HTTPS则是具有安全性的ssl加密传输协议。
2. HTTP和HTTPS⽤的端⼝不⼀样,HTTP端⼝是80,HTTPS是443。
3. HTTPS协议需要到CA机构申请证书,⼀般需要⼀定的费⽤。
4. HTTP运⾏在TCP协议之上;HTTPS运⾏在SSL协议之上,SSL运⾏在TCP协议之上。
三、ARP协议
地址解析协议(Address Resolution Protocol),其基本功能为透过⽬标设备的IP地址,查询⽬标设备的MAC地址,以保证通信的顺利进⾏。它是IPv4中⽹络层必不可少的协议,不过在IPv6中已不再适⽤,并被邻居发现协议(NDP)所替代。
即IP查询物理地址。
四、DNS 协议
如果说ARP协议是⽤来将IP地址转换为MAC地址,那么DNS协议则是⽤来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
DNS 的解析过程?
1. 浏览器搜索⾃⼰的DNS缓存
2. 若没有,则搜索操作系统中的DNS缓存和hosts⽂件
3. 若没有,则操作系统将域名发送⾄本地域名服务器,本地域名服务器查询⾃⼰的DNS缓存,查成功则返回结果,否则依次向根域名
服务器、顶级域名服务器、权限域名服务器发起查询请求,最终返回IP地址给本地域名服务器
4. 本地域名服务器将得到的IP地址返回给操作系统,同时⾃⼰也将IP地址缓存起来
5. 操作系统将 IP 地址返回给浏览器,同时⾃⼰也将IP地址缓存起来
6. 浏览器得到域名对应的IP地址
五、TCP
TCP(Transmission Control Protocol,传输控制协议)是⼀种⾯向连接的、可靠的、基于字节流的传输层通信协议。⼀个完整的 TCP 连接的⽣命周期包括了“建⽴连接”“传输数 据”和“断开连接”三个阶段。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。