前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

HTTP协议

HTTP协议属于建立在TCP协议中的应用层上的一种协议,HTTP协议以客户端请求和服务端应答为标准

浏览器通常被人称为客户端,Web服务器常被称作服务端

HTTP协议常用端口为80,客户端首先通过80端口向HTTP服务端发起请求,建立TCP连接;之后进行HTTP数据传输

协议
HTTP 应用层
SSL/TLS 加密层
TCP 传输层
IP 传输层
数据链路层 物理层

当浏览器作为客户端访问服务器之后,取到所有所需的数据,立即断开TCP连接,整个HTTP连接过程非常短,所以人们也常称HTTP协议为无连接的协议

这也因为每一次HTTP的请求,都是重新开启一个新的连接,而不是在一个历史连接持续工作

资源定位标识符

发起HTTP请求的内容资源由统一资源标识符(Uniform Resource Identifiers)URI进行表示

其中资源定位标识符主要有三种

  • URI:统一资源标识符(uniform resource identifier);唯一表示一个资源。
  • URN:统一资源命名(uniform resource name);通过名字来表示资源。
  • URL:统一资源定位器(uniform resource locaotor);一个具体的URI标示,可以通过该标识获取访问到对应资源

URI

其中如果已经是一个URL,那么肯定是一个URI标识;但是一个URI并不一定是一个URL;URL是URI的一种表现形式

URL

URL是资源标识符,而URL不光具有标识性,还需要具有定位性,用来更加具体描述资源的具体位置,并且还会指明获取资源所采用的协议。一个URL包含,主机名称(IP或域名)、端口号(默认为80)、路径和查询字符串5部分

http://www.example.com:80/aaa/test.jpg?id=1
  • 网络协议为:http
  • 主机:www.example.com
  • 端口:80
  • 路径:aaa/test.jpg
  • 查询字符串参数:id=1

URN

URN也是URI的一种表现形式,包括名字(给定的命名空间),但是不包括访问的方式

www.example.com/aaa/test.jpg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ba9mRGrq-1634811378238)(./静态资源/URI图示.png)]

Request

当我们使用HTTP协议访问某个连接时,首先需要向服务器提交一个Request请求;

一般当我们使用浏览器访问Web服务时,由浏览器完成这个工作,Request消息分为三部分,分别包括:Request Line、Request Header、Body

下面为HTTP协议在Request时的消息体构造:

请求方法 URL 协议版本 \r \n Request Line
头部字段 **

Python网络协议编程之HTTP协议详解相关推荐

  1. 网络套接字编程之IO模型详解

    网络套接字编程之IO模型详解 本文主要参考自<UNIX网络编程>(第1卷)(套接口API第3版) Unix下可用的五种I/O模型有: 阻塞式I/O 非阻塞式I/O I/O复用(select ...

  2. android surface编程,Android编程之SurfaceView实例详解

    本文实例讲述了Android编程之SurfaceView用法.分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在U ...

  3. Java并发编程之Thread类详解

    Thread类详解: 线程(Thread): 是操作系统进行调度的最小单位,Java中的线程是对操作系统线程的封装.本文从线程的创建到停止结合代码和具体实例分析一下关于java线程的一些常见问题. 线 ...

  4. python itertools模块位置_Python高效编程之itertools模块详解

    0 前言 说到处理循环,我们习惯使用for, while等,比如依次打印每个列表中的字符:lis = [ I , love , python ] for i in lis: print(i) I lo ...

  5. socket网络编程之htons()相关详解

    1.走起 ntohs =net to host short int 16位 htons=host to net short int 16位 ntohl=net to host long int 32位 ...

  6. TCP/IP编程之accept函数详解

    accept函数由TCP服务器调用,用于从已完成连接队列返回下一个已完成连接.如果已完成连接队列为空,那么进程被投入睡眠(假定套接字默为默认的阻塞方式) 函数原型: ACCEPT(2) Linux P ...

  7. TCP/IP编程之select函数详解

    前述: linux下的I/O复用模型目前很多都已经不用select函数了,而是用epoll,但是为什么还需要了解select编程呢,其实是从两个方面考虑的:一是为了通过select去理解epoll,而 ...

  8. shell编程之 cut命令详解

    cut命令是我们在shell编程中常用的一个命令:在这里记录一下它的用法: 如下:提取第二列:第二and第三列:注意文本中的每列之间 使用tab制表符 不能使用空格进行分隔,否则无法正确提取 -f : ...

  9. Flutter编程之BoxDecoration用法详解

    Widget的装饰,使其改变其显示形式.Container的decoration用BoxDecoration来设置.BoxDecoration的参数如下: 属性 解释 类型 color 颜色背景 Co ...

最新文章

  1. Kernel tasklet
  2. Ansible — ansible.cfg 配置文件解析
  3. shell模拟php多进程从redis获取数据(多个redis实例)
  4. Spark SQL使用window进行统计
  5. c++ sleep函数_《PHP扩展开发》-hook-(hook原来的sleep)
  6. H3C-WA2210升级
  7. Protobuf C++类中成员函数GetCachedSize()与ByteSize()的区别
  8. 九、面向对象三大特征(三)—— 多态
  9. Flutter开发:在Flutter Plugin中引入aar——本地maven法
  10. ssm教务排课系统MVC学校专业选修课程安排选课信息jsp源代码数据库mysql
  11. axios跨域访问报错500
  12. 用python删除pdf文件的特定页码
  13. EXCEL 如何删除重复值,并保留重复值的第一个选项
  14. 从零开始修炼电脑维修秘籍
  15. Pyecharts亚马逊订单可视化
  16. 让星星⭐月亮告诉你,打印完全格式的日期格式 包含 年月日时分秒毫秒
  17. 英文字体“磅”(Point)和中文字号的关系
  18. okhttp https ip直连设置Host
  19. java中集合的分类以及集合的选择
  20. 信息检索相关任务及数据集介绍

热门文章

  1. Idea开发工具集成Drools插件
  2. 阿里云linux 重启mysql数据库_阿里云linux服务器mysql修改密码教程
  3. 知识点------文字超出(单行,两行)显示省略号(...)
  4. STM32寄存器_GPIO操作
  5. 09-Node.js—express框架
  6. myeclipse怎么调试java,如何用MyEclipse调试JAVA程序
  7. 静态类型语言和动态类型语言
  8. 数据库查询速度提高方法
  9. java小鸡大冒险_小鸡大冒险
  10. 收集整理Matlab中的linprog函数使用说明