http请求过程

   http协议(hypertext transfer protocol),是一种基于TCP/IP的应用层协议(像apache服务器默认80端口,当然可以改动),用于传输音视频,文本图片等信息,它是一种短连接无状态,媒体独立,的协议(短连接:消息传输完成后就会断开连接每个http请求只负责一次请求,无状态是指协议对请求事务没有记忆状态,每次需要时都需要重新连接发送请求,媒体独立是指任何文件都可以通过http协议传输,但是要使用合适的MIME-type内容类型)。

     HTTP协议通信过程
      http协议通过URL(uniform resource locator 统一资源定位符)发起请求。他的格式为protocol://hostname:port/path/...?key=value这些信息都会以相应的格式封装到报文请求中,具体过程是:(1)客户端根据url解析出服务器的ip或者域名(这时需要走一下DNS服务器)和端口简历TCP连接,接线下来才是真正HTTP请求(2)http请求报文有请求行(request-line)请求头(request-header)、空行(blank-line)、请求体(request-body)

  <request-line>

 <headers>

 <blank line>

 <request-body>

request-line: 请求行结束以换行符/r/n为结束标志,主要内容是:请求方式(post,get,put,delete,head)+空格 +URL+
版本;

headers:有key-value键值对组成,每行一对,结尾用/r/n结束

User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

空行:表示请求结束,


requstbody:是具体的请求内容


服务器收到请求后经过服务器的一系列处理,响应报文,报文中包含服务器的响应数据格式为:

状态行、消息报头、响应正文,格式与请求报文类似

status-line

headers

blank line

response-line

状态行的格式为 http-version staus-code reason-phrase crlf


其中,HTTP-version表示服务器的状态版本,一般为http1.1

status-code 为响应状态码有1XX,2XX,3XX,4XX,5XX

1XX:指示请求已接收继续处理

2XX:成功,指示已被成功接受。理解,接受

3XX:重定向

4XX:客户端错误

5XX:服务端错误服务器未能实现合法请求

一个基本的http响应报文的例子

  
  
  1. Connection:
    keep-alive
  2. Content-Length:
    49
  3. Content-Type:
    image/gif
  4. Date:
    Sun, 14 Jan 2018 07:27:03 GMT
  5. Eagleeye-Id:
    0ab5be8415159148233573268e38b5
  6. EagleEye-TraceId:
    0ab5be8415159148233573268e38b5
  7. Server:
    Tengine/Aserver
  8. 响应正文.....


当然响应头和请求头部分还有其他的一些信息,可以再chrome的开发者工具中的network查看到每次请求的具体信息


http请求的不足
(1)通信使用明文不加密,容易被窃听加密后需要被窃听,但是需要复杂的手段才能获取到传输内容
(2)不验证通信方的身份,可能遭遇伪装,冒充
(3)无法证明报文的完整性,所以可能已经遭篡改
为了避免这些问题可以使用HTTPS协议,基本原理是浏览器不会直接和TCP通信而是先和SSL通信加密,再将信息传递给服务器

    

参考链接:

https://www.cnblogs.com/mahuan2/p/6389093.html

http://blog.csdn.net/zhangliang_571/article/details/23508953











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值