一.基本概念

  1. 什么是HTTP协议?
    超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器,通过因特网传送万维网文档的数据传送协议。
  2. 作用:服务器传输超文本到本地浏览器的传送协议。最初是用来向客户端传输HTML页面的内容。默认端口是80;
    在浏览器(网页)与服务器之间传送文档或者图像等等。

二. 报文格式

  1. 请求报文

    请求行:包含用于请求的方法,请求URI和HTTP版本。
    这里得提一下什么是URL,以及URL和URI的区别
    (1)URL是Internet上用来描述信息资源的字符串,主要用于各种万维网客户程序和服务器
    程序上。
    (2)URL一般由三部分组成:协议,存有资源的主机IP地址,主机资源的具体地址。
    (3)而URI则是统一资源标识符,用来唯一的标识一个资源。URL则是统一资源定位器,
    它是一种具体的URI,即是说URL可以用来标识一个资源,而且还指明了如何定位
    这个资源。
    (4)URI是一种抽象的高层次概念,而URL则是具体的资源标识的方式。可以说URL是
    URI的子集,URI属于URL更高层次的抽象。

  2. 请求方法:
    (1)GET:获得资源
    (2)POST:传输实体主体
    (3)PUT:传输文件
    (4)HEAD:获得报文首部
    (5)DELETE:删除文件
    (6)OPTIONS:询问支持的方法(客户端问服务器)
    (7)TRACE:追踪路径
    (8)OCONNECT:要求用隧道协议连接代理
    (9)LINK:建立与资源之间的联系
    (10)UNLINE:断开连接关系

这里因为GET和POST容易搞混,所以我简单在这里区分下:

  • get侧重于从服务器获取数据
  • post侧重于向服务器发送数据
  • get通过URL将数据发送给服务器(数量小)
  • post是通过将数据封装在实体发送给服务器(大量数据)
  • get不安全,post安全
  • get发送一个TCP包(头部和实体一起发送),post发送两个TCP包(头部和实体分开发送)
  1. 响应报文和请求报文差不多,只不过请求方法换成了状态码
    HTTP状态码:
    (1)1XX Informational信息性状态码 接受的请求正在处理
    (2)2XX Success成功状态码 请求正常处理完毕
    (3)3XX Redirection重定向状态码 需要进行附加操作以完成请求
    (4)4XX Client Error客户端错误状态码 服务器无法处理请求
    (5)5XX Server Errorf服务器错误状态码 服务器处理请求出错

三.工作原理

  1. HTTP协议是基于请求/响应模型。因为HTTP协议是一个应用层协议。
    而且HTTP是一种不保存状态,即无状态stateless协议;HTTP协议自身不对请求和响应之间的通信状态进行保存;换言之,在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。为了保存用户状态,于是引入了Cookie技术。这里只是简单的归纳HTTP的作用和工作流程。由需要的探究的朋友,可以去查看下Cookie技术。
    在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上。
    所以在进行HTTP请求报文发送时,还需要TCP的三次握手

  2. 工作流程:客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL(统一资源定位器)、协议版本、请求头部和请求数据。服务器以一个状态行为响应,响应的内容包括协议的版本、成功或者错误的代码、服务器信息、响应头部和响应数据。
    (1)客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与web服务器的HTTP端口(默认80)建立一个TCP套接字连接。
    (2)发送HTTP请求
    通过TCP套接字,客户端向web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四个部分构成。
    (3)服务器接受请求并返回HTTP响应
    web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四个部分构成
    (4)释放连接的TCP连接
    若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;如果connecttion模式为keepalive,则连接会保持一段时间,在该时间内可以继续接受请求
    (5)客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,差看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口显示。

