[计网学习笔记(2)] Web应用

对于不同的网页对象(包括图片、视频、脚本、引用链接等),我们要找到它们,就需要寻址,这个寻址是由URL:统一资源定位器决定的。我们在查找网页时,输入网页地址,前面一部分是主机名,后面一部分是路径名。路径名的种类是丰富的,除了我们能想到的.jpg等实际的对象后缀,如果我们注意观察网页地址的话,会发现在用户进行操作的时候,网页后会跟着各种各样的路径名。

http,也就是超文本传输协议,它是Web应用所遵循的协议。

我们常用的一种结构是C/S结构,也就是用户与服务器之间的请求与响应。

对象的传输主要是通过TCP协议进行的,一般端口为80,首先浏览器发送创建连接请求,并创建socket(两个程序通过双向的通信连接实现数据交换时,一端成为socket),另一端服务器接收到TCP连接,告诉浏览器它收到了,这是浏览器就将http请求发出,包括URL,http服务器接收到请求后,解析响应消息,把请求所需对象传送给浏览器,浏览器开始解析收到的html,如果有必要的话,可能再次发送请求。最后,TCP连接关闭。

这种传输是无状态的传输,也就是说,服务器不会维护过去的任何请求。

TCP连接又可分为持久性连接和非持久性连接,前者允许多个对象传输(http1.1),后者只允许一个对象传输(http1.0)。

这两种连接的差异主要体现在服务器与浏览器交换数据中,如果一次只能传输一个对象,那么两者之间就要频繁的往来,效率将大大降低。(RTT增加,且每次连接都需要开销资源)

我们将从客户端发送小数据包到服务器并返回的时间称作一个RTT(round trip time),在以上连接过程中,总的时间为2个RTT和文件传输时间,其中,第一个RTT是建立TCP的时间,第二个RTT是发送HTTP响应消息的时间。

持久性连接又分为无流水和流水两种,前者在收到前一个响应后发送请求,后者在遇到一个引用对象后就发送请求。

http消息包括了响应消息和请求消息。其中请求消息是我们可以直接看懂的,一般来说,它有如下格式:

header filed 中,可以包括主机地址、代理商、连接状态、支持语言等。

其中,请求方法主要有这些:

1.POST : 网页中填写表格(如注册登录信息),在消息体上传输入  2.URL方法:GET,输入信息通过URL上传

http目前有两个版本,一个是1.0,它支持GET,POST,HEAD,另一个是1.1,除了GET,POST和HEAD,它还支持PUT(上传文件到指定路径)以及DELETE(删除URL指定文件)。(HEAD多用于测试,它不会将请求对象放到响应消息中)

另外一种是响应消息。

它的格式包括了状态栏和头部栏,以及数据。

状态栏包括了当前使用的版本:http1.0还是http1.1,以及当前状态,状态包括以下几种:

200 OK

301 Move Permanently

400 Bad Request

404 Not Found

505 HTTP Version not supported

……

第一种是成功状态,其它几种是各种错误。

头部栏包括了连接状态、生成响应消息时间、服务器、最后修改时间、内容长度、内容类型等等。

我们知道HTTP是无状态的,但是很多时候我们希望保存状态,比如我们记住密码后,希望下次可以不用重复输入密码,这就用到了Cookie技术。

Cookie技术是通过session跟踪,把数据存储在用户本地终端,这个数据是经过加密的。

它的组件包括了响应消息,请求消息的头部栏,以及cookie文件。

用户第一次访问网页时,在请求消息中,检测到不存在cookie,便新建一个cookie(set-cookie:唯一编号),entrybody存储在服务器数据库,再次连接时,请求消息自动包含了cookie id,这时就能读取到用户本地终端的数据。

但是,通过对技术的了解,我们很容易看出cookie是有一定安全隐患的。

时间: 2025-01-14 09:10:33

[计网学习笔记(2)] Web应用的相关文章

《Flask Web Development》学习笔记---chapter4 Web Forms

