@zhongjianxin
2018-07-24T09:58:06.000000Z
字数 4422
阅读 1133
Trainning
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:
schema://host[:port#]/path/.../[?query-string][#anchor]
scheme 指定低层使用的协议(例如:http, https, ftp)ß
host HTTP服务器的IP地址或者域名
port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Schema: http
host: www.mywebsite.com
path: /sj/test/test.aspx
Query String: name=sviergn&x=true
Anchor: stuff

1.建立TCP连接
2.web浏览器向服务器发送请求命令
3.web浏览器发送请求头信息
4.web浏览器发送请求体
5.web服务器应答
6.web服务器发送应答头信息
7.web服务器向浏览器发送数据
8.web服务器关闭TCP连接
当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 http://www.cnblogs.com 的html. 服务器把Response发送回给浏览器.
浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。
浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
等所有的文件都下载成功后。 网页就被显示出来了。
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.


- request:请求行、请求头部、空行和请求数据四个部分组成
1.请求的方法或动作,比如是GET还是POST请求
2.正在请求的URL
3.请求头,包含一些客户端环境信息,身份验证信息
4.请求体即请求的正文,包含客户提交的字符串信息,表单信息等
- responses:状态行、消息报头、空行和响应正文
1.一个数字或文字组成的状态码
2.响应头,包含服务器的环境信息例如服务器类型,日期时间,内容类型和长度等
3.响应体
HTTP状态码由三位数字构成,其中首位数字定义了状态码的类型
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
◆ 200 (OK): 找到了该资源,并且一切正常。
◆ 304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
◆ 401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
◆ 403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
◆ 404 (NOT FOUND): 在指定的位置不存在所申请的资源。
1、支持客户/服务器模式。
2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
常见的状态码:
HTTP: Status 200 – 服务器成功返回网页
HTTP: Status 404 – 请求的网页不存在
HTTP: Status 503 – 服务不可用
详解:
HTTP: Status 1xx (临时响应)
->表示临时响应并需要请求者继续执行操作的状态代码。
HTTP: Status 100 (继续)
-> 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
HTTP: Status 101 (切换协议)
-> 请求者已要求服务器切换协议,服务器已确认并准备切换。
HTTP Status 2xx (成功)
->表示成功处理了请求的状态代码;
HTTP Status 200 (成功)
-> 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
HTTP Status 201 (已创建)
-> 请求成功并且服务器创建了新的资源。
HTTP Status 202 (已接受)
-> 服务器已接受请求,但尚未处理。
HTTP Status 203 (非授权信息)
-> 服务器已成功处理了请求,但返回的信息可能来自另一来源。
HTTP Status 204 (无内容)
-> 服务器成功处理了请求,但没有返回任何内容,当前文档不变,可以局部跟新。
HTTP Status 205 (重置内容)
-> 服务器成功处理了请求,但没有返回任何内容,当前文档整体刷新。
HTTP Status 206 (部分内容)
-> 服务器成功处理了部分 GET 请求。
HTTP Status 4xx (请求错误)
->这些状态代码表示请求可能出错,妨碍了服务器的处理。
HTTP Status 400 (错误请求)
->服务器不理解请求的语法。
HTTP Status 401 (未授权)
->请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
HTTP Status 403 (禁止)
-> 服务器拒绝请求。
HTTP Status 404 (未找到)
->服务器找不到请求的网页。
HTTP Status 405 (方法禁用)
->禁用请求中指定的方法。
HTTP Status 406 (不接受)
->无法使用请求的内容特性响应请求的网页。
HTTP Status 407 (需要代理授权)
->此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
HTTP Status 408 (请求超时)
->服务器等候请求时发生超时。
HTTP Status 409 (冲突)
->服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
HTTP Status 410 (已删除)
-> 如果请求的资源已永久删除,服务器就会返回此响应。
HTTP Status 411 (需要有效长度)
->服务器不接受不含有效内容长度标头字段的请求。
HTTP Status 412 (未满足前提条件)
->服务器未满足请求者在请求中设置的其中一个前提条件。
HTTP Status 413 (请求实体过大)
->服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
HTTP Status 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
HTTP Status 415 (不支持的媒体类型)
->请求的格式不受请求页面的支持。
HTTP Status 416 (请求范围不符合要求)
->如果页面无法提供请求的范围,则服务器会返回此状态代码。
HTTP Status 417 (未满足期望值)
->服务器未满足”期望”请求标头字段的要求。
HTTP Status 5xx (服务器错误)
->这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
HTTP Status 500 (服务器内部错误)
->服务器遇到错误,无法完成请求。
HTTP Status 501 (尚未实施)
->服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
HTTP Status 502 (错误网关)
->服务器作为网关或代理,从上游服务器收到无效响应。
HTTP Status 503 (服务不可用)
-> 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
HTTP Status 504 (网关超时)
->服务器作为网关或代理,但是没有及时从上游服务器收到请求。
HTTP Status 505 (HTTP 版本不受支持)
-> 服务器不支持请求中所用的 HTTP 协议版本。