网络编程

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


大纲

python 计算 tcp校验和_python 计算 tcp校验和

网络编程基础

TCP/IP 协议

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

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

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

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

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

python 计算 tcp校验和_python_02

传输层的TCP协议

Web 基础

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

HTTP协议

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

Web 服务器

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

python 计算 tcp校验和_网络_03

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

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

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

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

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

常见的请求方法:

python 计算 tcp校验和_python_04


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所示。

python 计算 tcp校验和_python_05

WSGI

WSGI是 Web Server Gateway Interface 的缩写。

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

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

WSGI接口

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

WSGI 工作流程图:

python 计算 tcp校验和_python_06

Web 框架

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

那什么是框架呢?

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

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

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