1.  我们用 wrapper了WTForms的Flask-WTF扩展来处理表单生成和验证. 2.  Cross-Site Request Forgery (CSRF) 保护 配置config,'SECRET_KEY' 3. Form class definition from flask.ext.wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required

Swift 2.0学习笔记——使用Web网站编写Swift代码

Swift 2.0学习笔记--使用Web网站编写Swift代码 Swift程序不能在Windows其他平台编译和运行,有人提供了一个网站swiftstub.com,左栏是代码编辑窗口,右栏是运行结果窗口.可以在任何平台下编译和运行Swift程序.

React官网学习笔记

欢迎指导与讨论 : ) 前言 本文主要是笔者在React英文官网学习时整理的笔记.由于笔者水平有限,如有错误恳请指出 O(∩_∩)O 一 .Tutoial 篇 1 . React的组件类名的首字母必须是大写  var Comment = React.creatClass({..})  class Comment extends Component(){...} 2 . 我们需要往一个对象里传入一些方法,并把这个对象以参数的形式传到React.creatClass( )里.其中最重要的方法是ren

VS2013中Python学习笔记[Django Web的第一个网页]

前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环境的搭建过程,以及Hello World的实现. 第二篇 VS2013中Python学习笔记[基础入门] 我简单学习使用了Python的几个基础的知识点. 第一个Web页面 第一步:首先打开VS2013开发工具 ,新建项目,选择Django Project模版. 修改项目名称,可以查看到项目的文件结

如鹏网学习笔记(七)HTML基础

HTML笔记 一.HTML简介 1,HTML (Hyper Text Mark-up Language) 超文本标记语言,是一种编程语言,也可以说是一种标准.规范. 2,HTML提供了一系列标记(标签),每个标记都有不同的含义和作用,浏览器根据标记的含义把内容显示到浏览器页面上 3,超文本:页面不仅可以包含普通文本,还可以包含图片.链接.音乐.程序等非文本内容 4,学习HTML主要是学习常用标签的用法和语法规范 二.基本标签 <!DOCTYPE> 定义文档类型,表明该文档的类型和版本(了解)

如鹏网学习笔记(十四)ASP.NET

Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1:8080 回车空行 二.浏览器是什么 浏览器就是一个Socket网络客户端,帮助用户请求网站服务器上的内容并且将返回的内容渲染为图形化内容 浏览器的过程: 用户在浏览器输入网址,浏览器向DNS服务器发出Socket请求, 服务器把请求的内容返回给浏览器, 浏览器将内容进行解析并渲染绘制成页面展现,

LR学习笔记7-HP WEB TOURS分析

今天学习LR自带的网站,通过对其分析和掌握,希望对性能测试有更深的 了解. 要学习的三部分: --1--启动web tours --2--分析首页结构 --3--预定机票流程 老规矩,下面我们展开进行系统学习. 1.启动web tours >>启动路径:开始->所有程序->HP LoadRunner->Samples->Web >>启动web tours的服务 >>打开web tours网站 注意:如果web服务器已经启动,在重复启动该服务器会报

如鹏网学习笔记(九)JavaScript

JavaScript笔记 一.JavaScript简介 1,JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等. 2,JavaScript代码主要执行在浏览器上,为HTML页面提供动态效果 3,而且JavaScript是一种脚本语言,它的代码是解释执行的,也就是解释一句代码后就会执行这句代码 4,JavaScript可简称为 js 二.js变量声明 1,js是弱类型语言,弱类型并不是说数据本身没有类型,而是变量没有类型. 如一个变量a,a的值既可以是字符串类型

【安全牛学习笔记】Web扫描器(2)

skipfish 功能: 递归爬网 基于字典探测 优点:速度快 多路单线程,全异步网络I/O,消除内存管理和调度开销 启发式自动内容识别 误报较低命令: skipfish-otesthttp://1.1.1.1 -o输出目录[email protected] skipfish-otest-Scomplet.wl-Wa.wl调用字典文件 -I: 检查包含指定字符串的url -X: 不检查包含指定字符串的url -K: 不对指定参数进行测试-D: 跨站爬另外一个域 -l: 每秒最大请求数-m: 每I