网络编程

  • 大纲
  • 网络编程基础
    • TCP/IP 协议
    • Web 基础
      • HTTP协议
      • Web 服务器
    • WSGI 接口
      • GGI
    • WSGI
    • Web 框架

大纲

网络编程基础

TCP/IP 协议

TCP/IP 协议 是最重要的两种通信协议。TCP/IP 协议包含四个概念层。

  • 应用层:为客户提供需要的各种服务,该层主要协议有 FTP(文件传输协议)、Telnet(远程登录协议)、DNS(域名系统协议)、SMTP(电子邮件传输的协议)等。

  • 传输层:为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性,最常见的两个协议是 传输控制协议(TCP)和用户数据报协议(UDP)

  • 网络层:主要解决主机到主机的通信问题。该层有3个主要的协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)

  • 链路层:负责监视数据在主机和网络之间的交换。TCP/IP本身并未定义该层的协议,而由参与互连的各网使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。

传输层的TCP协议

Web 基础

与Web 开发密切相关的是应用层,在应用层最主要的协议就是HTTP协议

HTTP协议

在用户输入网址访问明日学院网站的例子中,用户浏览器被称为客户端,明日学院网站被称为服务器。这个过程实质上就是客户端向服务器发起请求,服务器接收请求后,将处理后的信息(也称为响应)传给客户端。这个过程是通过HTTP协议实现的。

Web 服务器

  • 当在浏览器中输入URL后,浏览器会先请求DNS服务器,获得请求站点的IP地址(即根据URL地址www. baidu. com获取其对应的IP地址,如10l. 200. 85)。
  • 然后发送一个HTTPRequest(请求)给拥有该IP的主机(百度的百度云服务器),接着就会接收到服务器返回的HTTP Responste(响应),浏览器经过渲染后,以一种较好的效果呈现给用户。

Web 服务器的工作原理可以概括为以下4个步骤:

  1. 建立连接:客户端通过TCP/IP协议建立到服务器的TCP连接。

  2. 请求过程:客户端向服务器发送HTTP协议的请求包,请求服务器里的资源文档。

  3. 应答过程:服务器向客户端发送HTTP协议的应答包,如果请求的资源包含动态语言内容,服务器会调用解释引擎处理动态内容,并将处理后得到的数据返回给客户端。由客户端解释HTML文档,最终在用户屏幕上渲染显示图形的结果。

  4. 关闭连接:客户端与服务器断开。

常见的请求方法:
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
注意:
1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

服务器返回给客户端的状态码:
200 OK 当您的操作将在响应正文中返回数据时,出现此结果。

204 No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果。

304 Not Modified(重定向) 当测试实体自上次检索以来是否被修改时,出现此结果。

403 Forbidden 客户端错误

401 Unauthorized 客户端错误

413 Payload Too Large(客户端错误) 当请求长度过长时,出现此结果。

400 BadRequest(客户端错误) 当参数无效时,出现此结果。

404 Not Found(客户端错误) 当资源不存在时,出现此结果。

405 Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。

412 Precondition Failed 客户端错误

501 Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果。

503 Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果。

WSGI 接口

GGI

当今Web开发已经很少使用纯静态页面,更多的是使用动态页面,以实现交互性。例如,网站具有登录和注册功能,当用户登录网站时,需要输入用户名和密码,然后提交数据。

Web服务器不能处理表单中传递过来的与用户相关的数据,这不是Web服务器的职责。

CGI应运而生。CGI(Common Gateway Interface,通用网关接口)是一段程序,运行在服务器上。Web服务器将请求发送给CGI应用程序,再将CGI应用程序动态生成的HIML页面发送回客户端。CGI在Web服务器和应用之间充当了交互作用,这样才能够处理用户数据,生成并返回最终的动态HIML.页面。

CGI的工作方式如图3. 25所示。

WSGI

WSGI是 Web Server Gateway Interface 的缩写。

它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受。

它是一种协议,一种规范,其是在 PEP 3333 提出的。这个协议旨在解决众多 web 框架和web server软件的兼容问题。有了WSGI,你不用再因为你使用的web 框架而去选择特定的 web server软件。

WSGI接口

WSGI 接口有服务端和应用端两部分,服务端也可以叫网关端,应用端也叫框架端。服务端调用一个由应用端提供的可调用对象。如何提供这个对象,由服务端决定。例如某些服务器或者网关需要应用的部署者写一段脚本,以创建服务器或者网关的实例,并且为这个实例提供一个应用实例。另一些服务器或者网关则可能使用配置文件或其他方法以指定应用实例应该从哪里导入或获取。

