HTTP相关总结

HTTP概述:

     HTTP(Hyper Text Transfer Protocol) 即超文本传输协议,是基于TCP协议之上的,用于从万维网(WWW.)服务器传输超文本到本地浏览器的传送协议。之所以说基于TCP协议,是因为每当浏览器需要从服务器获取网页数据时,都会发出一次Http请求 ,Http会通过TCP建立起一个到服务器的连接通道,当本次请求数据完毕后,Http会立即将TCP连接断开。由于此过程非常短,所以Http连接是一种短连接,是一种无状态连接

HTTP 工作原理

     HTTP协议工作于客户端-服务端架构(C/S)上。浏览器作为HTTP客户端通过URL(我们常说的网址)向HTTP服务端即WEB服务器发送所有请求。

     HTTP特点:

  • 支持客户端、服务器模式。
  • 简单快速: 客户向服务器请求服务时,只需传送请求方法与路径。由于HTTP协议简单,使得HTTP服务器程序规模小,因而通信速度快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:每次链接只处理一个请求。此方式能节省传输时间。
  • 无状态:指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。反之,在服务器不需要先前信息时它的应答就较快。

     URL:

     URL指服务器上的某个具体资源,通常也被称作网址。

通用格式:
        scheme://host[:port]/path[?query-string][#fragment]

         例如,在百度上搜索"C++":

https://www.baidu.com/s?wd=C%2B%2B&rsv_spt=1&rsv_iqid=0xd26d115f0000ed7f&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&rqlang=&tn=93153557_hao_pg&ch=&rsv_sug3=4&rsv_sug4=492&rsv_sug=0&rsv_sug1=2

名称功能对应字段
scheme访问服务器时使用的那种协议格式。(http、https、ftp等)https
host

http服务器的IP地址或域名

www.baidu.com
port端口号,每种协议都有特定的端口号,比如http是80。https默认端口号443,可以省略
path访问资源的路径s
query-string

发给http服务器的数据。

KV结构(键值对之间使用 '&' 分割; 键和值之间使用 '=' 分割) 查找字符串

wd=C%2B%2B.......
fragment锚点 

 

  • 在浏览器中输入URL后,发生什么事?

            1. 应用层:

                 1.1 DNS域名解析

                 1.2 HTTP角度,发送一个HTTP请求,获得一个HTTP响应

                 1.3 HTTPS角度

            2. 传输层角度:

                 2.1 TCP连接建立过程

                 2.2 TCP传输数据的过程(确认应答、超时重传、滑动窗口...)

                 2.3 断开链接过程

                 2.4 长连接的设定

            3. 网络层角度:

                 3.1 IP地址

                 3.2 路由选择过程

            4. 数据链路层角度:

                 以太网的层次,如何通过数据帧的方式获得IP地址

            5. 交互

     

HTTP请求格式:

请求行

a). 方法

b). URL

c).  版本号(HTTP/1.1 HTTP/2.0 HTTP/3.0)

协议头部(Header)

请求属性每一行是一个键值对,键和值之间用 分割。每个属性消息头部用做CRLF分隔符,最后一个属性头部有两个CRLF,标识消息头部的结束

空行

 

主体(Body)

Body允许为空字符串。若Body存在,则Header中Content-Length来标识长度

              

HTTP响应格式:

              HTTP响应与请求格式大致类似。

请求行

a). 版本号

b). 状态码

c). 状态码解释

协议头部(Header)

与请求格式一样

空行

 
主体(Body)

Body允许为空字符串. 如果Body存在, 则在Header中会有⼀一个Content-Length属性来标识Body的长度;

如果服务器返回了⼀一个html页面, 那么html页面内容就是在body中。

 

HTTP方法:

GET

请求指定页面信息,并返回实体主体。

POST

向指定资源提交数据进行处理请求。

PUT

从客户端向服务器传送的数据取代指定的文档内容

HEAD

获取报文首部

DELETE

请求服务器删除指定页面

CONNECT