eg:在网页打开www.baidu.com会经过的流程:
(1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
(2)解析出IP地址后,根据该IP地址和默认端口80,与服务器建立TCP连接
(3)浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
(4)服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器
(5)释放TCP连接
(6)浏览器将该html文本显示内容

HTTP:超文本传输协议相关推荐

  1. Servlet - HTTP超文本传输协议

    HTTP (超文本传输协议) 超文本传输协议(HTTP)是用于协作.分布式.超媒体信息系统的应用级协议.它是用于建立客户端和服务器之间通信的数据通信协议.   HTTP协议是基于TCP/IP的通信协议 ...

  2. HTTP协议(HyperText Transfer Protocol,超文本传输协议)

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一个基于TCP/IP通信 ...

  3. 吾解——HTTP(超文本传输协议)

    今天拜读了一本<图解HTTP>,将HTTP总结一下. HTTP(超文本传输协议):一种规则 1.定义:一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样 ...

  4. 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...

    网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A.超文本传输协议B.传输控制协 更多相关问题 尿血证常见的病因病机有______.脾不统血.______.脾肾两虚.______. ...

  5. http超文本传输协议

    http简介 超文本传输协议(HyperText Transfer Protocol),详细规定浏览器和万维网之间互相通信的规则,是万维网交换信息的基础,允许将HTML文档从Web服务器传送到Web服 ...

  6. 超文本传输协议及HTTP包

    HTTP协议用于在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议 --客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包.HTTP协议使用可靠的TCP连 ...

  7. 王道考研 计算机网络20 应用层 客户端/服务器C/S模型 P2P模型 DHCP协议 域名解析系统DNS 文件传送协议FTP 万维网 超文本传输协议HTTP

    应用层概述 FTP:文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议. SMTP:是一种提供可靠且有效的电子邮件传输的协议. POP3 ,全名为&q ...

  8. 网络(7)-HTTP(HyperText Transfer Protocol,超文本传输协议)

    http是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.请求和响应消息的头以ASCII码形式给出:而消息内容则具有一个类似MIME的 ...

  9. Hyper Text Transfer Protocol(超文本传输协议)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  10. HTTP(超文本传输协议)

    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网(WWW:World Wide Web )服务器 ...

最新文章

  1. C/C++ 中左值和右值的区别
  2. zip压缩与解压缩示例
  3. 200m的共享虚拟主机够用吗
  4. antd 给input设置值_Antd 中 Input 组件默认值的显示
  5. uvision4 ide已停止工作
  6. vue点击按钮怎么跳转图片_vue-router组件里面点击一个按钮跳转到一个新的组件该怎么实现...
  7. 常见的不同类型运算的转换方式
  8. java 递归20210408-3
  9. 一分钟搭建、运行、测试SSM项目
  10. opencv介绍+python调取图片
  11. 人工智能TensorFlow工作笔记004---还记得标准差嘛_标准差的由来
  12. codeforces 597C (树状数组+DP)
  13. 大智慧公式系统:条件选股之基本技巧
  14. JVM - 类加载器
  15. 艾媒研报 |2019年腾讯控股(0700.HK)业务解读及发展趋势研究报告
  16. 达叔的游戏框架(二) 得到其他模块的方式
  17. 「笔耕不辍」MQ的原理以及持久化
  18. Python小工具:批量给视频加水印
  19. 关于android中的.9图(一)——如何画.9图
  20. ben we_老WE成立手游战队!2020LOL冬季转会汇总:截止11月17日(每日更新)

热门文章

  1. Ubuntu18.04下的截图快捷方式
  2. 解决方案:Zotero+坚果云+Zotfile完成多平台多设备的文献同步
  3. 浅谈SMOTE之类不平衡过采样方法
  4. 学计算机高中应选什么科目,学计算机高中需要选哪三科?高中自选三科怎么上课?...
  5. 基于mindwave脑电波进行疲劳检测算法的设计(3)
  6. shape_predictor_68_face_landmarks.dat 下载地址
  7. RuntimeError: generator raised StopIteration
  8. 什么是node.js
  9. How to make seperate debuginfo file
  10. 字体样式font-style的介绍