zoukankan      html  css  js  c++  java
  • HTTP协议

    HTTP是超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是一个客户端和服务器端请求和应答的标准。请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应。

    使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。服务器在端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,以及返回的内容,如请求的文件、错误消息、或者其它信息。http协议是基于TCP/IP协议之上的应用层协议。

    ​ HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

    ​ HTTP协议是基于B/S架构进行通信的,而HTTP协议的服务器端实现程序有httpd、nginx等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP协议进行通信了。

    工作原理:

    ​ 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

    HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: [7]

    (1)客户与服务器建立连接;

    (2)客户向服务器发送请求;

    (3)服务器接受请求,并根据请求返回相应的文件作为应答;

    (4)客户与服务器关闭连接。

    HTTP是一种无状态协议客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。

    好处:

    • 不会让一个连接处于等待状态
    • 释放链接可以提高服务器的执行效率

    缺点:

    • 如果后续需要处理前面的信息,就必须重新传值
    • 可能导致每次连接传送的数据量增大。

    从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

    HTTP特点

    1. http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
    2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
    3. 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
    4. 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
    5. 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

    HTTPS和HTTP的区别:

    • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
    • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

    HTTP的请求报文格式:

    • 请求头
      • User-Agent: 用户代理
      • Aceept
      • Host: 主机
    • 请求行
      • 请求方法
      • 请求路径
    • 空行
    • 请求数据

    状态消息:

    100: 服务器收到请求,需要请求者继续执行操作。

    200: 请求成功

    300:重定向

    • 301: 永久重定向
    • 302: 临时重定向

    400: 客户端错误

    • 403: 执行访问被禁止
    • 404: 服务器无法找到客户端请求页面
    • 405: 请求方法不被允许

    500: 服务器内部错误

  • 相关阅读:
    开源项目
    获取手机剩余空间工具类
    圆形图片
    gridview添加header
    Eclipse中10个最有用的快捷键组合
    那些年不错的Android开源项目(转)
    Android 获取系统或SDCARD剩余空间信息(转)
    android之 Activity跳转出现闪屏
    解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
    Android studio 导入工程 出现错误
  • 原文地址:https://www.cnblogs.com/lance-lzj/p/14045049.html
Copyright © 2011-2022 走看看