1.1版本中预留能够将连接改为管道方式的代理服务器

PATCH

实体中包含一个表,表中说明与该URL所表示的原内容的区别

MOVE

请求服务器将指定页面移至另一个网络

OPTIONS

允许客户端查看服务器的性能

TRACE

回显服务器收到的请求,主要用于测试或诊断

COPY

请求服务器将指定页面移至另一个网络地址

LINK

请求服务器与资源间建立链接请求

UNLINK

断开链接关系

WRAPPED

运行客户端发送经过封装的请求

Extensionmothed

在不改动协议前提下,可增加另外方法

  • GET和POST区别:

区别

GET

POST

本质

用于信息获取

用于修改服务器上资源的请求

安全性

请求数据会附在URL之后,所以不安全

提交数据放在HTTP报文实体的主体里,所以安全性较高。但若传输敏感数据,请使用数据加密。

传输长度限制

有限制,一般在2KB(GET是通过URL提交数据,URL本身没有限制,但是不同浏览器对URL有限制)

没有限制,对数据大小取决于服务器处理程序能力

  • HEAD与GET区别:GET有方法实体;而HEAD只是获取报文首部,无实体。
  • HTTP状态码:

1xx(信息性状态码)

表示服务器已接收客户端请求,客户端可以继续发生请求

100:客户端应继续发送请求,若客户端请求发送完,可忽略。

 

101:服务器已理解客户端请求,将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求

2xx(成功状态码)

表示服务器成功处理客户端请求

200:客户端请求成功

 

204:服务器成功处理了请求,但不返回任何实体内容

3xx(重定向状态码)

表示服务器要求客户端重定向

301:永久性重定向,响应报文的Location首部应该有资源的新URL

 

302:临时性重定向,响应报文的Location首部应该有资源的临时URL

4xx(客户端错误状态码)

表示客户端错误

403:服务器拒绝提供服务,拒绝原因在响应正文给出

 

404:请求资源不存在

5xx(服务器错误状态码)

表示服务器错误

500: 服务器发送不可预知错误

 

503:服务器当前不能处理请求,一段时间后可能恢复正常

常见Header:

  • Content-Type:数据类型(text / html)
  • Content-Length:Body长度
  • Host:客户端告知服务器,所请求的资源是哪个主机的哪个端口
  • User-Agent:声明用户操作系统和浏览器版本信息
  • referer:当前页面是从哪个页面跳转过来的
  • location:搭配3xx状态码,告诉客户端去哪访问
  • Cookie:用于在客户端存储少量信息,常用于实现会话功能。
  • session与cookie:

        Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择。

        Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性。

  • session工作原理:

  (1)当有Session启动时,服务器生成一个唯一值,称为Session ID(通过取进程ID的方式取得的)。

  (2)然后,服务器开辟一块内存,对应于该Session ID。

  (3)服务器再将该Session ID写入浏览器的cookie。

  (4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。

  (5)当浏览器连入IIS(WEB服务器)时并请求的ASP(动态服务器页面)内用到Session时,IIS就读浏览器Cookie中的Session ID。

  (6)然后,服务检查该Session ID所对应的内存是否有效。

  (7)如果有效,就读出内存中的值。

  (8)如果无效,就建立新的Session。   

  • session与cookie区别:

SessionCookie
保存在服务器保存在客户端
可以保存任何类型数据,甚至是对象保存的是字符串或二进制数据
仅在自己域名内有效可支持跨域名访问
生存期短可以设置很长的生存时间

HTTP与HTTPS:

        HTTPS:并非是应用层的一种协议,只是HTTP通信接口部分用SSL(安全套接层)和TLS(传输安全层)协议代替。TLS/SSL使用了非对称加密、对称加密以及hash等。

        HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTP

HTTPS

 

需要到CA申请证书

超文本传输,信息明文传输

具有安全性的ssl加密传输协议

80端口

443端口

连接很简单,是无状态的

由http+ssl协议构建,可加密传输、身份认证,较为安全

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值