快速理解 HTTP协议

Posted charlies

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速理解 HTTP协议相关的知识,希望对你有一定的参考价值。

什么是http

http 即超文本传输协议,是一种用于分布式、协作式、和超媒体信息系统的应用层协议,是万维网的数据通信的基础;设计其最初目的是为了提供一种发布和接收html页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

理解http协议

http 协议是TCP/IP协议栈/族中"应用层"的一个协议,用于在S(服务器)和C(B)(客户端)之间传递超文本内容,(如HTML、js、css、音视频等),其默认端口是80

一个完整的 web 访问过程(http 协议访问过程)

URL 详解

完整格式

scheme://host[:port#]/path/…/[?query-string][#anchor]

各参数详解:

scheme:方案名/模式名,指定以哪种协议从服务器获取指定资源;方案名不区分大小写,常见方案:HTTP HTTPS FTP MAILTO RTSP FILE NEWS等

PORT:端口号,没项服务在服务器上都对应一个监听端口号
严格来讲,计算机中对外提供的服务程序可以绑定到任一端口上,从而实现监听客户端连接请求的任务
常见协议指定一些默认端口号,应努力避免混用

PARAMS:参数,某些方案会使用参数来指定输入参数,每个参数都采用"名/值对"形式,一个URL中可以有多个这样的"名/值对",使用分号(;)相隔

QUERY:查询字符串,某些方案会使用查询字符串传递参数以激活应用程序,使用?与其他组件分割
http://www.baidu.com/s?wd=js&issp=1&f=8 不能有中文不能有空格

FRAG:片段,也称为ANCHO(锚点)、TAG(标签)指一个资源中某一个部分的名字。引用对象时,不用frag字段传送给服务器,该字段是在客户端内部
使用,通过#与其它部分分割
http://www.xiaoshuo.com/XiYouJi.html#chapeter8

URL与 URI URN 关系

URI:统一资源标志符 包含URL和URN,意思就是确定 URL 的位置,通俗点说就指定网站 ip
URL:统一资源定位符 http://www.baidu.com
URN:统一资源命名符 mailto:admin@tarena.com

HTTP协议详解

HTTP通信
请求与响应原理:
Message:消息/报文,是在HTTP客户端与服务器之间传递的数据块 将是将4k 的数据块进行拆分

HTTP协议规定,消息必须符合特定的格式才能彼此理解

Request Message:客户端向服务器发送的请求消息
Reponse Message:服务器根据客户端的请求消息,返回给客户端的相应消息

消息/报文的组成?
Start Line:消息起始行,必须,消息的基本描述信息
(1)起始行 CRLF
(2)消息头部/报头 1CRLF
消息头部/报头 2CRLF
消息头部/报头 3CRLF
CRLF
(3)消息正文/主体CRLF
Header:消息头部/报头,可能有0~n个,消息详细属性
Body:消息主体,可选,包含数据主体

起始行和消息头是纯ASCLL字符,每行以CRLF结束
消息主体是一个可选的数据块,其中的数据可以为空,或者为字符数据(如html、css、js等)或者二进制数据(图片等)

HTTP消息结构概述

包括请求消息的三部分
(1)起始行/请求行
请求方法 空格 请求URI 空格 所用协议 CRLF
(2)消息头部/请求头部
(3)消息主体/请求正文

请求方法:指定了客户端想对指定的资源/服务器做任何操作:可用的请求方法

1) GET 指明客户端想从客户端获取指定的资源
2) POST指明客户端想发送给服务器的一些数据
3) PUT 指明客户端想让服务器保存某个资源
4) DELETE 指明客户端想让服务器删除某个资源
5) HEAD 指明客户端只想查看指定资源的相应头部信息,而不是资源本身
6) TRACE 客户端可以对请求消息的传输路径进行追踪
7) OPTIONS 客户端询问服务器可以提交哪些请求方法
HEAD 只要资源本身,减少资源请求
PUT DELETE 有些服务器直接被禁用的

响应消息的三部分
(1)起始行/相应行
(2)消息头部/响应头部
(3)消息主体/响应正文

常见面试题

1.常见的服务器端口号
 ftp 21
 2.HTTO1.0和1.1重要区别
   HTTP 1.0 Offline 离线模式,表示断开链接。
   HTTP 1.1 Connection:Keep-Alive 保持连接一段时间
   HTTP 0.9 只支持Get方法,不支持MIME(Multipurpose Internet Mail Extension多用途的互联网邮件扩展),用于在电子邮件中指定附件文件类型的扩展表达方式
   HTTP/1.0+ 支持持久链接、虚拟主机、代理连接等新特性,成为非官方的标准
   虚拟主机就是一台服务器能跑很多的网站。

3.列举HTTP协议1.1相较于HTTP/1.0的改进
   支持持久连接、虚拟主机、代理连接

4.常见的 MIME 类型
   此处表格嵌套
   MIME类型 后缀名是不可靠的
   image/jpeg .jpg
   image/jpeg .jpeg
   text/html .htm
   text/html .html
   text/html .xhtml

[谨记的数据格式]
   json数据格式:application/json
   xml数据格式: application/xml
   png:image/png
   doc:application/msword

URL语法:
URL完整格式:
://:@:/:#
js中的encodeURI()函数不会对 :/@;?#进行编码
encodeURIComponent()函数会进行编码


以上是关于快速理解 HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫入门教程--快速理解HTTP协议

python爬虫入门教程--快速理解HTTP协议

爬虫入门系列:快速理解HTTP协议

理解HTTP协议,简单直接暴力

深入理解HTTP协议—HTTP协议详解(真的很经典)

HTTP协议理解