TCP/IP协议五:HTTP协议详解

TCP/IP协议五:HTTP协议详解

  • 1. 什么是HTTP协议
  • 2. HTTP的工作流程:建立,请求,响应,断开
  • 3. HTTP协议的特点
  • 4. URL详解
    • 4.1 URI和URL的区别
    • 4.2 URL详解-基本格式
  • 5. HTTP请求报文
    • 5.1 请求报头
    • 5.2 例子
  • 6. HTTP响应报文
    • 6.1 响应报头
    • 6.2 例子
  • 7. Get和Post方法的区别
    • 7.1 http的交互方法:GET(查),POST(改),PUT(增),DELETE(删)
    • 7.1 GET和POST的区别
  • 8. 状态码
  • 9. 扩展:什么是代理服务器?
  • 参考:

1. 什么是HTTP协议

  1. HTTP协议,即超文本传输协议(Hypertext transfer protocol)。
  2. HTTP协议,是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
  3. HTTP协议,是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

2. HTTP的工作流程:建立,请求,响应,断开

一次HTTP操作称为一个事务,其工作过程可分为四步:

  1. 首先客户机与服务器需要建立连接
    只要单击某个超级链接,HTTP的工作开始。
  2. 建立连接后,客户机发送一个请求给服务器。
    请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求后,给予相应的响应信息
    其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接
    如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

3. HTTP协议的特点

  1. 简单快速:
    客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  2. 灵活:
    HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  3. HTTP版本区别 0.9、1.0、1.1
    3.1 HTTP 0.9和1.0使用非持续连接:
    限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。
    3.2 HTTP 1.1使用持续连接:
    不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
  4. 无状态:
    HTTP协议是无状态协议。
    无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  5. 支持B/S和C/S模式。

4. URL详解

4.1 URI和URL的区别

  1. URI
    URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
    Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的。URI一般由三部组成:
    (1)、访问资源的命名机制;
    (2)、存放资源的主机名;
    (3)、资源自身的名称,由路径表示,着重强调于资源。
  2. URL
    URL是uniform resource locator,统一资源定位器它是一种具体的URI
    通常我们所说的Url只是URI的一种
    即URL可以用来标识一个资源,而且还指明了如何定位这个资源。
    URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
    (1)、协议(或称为服务方式);
    (2)、存有该资源的主机IP地址(有时也包括端口号);
    (3)、主机资源的具体地址。如目录和文件名等。
    HTTP URL的格式如下所示:
    http://host[":"port][abs_path]

4.2 URL详解-基本格式

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.

5. HTTP请求报文

HTTP 报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。一 般一个HTTP请求报文由请求行、请求报头、空行和请求数据4个部分组成。如下图:
TCP/IP协议五:HTTP协议详解_第1张图片

5.1 请求报头

在请求行之后会有0个或者多个请求报头,请求报头通知服务器关于客户端请求的信息。典型的请求报头如下所示:

  1. • Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
  2. • User-Agent:发送请求的浏览器类型、操作系统等信息。
  3. • Accept:客户端可识别的内容类型列表,用于指定客户端接收哪些类型的信息。
  4. • Accept-Charset请求报头域用于指定客户端接受的字符集 。
  5. • Accept-Encoding:客户端可识别的数据编码。
  6. • Accept-Language:表示浏览器所支持的语言类型。
  7. • Authorization请求报头域主要用于证明客户端有权查看某个资源。
  8. • Connection:允许客户端和服务器指定与请求/响应连接有关的选项。例如,这时为Keep-Alive则表示 保持连接。
  9. • Transfer-Encoding:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。

5.2 例子

例子:

GET /index.htm HTTP/1.1
Host: server-4d4d4d66.example.int
Connection: Keep-Alive
If-None-Match: 4ec19d31875ef16f09b8ab920ad2ee32
User-Agent: Client Agent
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip,deflate
UA-CPU: x86

TCP/IP协议五:HTTP协议详解_第2张图片
TCP/IP协议五:HTTP协议详解_第3张图片

HTTP响应头和请求头信息(大全)对照表
http://tools.jb51.net/table/http_header

6. HTTP响应报文

6.1 响应报头

TCP/IP协议五:HTTP协议详解_第4张图片

6.2 例子

例子:

HTTP/1.1 200 OK
Date: Tue, 05 May 20 06:00:40 GMT
Last-Modified: Sat, 07 Mar 20 17:38:15 GMT
ETag: b8fa9ba13a28f56b712d37fcb42417e3
Connection: Keep-Alive
Server: Microsoft-IIS/7.0
Cache-Control: private
Content-Type: text/html
Content-Length: 3274

TCP/IP协议五:HTTP协议详解_第5张图片

TCP/IP协议五:HTTP协议详解_第6张图片

HTTP响应头和请求头信息(大全)对照表
http://tools.jb51.net/table/http_header

7. Get和Post方法的区别

7.1 http的交互方法:GET(查),POST(改),PUT(增),DELETE(删)

Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET(查),POST(改),PUT(增),DELETE(删)
一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

7.1 GET和POST的区别

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456。
    POST方法是把提交的数据放在HTTP包的Body中.
  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制)。
    POST方法提交的数据没有限制.
  3. GET方式需要使用Request.QueryString来取得变量的值。
    POST方式通过Request.Form来获取变量的值。
  4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

8. 状态码

Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

  1. 1XX 提示信息 - 表示请求已被成功接收,继续处理
  2. 2XX 成功 - 表示请求已被成功接收,理解,接受
  3. 3XX 重定向 - 要完成请求必须进行更进一步的处理
  4. 4XX 客户端错误 - 请求有语法错误或请求无法实现
  5. 5XX 服务器端错误 - 服务器未能实现合法的请求

看看一些常见的状态码
200 OK
最常见的就是成功响应状态码200了, 这表明该请求被成功地完成,所请求的资源发送回客户端

9. 扩展:什么是代理服务器?

TCP/IP协议五:HTTP协议详解_第7张图片
代理服务器就是网络信息的中转站,有什么功能呢?

  1. 提高访问速度, 大多数的代理服务器都有缓存功能。
  2. 突破限制, 也就是了
  3. 隐藏身份。

参考:

https://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html
https://blog.csdn.net/lqh_1992/article/details/86496172
https://www.cnblogs.com/ldq2016/p/9055933.html

你可能感兴趣的:(协议分析汇总,http协议详解,网络,http)