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个部分组成。如下图:

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


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

6. HTTP响应报文

6.1 响应报头

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

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. 扩展:什么是代理服务器?


代理服务器就是网络信息的中转站,有什么功能呢?

  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

TCP/IP协议五:HTTP协议详解相关推荐

  1. TCP/IP 协议栈及 OSI 参考模型详解

    TCP/IP 协议栈及 OSI 参考模型详解 转载地址:http://www.codeceo.com/article/tcp-ip-osi-model.html OSI参考模型 OSI RM:开放系统 ...

  2. TCP/IP 协议栈及 OSI 参考模型详解--云平台技术栈04

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的tcp/ip和网络! 来源:王东裕 http://wangdy.blog.51cto.com/3845563/1588379 OS ...

  3. 后端开发【一大波有用知识】tcp/ip定时器与滑动窗口详解

    为什么udp有包长,而tcp没有包长. 首先,send()发送一次发送1k,发送一次缓冲区满了就会返回-1.2k发送出去后缓冲区被清空,send()才会被再次调用.最大传输片会打印四个包发送.而最大传 ...

  4. TCP/IP编程之accept函数详解

    accept函数由TCP服务器调用,用于从已完成连接队列返回下一个已完成连接.如果已完成连接队列为空,那么进程被投入睡眠(假定套接字默为默认的阻塞方式) 函数原型: ACCEPT(2) Linux P ...

  5. TCP/IP编程之select函数详解

    前述: linux下的I/O复用模型目前很多都已经不用select函数了,而是用epoll,但是为什么还需要了解select编程呢,其实是从两个方面考虑的:一是为了通过select去理解epoll,而 ...

  6. OSI 七层模型和TCP/IP模型及对应协议(详解)

    OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...

  7. IP协议相关技术终极详解

    IP协议相关技术终极详解 DNS域名解析协议 概述 域名的层级关系 域名的解析流程 ARP地址解析协议 概述 为什么需要ARP协议? ARP协议是属于哪一层呢? ARP协议和DNS协议的区别 ARP协 ...

  8. 《HTTP/2基础教程》协议、特性、详解

    文章目录 <HTTP/2基础教程>协议.特性.详解 前言 第一章 HTTP进化史 第二章 HTTP/2 快速入门 第三章 Web优化"黑魔法"的动机与方式 HTTP/1 ...

  9. ARP协议及ARP欺骗详解

    ARP协议及ARP欺骗详解 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP ...

  10. java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计

    [JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...

最新文章

  1. JavaScript初学者编程题(23)
  2. 如何查看linux 操作系统信息
  3. x86汇编指令具体解释
  4. JavaScript面向对象编程深入分析
  5. Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案
  6. 移动架构-数据库分库和全版本升级
  7. 【操作系统】系统引导
  8. 深度学习《CNN架构续篇 - 正则化》
  9. python 3中 的subprocess
  10. 发票编号识别、验证码识别 ,图像分割
  11. 十六、 方差分析--使用Python进行双因素方差分析
  12. radius源码下载
  13. ectouch2.0 php5.5_Ectouch2.0 分析解读代码审计流程
  14. invalid method declaration
  15. 西湖论剑2020-BrokenSystems
  16. coq学习3-形式化证明的直观理解
  17. pytorch中torch.mul、torch.mm/torch.bmm、torch.matmul的区别
  18. auc评测指标如何计算?其他的评测指标有吗?假设阙值为0.5,如何计算这个点?
  19. 集合框架(一)——概述
  20. arduino 红外遥控器控制LED灯

热门文章

  1. 社区论坛小程序源码,功能齐全,简洁漂亮,前端+后端
  2. tlwn726n无线网卡Linux驱动,tl-wn726n无线网卡驱动下载
  3. Windows Server 2013 安装zune 4.8中文版
  4. html5在线拍照,js html5 调用摄像头拍照
  5. Linux环境安装ghostscript-9.25
  6. 航班网站php项目,php的实时航班api调用代码实例
  7. python 图表控件_10款好用的.NET图表控件推荐
  8. Pro Tools系统优化- Windows篇
  9. html空间登录页面制作,免费HTML网页空间(每月200 GB 流量托管静态网页超简单)...
  10. Python实现社交网络可视化