客户端和服务器端:

  • 仅从一条通信路线来说,服务器端和客户端是确定的;
  • HTTP协议规定,通信一定是先从客户端开始建立,服务器端在没有接受到请求之前不会发送响应;

不保存状态:

  • HTTP是无状态协议,对发送过的请求和响应都不做持久化处理,即不会根据之前的请求和响应的状态进行本次请求处理;
  • 这是为了更快地处理大量事务;
  • 使用cookie技术可以进行弥补;

请求/响应报文:

  • 请求报文     //请求方法、请求URL、协议版本、可选请求首部字、内容实体
GET    /index.html    HTTP/1.1
Host: hackr.jp ------------------------------------
POST /form/enrty HTTP/1.1 Host: hackr.jp
Connection: keep-alive
Connection-Type: application/x-www-form-urlencoded
Content-Length: 16 name=ueno&age=37
  • 响应报文   //协议版本、状态码、解释状态码的原因短语、可选的响应首部字段、响应主体
HTTP/1.1    200   OK 

Date: Tie, 10 Jul 2012 06:50:15 GMT
Content-Length: 362
Content-Type: text/html <html>
......................
  • 请求方法:HTTP/1.1

    • GET:用来请求访问已被URI识别的资源;指定的资源经服务器端解析后返回响应内容;即:

      • 请求文本,直接返回;
      • 请求CGI(通过网关接口)那样的程序,则返回执行后输出的结果;
    • POST:用来传输实体的主体;
    • HEAD:和GET方法一样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间;
    • OPTIONS:用来查询针对请求URI指定资源支持的方法;
    • PUT:传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置;由于HTTP/1.1的PUT方法自身不带验证机制,因此一般不采用;
    • DELETE:删除文件,与PUT方法相反;但也不不带验证机制,一般不采用;
    • TRACE:让web服务器端将之前的请求通信返回给客户端;可以用来查询发送出去的请求是怎样被加工修改的;但不常用且易引发XST(跨站追击);
    • CONNECT:要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信;

持久连接:早期的HTTP协议中每进行一次通信就断开TCP连接;目前的HTTP协议已经实现了持久化连接;只要任意一端没有明确提出断开连接,则保持TCP连接状态;

管线化:从前发送请求后需等待并收到响应才能发送下一个请求;持久化连接实现之后,可以实现管线化技术,即同时并行发送多个请求;

Cookie的状态管理://Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态;

  • 客户端:cookie会根据从服务器端发送的响应报文内觉得Set-Cookie的首部字段信息通知客户端保存Cookie;当下次客户端往服务器端发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去;
  • 服务器端:发现客户端发送过来的Cookie之后,会去检查究竟是从哪一个客户端发出的连接请求,然后对比服务器上的记录,最后得到之前的状态信息;

HTTP基础02--HTTP协议简介的更多相关文章

  1. UNIX/Linux网络编程基础:应用层协议简介

    目录 1.HTTP协议 2.FTP协议 3.TELNET协议 4.NFS协议 1.HTTP协议 应用层协议HTTP协议是Web的核心.HTTP协议在Web的客户程序和服务器程序中得以实现,运行在不同系 ...

  2. C#3.0新增功能09 LINQ 基础02 LINQ 查询简介

    连载目录    [已更新最新开发文章,点击查看详细] 查询 是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据 ...

  3. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  4. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

  5. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  6. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  7. web应用,http协议简介,web框架

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  8. 转:SATA协议简介

    SATA协议简介 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/FA99999/article/details/70738724 1.概述 本文档主 ...

  9. 网络编程基础:网络基础之网络协议、socket模块

    操作系统(简称OS)基础: 应用软件不能直接操作硬件,能直接操作硬件的只有操作系统:所以,应用软件可以通过操作系统来间接操作硬件 网络基础之网络协议: 网络通讯原理: 连接两台计算机之间的Intern ...

  10. web开发基础之HTTP协议

    HTTP协议 HTTP协议简介 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数 ...

随机推荐

  1. Python Django 的 django templatedoesnotexist

    django 1.8版本的解决方案 在  setting.py 这个文件里 TEMPLATES = [ ...... #原来的 #'DIRS': [ ], //  这个 列表里添加 template路 ...

  2. HDOJ 1864 最大报销额(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=1864 最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memor ...

  3. linux开机启动服务和chkconfig使用方法(自定义服务路径启动)

    服务概述在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭.将 需要自动启动的脚本/etc/rc.d/init.d目录 ...

  4. MVC(Model(模型) View(视图) Controller(控制器))

    复习 1.      商品表 增删改查 index.php  add.php   view.php   edit.php   action.php 2.      MVC(Model(模型)  Vie ...

  5. C/C++程序终止时执行的函数——atexit()函数详解

    很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束.在程序的某个地方用exit()结束程序.用户通过Ctrl+C或Ctrl+break操作 ...

  6. Ninject学习笔记<二>

    本文转载自kuangkro 如果给您带来不便请联系博主 一.控制反转和依赖注入 Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架.所谓的IOC,即控制反转(Inversion of ...

  7. Java for LeetCode 068 Text Justification

    Given an array of words and a length L, format the text such that each line has exactly L characters ...

  8. 1.saltstack基础笔记

    环境: master: 节点node1:阿里云:121.42.195.15 centos6.6 minion: 节点node2:腾讯云:182.254.157.19 centos6.6 一.salts ...

  9. HDU1005&&NEFU67 没有循环节

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. c++流的读写

    std::istream input_stream;//这是一个文件流,想把它写入文件 思路是,先将input_stream流读入一个char* buffer; 然后用std::ofstream将bu ...