计算机网络学习记录【Web应用】

什么是web?

它的全称是World Wide Web,缩写WWW,中文称为万维网。web最基本的构成是网页,而他最大的特单就是网页之间互相间接。

那什么是网页呢?

网页是由多个对象构成的,对象就是图片、视频、动态脚本、html文件等。每个网页都包含了一个最基本的html文件,这个文件包含了对其他对象引用的连接。

对象的寻址问题

既然网页之间互相连接,每个基本的html文件也包含了对其他对象引用的连接,那对象之间是怎么互相准确无误的找到对方的呢?他们是通过URL(统一资源定位器)进行寻址的。

URL的语法格式

protocol:// hostname[:port] /part / [:parameters] [?query] #fragment

其中:

protocol:协议,访问服务器是使用的哪种协议(一般都是使用http协议)

hostname:主机地址,可以是域名也可是IP地址

port:端口,http协议默认的端口是80端口,如果不写就是默认80端口

path:路径,网络资源在服务器中的指定路径

parameter:参数,如果要向服务器传入参数,在这部分输入

query:查血字符串,如果需要从服务器那里查询内容,在这里编辑

fragment:片段,网页中可能会分为不停的片段,如果想访问网页后直接打到指定位置,可以在这个部分设置。

万维网(web)遵循什么协议?

超文本传输协议(HyperText Transfer Protocol)简称http协议

HTTP协议简述

他是遵循C/S(客户机/服务区)结构的。

他是无状态的协议,也就是不记录客户端发过去的之前的请求,例如一分钟前请求一个页面,现在再次请求他会重新给你发,不管之前的状态

在这说一下无状态的好处:有状态的维护会非常复杂,因为要记录之前的状态,还有更新问题,例如之前记录了一个网页,但是后来这个网页改变了,更新就会很不及时(虽然这个可以克服)还有就是客户机或者服务器突然失效,会产生状态不一致,解决这个问题会付出很大的代价。

HTTP连接

http有两种连接方式,非持久性连接换个持久性连接:

非持久性连接的意思是每个TCP连接最多允许传输一个对象,http1.0版本用的就是非持久性连接

持久性连接每个TCP连接可以传输多个对象,http1.1版本用的是持久性连接

例如我们现在要从服务器获取一个网页,这个网页包含了十图片(JPEG)

1.非持久性连接

1)HTTP客户初始化一个与服务器主机www.somehost.com中的HTTP服务器的TCP连接。HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。

2)HTTP客户经由与TCP连接相关联的本地套接字发出-个HTTP请求消息。这个消息中包含路径名/somepath/index.html。

3)HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。

4)HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)。

5)HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。

6)给每一个引用到的JPEG对象重复步骡1~4。

这个过程我们之前上网的时候应该都遇到过,比如打开一个网页,然后里面的图慢慢一个一个的出来,这就是在遇到图片这个对象的时候在重复1-4步骤,时间相应就很长。

2.持久性连接

在持久连接情况下,服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个Web页面也可以通过单个持久TCP连接发送。通常,HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下,Web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。HTTP/1.1的默认模式使用带流水线的持久连接。

HTTP消息请求

http有两类消息:请求消息和相应消息,分别对应了向服务器请求和服务器做出回应

1.请求消息

是ASCII,人工可读。请求消息包括三个部分:1.请求方法URI协议/版本   2.请求头    3.请求正文

1)请求方法URI协议/版本

请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1

以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

方法的类型:

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服务器支持扩展自定义的方法。

(2)请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。例如:

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

(3)请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234

在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

2.响应消息

http响应消息也是由三个部分组成的:1.响应行    2.响应头     3.响应体

1.响应行

响应行一般由协议版本、状态码及其描述组成 例如: HTTP/1.1 200 OK

常见的响应行代码:

1)1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码

2) 2xx:成功。代表:200

3) 3xx:重定向。代表:302(重定向),304(访问缓存) 

4)4xx:客户端错误。
      * 代表:
      * 404(请求路径没有对应的资源) 
      * 405:请求方式没有对应的doXxx方法

5) 5xx:服务器端错误。代表:500(服务器内部出现异常)

2.响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

格式:

          头名称:值

3.响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值