WSGI 工作流程图:

Web 框架

上边我们了解到 WSGI 的一端是框架。

那什么是框架呢?

Web框架是用来简化Web开发的软件框架。事实上,框架并不是什么新技术,它只是一些能够实现常用功能的Python文件。可以把框架看作是一系列工具的集合,其存在是为了避免重新发明“轮子”.以在创建新项目时减少开发成本。

一个典型的框架,通常会提供如下常用功能。

  • 管理路由
  • 支持数据库
  • 支持MVC
  • 支持ORM
  • 支持模板引擎
  • 管理会话和Cookies

ORM MVC、模板引擎介绍

理清Python网络编程相关推荐

  1. python网络编程--socket简单实现

    python网络编程                                                                                           ...

  2. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

    python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03 参考文章: (1)python网络编程-异常处理-异常捕获-抛出异常-断言-自 ...

  3. python编程入门指南怎么样-学习python网络编程怎么入门

    第一部分底层网络学习 Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能. (1)基本客户端操作 在<python 网络编程基础>一 ...

  4. python编程实例下载-python网络编程之文件下载实例分析

    本文实例讲述了python网络编程之文件下载实现方法.分享给大家供大家参考.具体如下: 真是越看越喜欢python啊,想要了解它提供的http和ftp下载功能,原来是如此的简单. 1.相应模块 ftp ...

  5. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  6. python网络编程案例_Python 网络编程_python网络编程基础_python高级编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  7. python 网络编程 问题记录

    191223 python 网络编程 套接字的初使用 在本机配置服务端和客户端后,运行没问题:将服务端代码弄到另一台电脑上后启动,用原来的电脑去连接它,就连不上了,不知啥原因,是ip自动获取和指定ip ...

  8. python网络编程(苦肝一夜,近万字)

    文章目录 一.TCP/IP简介 二.网络设计模块 1.Socket简介 2.python中的socket模块,使用该模块建立服务器需要6个步骤. 1.创建socket对象. 2.将socket绑定(指 ...

  9. python网络编程证书_《Python网络编程基础》笔记

    python网络编程基础 ================== Author: lujun9972 Date: 2013-03-08 22:29:20 CST Table of Contents == ...

最新文章

  1. PowerDesigner使用教程【转】
  2. win7安装gtp磁盘_GPT转MBR分区格式安装win7/win10系统教程
  3. AIProCon在线大会笔记之华为涂丹丹:华为云EI,行业智能化升级新引擎
  4. PHPstudy搭建本地环境的网页加载速度慢的解决方案
  5. Diffie-Hellman:安全网络通信背后的天才算法
  6. python中__init__文件的运用_python中__init__.py文件的作用
  7. c语言基本数据类型1,1、C语言基本数据类型
  8. 睡眠 应该用 a加权 c加权_?焦虑自测 ,看看你的焦虑程度到底有多深?是否影响睡眠?...
  9. NS3 之 入坑
  10. 微信公众号 | 封面图及缩略图设置及修改技巧
  11. 蓝牙耳机连接 win10音量异常
  12. Debian Linux及kali程序安装卸载方式
  13. RecycleView的 Scrapped or attached views may not be recycled错误原因研究
  14. 回顾使用云桌面的那些经验
  15. 如何写一个仿真文件——testbench
  16. 【科普】第二章 SIS 系统简介
  17. PS 2019 Mac版 自学入门系列(十一)—— 创建光照效果
  18. 渗透测试——网络服务渗透攻击
  19. 持久层的EAO颗粒封装
  20. 【spark运行报错】

热门文章

  1. 计算机中的 marshal 是什么意思?(列集:将数据从某种格式存为流格式的操作)(序列化)(marshalling、unmarshalling散集)
  2. Yunyang tensorflow-yolov3 voc_train.txt以及voc_test.txt引用的路径位置
  3. 深度学习训练模型中的 train from scrath 是什么意思?(247)
  4. Python 计算机视觉(十二)—— OpenCV 进行图像分割
  5. 线段检测网格检测(LCNN)的wireframe数据集标注、转换问题
  6. Java虚拟机JVM常用的几种回收算法和垃圾回收器
  7. JDK1.8日期的使用(转)
  8. 【Object类、日期、StringBuilder】
  9. c# mongodb or查询_C# 查询MongoDB中的数据
  10. mysql opaq数据库_MySql数据库