你不可不知的HTTP和HTTPS

本文详细介绍了HTTP协议,包括其作为超文本传输协议的角色、工作原理、特点、消息结构以及常见请求类型。还讨论了HTTP状态码、TCP/IP协议、OSI七层模型、DNS、URI和URL的关系。此外,解释了HTTP1.1的持久连接特性以及用户在浏览器中输入URL时发生的步骤。最后提到了HTTP与HTTPS的区别,为下篇内容做铺垫。
摘要由CSDN通过智能技术生成

一、http简介

http是一个协议,什么协议嗯,超越文本的网络传输协议,所以他叫超文本传输协议(Hyper Text Transfer Protocol),是从万维网传输超文本到本地浏览器的传送协议,是基于TCP/IP通信协议来传递数据的。

二、http工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

三、http特点

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

四、http消息结构

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

请求报文四部分:请求行(request line)、请求头部(header)、空行和请求数据。

响应报文四部分:状态行、消息报头、空行和响应正文。

HTTP 协议的 8 种请求类型介绍

HTTP 协议中共定义了八种方法或者叫“动作”来表明对 Request-URI 指定的资源的不同操作方式,具体介绍如下:

  •  OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
  •  HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  •  GET:向特定的资源发出请求。
  •  POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
  •  PUT:向指定资源位置上传其最新内容。
  •  DELETE:请求服务器删除 Request-URI 所标识的资源。
  •  TRACE:回显服务器收到的请求,主要用于测试或诊断。
  •  CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

虽然 HTTP 的请求方式有 8 种,但是我们在实际应用中常用的也就是 get 和 post,其他请求方式也都可以通过这两种方式间接的来实现。

五、http状态码

当你看网页的时候,你的浏览器就会向网页所在的服务器发送请求,当浏览器接收并响应网页前,网页所在的服务器会返回一个包含http状态码的信息头来响应浏览器的请求。

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。

下面是常见的 HTTP 状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

程序员最想看到的:200-OK。

程序员不想看到的:500-Internal-Server-Error。

用户不想看到的:401-Unauthorized、403-Forbidden、408-Request-Time-out。

六、一些必须知道的网络协议

1)tcp/ip协议

TCP/IP 是供已连接因特网的计算机进行通信的通信协议。

TCP/IP 指传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol)。

TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

浏览器与服务器使用 TCP/IP 协议来链接因特网。浏览器使用 TCP/IP 协议进入服务器,服务器使用 TCP/IP 协议来发送 HTML 到浏览器。

TCP/IP 意味着 TCP 和 IP 在一起协同工作。

TCP 负责应用软件(比如您的浏览器)和网络软件之间的通信。

IP 负责计算机之间的通信。

TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。

IP 负责将包发送至接受者。

IPv6 是 "Internet Protocol Version 6" 的缩写,也被称作下一代互联网协议,它是由 IETF 小组(Internet 工程任务组Internet Engineering Task Force)设计的用来替代现行的 IPv4(现行的)协议的一种新的 IP 协议。

我们知道,Internet 的主机都有一个唯一的 IP 地址,IP 地址用一个 32 位二进制的数表示一个主机号码,但 32 位地址资源有限,已经不能满足用户的需求了,因此 Internet 研究组织发布新的主机标识方法,即 IPv6。

域名12 个阿拉伯数字很难记忆。使用一个名称更容易。

用于 TCP/IP 地址的名字被称为域名。baidu.com 就是一个域名。

当你键入一个像 http://www.baidu.com 这样的域名,域名会被一种 DNS 程序翻译为数字。

在全世界,数量庞大的 DNS 服务器被连入因特网。DNS 服务器负责将域名翻译为 TCP/IP 地址,同时负责使用新的域名信息更新彼此的系统。

当一个新的域名连同其 TCP/IP 地址一起注册后,全世界的 DNS 服务器都会对此信息进行更新。

2)osi七层模型

网际互联及OSI七层模型:

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。(记忆:物联网输会示用)

物理层:为数据传输提供物理媒体和可靠的传输环境,网卡网线啥的。

数据链路层:就是如何在不可靠的物理通道上进行可靠的数据传输,是负责建立和管理节点的链路,有网桥,网卡啥的。

网络层:将网络地址翻译成物理地址,决定如何发送。就是建立网络连接为上层提供服务。数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网的通信。ip协议就在这一层,设备有路由。

传输层:建立,维护和拆除传输的功能,向用户透明的传输报文。保障有效正确的传输。tcp传输控制协议和udp用户数据报协议在这一层。

会话层:负责在网络中的两节点之间建立、维持和终止通信。组织和协调两个会话进程之间的通信,并对数据交换进行管理。

表示层:处理用户信息的表示问题,如编码、 数据格式转换和加密解密,压缩解压缩等。

应用层:osi参考模型的最高层,直接向用户应用程序提供网络服务。

osi大白文总结:

       应用层:产生网络流量的程序

       表示层:传输之前是否进行加密或者压缩处理

       会话层:查看会话,查木马  netstat-n

       传输层:可靠传输、流量控制、不可靠传输

       网络层:负责选择最佳路径、规划ip地址

       数据链路层:帧的开始和结束、透明传输、差错校验

       物理层:接口标准、电器标准、如何更快传输数据

3)DNS

DNS 的全称是域名系统(Domain Name System,缩写:DNS),它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

4)uri和url

URI的全称是(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。

URL的全称是(Uniform Resource Locator),中文名称是统一资源定位符,也就是我们俗称的网址,它实际上是 URI 的一个子集。

URN是统一资源名称。

七、HTTP1.1

HTTP协议的初始版本中, 每进行一次 HTTP通信就要断开一次TCP连接,因为都是些容量很小的文本传输, 所以即使这样也没有多大问题。 可随着HTTP的普及, 文档中包含大量图片的情况多了起来。为解决上述TCP连接的问题, HTTP/1.1和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections, 也称为 HTTPkeep-alive 或HTTP connection reuse)的方法。 持久连接的特点是, 只要任意一端没有明确提出断开连接, 则保持TCP连接状态。持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销, 减轻了服务器端的负载。 另外, 减少开销的那部分时间, 使HTTP请求和响应能够更早地结束, 这样 Web 页面的显示速度也就相应提高了。

八、当用户在浏览器中输入URL时,发生了什么

1、输入URL:http://www.baidu.com
2、DNS 域名解析,获取对应的IP地址以及端口号
3、建立TCP连接(Socket):三次握手,确保这个一定是一个有效的请求和响应,这个三次握手在业界相信大多数人都不陌生,虽然它是提高了传输的有效性,但是这个导致的直接问题就是整个传输过程是很耗时的,也就是说每次http请求都会经历三次握手这个过程,消耗的时间也是不言而喻,并且传统的http协议规定一次请求只能请求一个文件,所以一些顶级网站千方百计的采取一些减少http请求的策略,大多数就是采取一次http请求能够请求多个文件这样的实现,欣喜的是,http2.0已经支持能够一次http能够请求多个文件,这个还是值得期待全部推行开来的,只不过肯定需要过上一段时间,慢慢去等待推行吧。
4、将用户输入URL地址封装成HTTP Request请求报文发送到服务器。
5、后台服务器接收到用户HTTP Request请求报文之后,经过相应的处理,然后将相应结果封装到HTTP Response响应报文中发送给客户端。
6、用户浏览器接收到响应数据后开始渲染html、css,解析和执行JavaScript等代码。

下一篇将更新https详细内容,水平有限,欢迎评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值