【python爬虫】常见面试题之http协议问题总结
简介
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
在TCP/IP协议栈中的位置
HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
HTTP的请求响应模型
HTTP协议永远都是客户端发起请求,服务器回送响应。

这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
http协议的主要特点
(1)无状态
http协议无状态协议。无状态是指协议对于事物处理没有记忆能力。缺少记忆,意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次传送的数据量比较大。
HTTP协议的无状态是指服务器的协议层无需为不同的请求之间建立相关关系,它特指的是协议层。但这并不代表建立在HTTP协议之上的应用程序就无法维持状态。应用层可以通过会话session来跟踪用户请求之间的关联性,服务器会为每一个会话对象绑定一个唯一的会话ID,浏览器可以将会话ID记录在本地缓存LocalStroage或者Cookie,在后续的请求带上这个会话ID,服务器就可以为每个请求找到之前的会话状态。
(2)长连接
HTTP早期版本中每个请求都会发起一个连接,一个网页除了html还有其他静态资源以及诸多的API调用,如果每个请求都一个连接,这是非常浪费服务器资源的,同时也让客户端的访问速度慢了不少。
HTTP1.0之后引入了Keep-Alive持久连接,HTTP1.1之后默认为持久连接。它使得HTTP的一个连接可以连续服务多个请求,有效节省了资源,增加了客户端的访问速度。
但是,持久连接也不是一直连接,毕竟每个连接都会占用服务器资源,如果打开网页的人太多,那服务器的资源也会紧张,所以一般服务器会配置一个KeepAlive Timeout参数和KeepAlive Requests参数限制单个连接持续时长和最多服务的请求次数。
HTTP常见的状态码有哪些
200:请求被正常处理
301:永久重定向
302:临时重定向
304:资源被浏览器缓存了,不需要请求服务器(打开经常访问的网站)
400:用于参数验证,一般是少参数了或者参数错误
403:资源禁止访问,IP被列入黑名单了
404:服务器无法找到对应的资源
500:服务器内部错误
502:后端服务挂掉或者服务器压力过大,nginx接到的请求无法及时传递给后端的服务处理,这个时候就会出现502错误。
HTTP的缺点和HTTPS
HTTP的缺点:
(1)通信使用明文不加密,内容可能会被窃听
(2)不验明对方身份,可能遇到伪装
(3)无法验证报文完整性,可能遭到篡改
HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+ 认证 + 完整性保护。
【python爬虫】常见面试题之http协议问题总结的更多相关文章
- python爬虫常见面试题(二)
前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...
- python爬虫常见面试题(一)
前言 之所以在这里写下python爬虫常见面试题及解答,一是用作笔记,方便日后回忆:二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正:三是我也是互联网寒潮下岗的那批人之一,为 ...
- 整理的最全 python常见面试题(基本必考)
整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...
- 整理的最全 python常见面试题
整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩ 1.大数据的文件读取: ① 利用生成器generator: ②迭代器进行迭代遍历:for line in file; 2.迭代 ...
- HTTP、TCP、IP协议常见面试题
前言:在看面试题之前,先了解一下基本定义. HTTP.TCP.IP协议基本定义 HTTP: (HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数 ...
- iOS常见面试题汇总
iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...
- 【javascript常见面试题】常见前端面试题及答案
转自:http://www.cnblogs.com/syfwhu/p/4434132.html 前言 本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典.很有代表性.上 ...
- redis知识点及常见面试题
redis知识点及常见面试题 参考: https://zm8.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQrIqNiZaJnpOWjIvQno2Llpy ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
随机推荐
- VS中自动选择x86或x64的dll
http://www.cnblogs.com/lzjsky/archive/2010/09/06/1819321.html 原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win ...
- C#学习笔记(十九):字典
自定义泛型 泛型类,第一替代符T,第二替代符U using System; using System.Collections.Generic; using System.Linq; using Sys ...
- POJ 1222 EXTENDED LIGHTS OUT(高斯消元解XOR方程组)
http://poj.org/problem?id=1222 题意:现在有5*6的开关,1表示亮,0表示灭,按下一个开关后,它上下左右的灯泡会改变亮灭状态,要怎么按使得灯泡全部处于灭状态,输出方案,1 ...
- Ubuntu 14.04 vi 退格键不能删除字符
执行命令 sudo apt-get install vim
- windows cmd 命令和 linux 命令
windows cmd 命令和 linux 命令 常用的内部命令有md.cd.rd.dir.path.copy.type.edit.ren.del.cls.ver.date.time.prompt.常 ...
- S3 对象
在 R 中,S3 对象系统是一个简单且宽松的面向对象系统.每个基本对象的类型都有一个 S3 类名称.例如:integer.numeric.character.logical.list 和 data.f ...
- 《剑指offer》第三十一题(栈的压入、弹出序列)
// 面试题31:栈的压入.弹出序列 // 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是 // 否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4. / ...
- windows 网页打不开github网站
gitbub是外网,经常会遇到访问不了的问题,并且有时能访问也网速好慢. 解决这个问题的方法是 更改hosts文件,地址:C:\Windows\System32\Drivers\etc 我在hosts ...
- Codeforces 834D - The Bakery(dp+线段树)
834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值. dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1 ...
- Codeforces 260C - Balls and Boxes
260C - Balls and Boxes 思路:模拟.在x前面找到最小值,如果没有,从0跳到n,继续找到最小值,边找最小值路过的点边减1.然后所有值都减去最小值,最小值那个点加上减去的值. 找到x ...