python_面试题_HTTP基础相关问题
1.相关问题
问题1: 客户端访问url到服务器,整个过程会经历哪些
问题2: 描述HTTPS和HTTP的区别
问题3: HTTP协议的请求报文和响应报文格式
问题4: HTTP的状态码有哪些?
2.问题回答
问题1:
按照TCP/IP的五层协议描述
1.首先进行域名解析,域名解析具体过程如下:
- 浏览器搜索自己的DNS缓存,缓存中维护一张域名与IP地址的对应表
- 若没有,则搜索操作系统的DNS缓存;
- 若没有,则操作系统将域名发送至本地域名服务器(递归查询方式),本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则,通过以下方式迭代查找:
- 本地域名服务器向根域名服务器发起请求,根域名服务器返回com域的顶级域名服务器的地址;
- 本地域名服务器向com域的顶级域名服务器发起请求,返回权限域名服务器地址;
- 本地域名服务器向权限域名服务器发起请求,得到IP地址;
- 本地域名服务器将得到的IP地址返回给操作系统,同时自己将IP地址缓存起来;
- 操作系统将IP地址返回给浏览器,同时自己也将IP地址缓存起来;
2.应用层:浏览器发起HTTP请求;
3.传输层:选择传输协议,TCP或者UDP,TCP是可靠的传输控制协议,对HTTP请求进行封装,加入了端口号等信息;提供端到端的连接
4.网络层:通过IP协议将IP地址封装为IP数据报;通过路由传输到对端。然后此时会用到ARP协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,找到目的MAC地址;
5.数据链路层:根据mac地址,建立连接
6.物理层:物理层传输010101的数据流
7.服务器响应请求并请求客户端要的资源,传回给客户端;.断开TCP连接,浏览器对页面进行渲染呈现给客户端。
问题2:
http协议:
- 端口:TCP80端口
- 超文本传输协议,信息是明文传输
- 连接简单,是基于无状态的传输。
https协议:
- 端口:TCP443端口
- 具有安全协议的超文本传输协议,具有安全性的ssl加密传输协议,信息是密文传输
- 由ssl+http协议构建的可进行加密传输,身份认证的网络协议
- https协议需要到ca机构申请ssl证书,免费证书较少,高级ssl证书需一定的费用
注:关于http版本的相关内容还待学习,主要是1.0/1.1/2.0版本之间的区别
问题3:
http请求报文:HTTP 请求报文由请求行、请求头部、空行 和 请求包体 4 个部分组成,如下图所示:
http响应报文:响应报文由状态行、响应头部、空行 和 响应包体 4 个部分组成,如下图所示:
请求报文以及响应报文相关具体的应用,需要参考具体的项目或者是实例。
问题四:
状态码如200 OK,以3位数字和状态原因构成。数字中的第一位指定了响应级别,后两位无分别。响应分别有5种。
每个系列常用的code
2xx:200(get请求成功),201(post,put创建了一个资源),204(删除一个资源,服务器删除成功)
3xx:301(服务器永久移动,自动转发到新的位置),302(服务器临时移动,原服务器没有永久移除)俩者的最大区别为搜索引擎是否记录
4xx:400(客户端请求语法错误),403(服务器拒绝提供服务),404(客户端引用了不存在的资源)
5xx:500(服务器错误,拒绝请求),503(服务器当前不能处理客户请求,当前服务器不可用),504(请求超时,没有到达网关)
500,503,504常见场景
500:常见场景为编程语言语法错误,web脚本错误,高并发,打开文件数超过系统资源限制,一般解决思路为查看服务器nginx,python的错误日志,负载均衡,修复脚本错误
503:常见场景为服务器无法使用,一般为服务器超载或者是停机维护,解决思路为查看服务器系统资源或者确定服务器开启状态
502,504:常见场景为web服务器故障,程序进程不够,一般解决思路为查看nginx代理的问题,或者是nginx的conf配置相关
ok
python_面试题_HTTP基础相关问题的更多相关文章
- Java面试题之基础篇概览
Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...
- Spark学习之基础相关组件(1)
Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台. 2. Spark的一个主要特点是能够在内存中进行计算,因而更快. 3. RDD(resilient di ...
- day 28 网络基础相关的知识
1.网络基础相关的知识 架构 C/S 架构: client 客户端 server服务器端 优势: 能充分发挥PC机的性能 B/S 架构: browser 浏览器 server服务器 隶 ...
- 最新整理的spring面试题从基础到高级,干货满满
最新整理的spring面试题从基础到高级,干货满满 前言: 收藏了一些关于Spring的面试题,一方面是为了准备找工作的时候看面试题,另一方面,通过面试题的方式加深一些自己的理论知识. spring ...
- [Linux]经典面试题 - 网络基础 - TCP三次握手
[Linux]经典面试题 - 网络基础 - TCP三次握手 目录 [Linux]经典面试题 - 网络基础 - TCP三次握手 一.TCP报文格式 1.1 TCP报头 1.2 报文图例 二.TCP三次握 ...
- Python自动化测试面试题-Python基础篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- python面试题包含基础和Linux操作以及数据库相关
今天面试了一家公司,感觉表现的不是很好,记录一下面试的试题. python基础部分 python 是一门什么样的语言面向对象的语言有那些,python的面向对象和Java面向对象的区别 Python是 ...
- python_面试题_DB相关问题
1.mysql部分 问题 问题1:mysql的存储引擎 问题2:mysql的索引机制 问题3:mysql的事务以及事务隔离级别 问题4:mvcc/GAP lock是做什么的 问题5:mysql的悲观锁 ...
- C/C++笔试题(基础题)
为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...
随机推荐
- 前端面试题-clearfix(清除浮动)
一.浮动的概念 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 二.浮动的影响 1. ...
- 使用h5新特性,轻松监听任何App自带返回键
1.前言 如今h5新特性.新标签.新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力.作为前端程序员,我觉得我们还是有必要积极关注并勇敢地加以实践.接下来我将和各位分享一个特别 ...
- 如何使用git回退部分修改(转)
如何使用git回退部分修改(转) 很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导 ...
- 【51nod 2026】Gcd and Lcm
题目 已知 \(f(x)=\sum_{d|x}μ(d)∗d\) 现在请求出下面式子的值 \(\sum_{i=1}^{n}\sum_{j=1}^{n}f(gcd(i,j))∗f(lcm(i,j))\) ...
- HandlerAdapter解析参数过程之HandlerMethodArgumentResolver
在我们做Web开发的时候,会提交各种数据格式的请求,而我们的后台也会有相应的参数处理方式.SpringMVC就为我们提供了一系列的参数解析器,不管你是要获取Cookie中的值,Header中的值,JS ...
- css3之3D 旋转立方体与哆啦A梦
主要记录两个css3 3D转换的示例 ㈠哆啦A梦 三个哆啦A梦的图片,分别让其围绕X轴,Y轴,Z轴旋转60度,鼠标放上开始发生变化. 具体代码如下图所示: <!DOCTYPE html> ...
- jquery preventDefault()方法 语法
jquery preventDefault()方法 语法 作用:preventDefault() 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交).大理石平台价格 语法:event ...
- Eclipse 导入逆向工程
相关配置 生成 生产前 生成后
- 一组相关联的问题:“sudo: unable to resolve host ###: Connection timed out”、软件启动速度超慢、IPv6无法使用
造冰箱的大熊猫@cnblogs 2018/9/15 近日陆续发现计算机出现几个问题,最终发现这些问题实际上是由同一个原因导致的 问题1:无法使用IPv6 问题2:无论是启动Emacs GUI还是在命令 ...
- 智能指针之shared_ptr基本概述
1.shared_ptr允许有多个指针指向同一个对象,unique_ptr独占所指向的对象. 2.类似于vector,智能指针也是模板.创建智能指针: shared_ptr<string> ...