一、HTTP协议基本知识
- HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。
- HTTP是一种应用层协议,是基于TCP/IP通信协议来传递数据的。
- 协议:为了使数据在网络上从源头达到目的,网络通信的参与方式必须遵循的相同规则。
二、HTTP协议的工作过程
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。
基础术语:
- 客户端: 主动发起网络请求的一端
- 服务器: 被动接收网络请求的一端
- 请求: 客户端给服务器发送的数据
- 响应: 服务器给客户端返回的数据
HTTP协议的重要特点:一发一收,一问一答
在实际的网络编程,除了一发一收之外,还有其他的模式, 例如:
- 多发一收:例如上传大文件
- 一发多收:例如看直播时,搜索一个词条可以得到多个视频源
- 多发多收:例如串流(steam link、moonlight 等等)
HTTP协议的请求方式
GET方法
其中GET是最常用的HTTP方法,常用于获取服务器上的某个资源。以下几种方式都会触发 GET 方法的请求;
- 在浏览器中直接输入 URL 回车或点击浏览器收藏夹中的链接,此时浏览器就会发送出一个 GET 请求。
- HTML 中的 link、img、script 等标签的属性中放的 URL,浏览器也会构造出 HTTP GET 请求
- 使用 Javascript 重点 ajax,也能构造出 HTTP GET 请求
- 各种编程语言(只要能够访问网络),就都能够构造出 HTTP GER 请求
GET请求的特点
- 首行里面的第一个部分就是 GET
- URL 里面的 query string 可以为空,也可以不为空
- GET 请求的 header 有若干个键值对结构
- GET 请求的 body 一般是空的
POST方法 POST 方法也是一种常见的方法,多用于提交用户输入的数据给服务器(如登录页面)。以下几种方法都会触发 POST 方法的请求
- 通过 HTML 中的 form 标签可以构造 POST 请求
- 使用 JavaScript 的 ajax 可以构造 POST 请求
POST 请求的特点
- 首行第一个部分就是 POST
- URL 里面的 query string 一般是空的
- POST 请求的 header 里面有若干个键值对
- POST 请求的 body 一般不为空(body 的具体数据格式,由 header 中的 Content-Type 来描述;body 的具体数据长度,由 header 中的 Content-Length 来描述
三、HTTP响应
一、状态码
状态码表示访问一个页面的结果(如访问成功、失败,还是其它一些情况等等),它是一个3位的整数,从 1xx、2xx、3xx、4xx、5xx,分为五个大类,每个大类的含义都不同。以下介绍一些常见的状态码及它的状态码解释。
- 200 OK :表示访问成功
- 404 Not Found: 表示没有找到资源,当你发送请求的 URL 在服务器中找不到该资源,就会出现 404
- 403 Forbidden: 表示访问被拒绝,有的页面通常需要用户有一定的权限才能访问,如未登录。
- 405 Method Not Allowed:表示访问的服务器不能支持请求中的方法或者不能使用该请求中的方法。
- 500 Internal Server Error: 表示服务器出现内部错误。
二、响应“报头”(header)
text/html:表示数据格式是 HTML
text/css:表示数据格式是 CSS
application/javascript:表示数据格式是 JavaScript
application/json:表示数据格式是 JSON
四、HTTP和HTTPS
HTTP和HTTPS介绍 :
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP和HTTPS的主要区别 :
-
https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
-
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
-
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
五、学习总结
- 学习了基本的HTTP的一些定义和理解,在还没有开始学习计算机网络的时候感觉还是没那么好理解
- 了解了HTTP是如何工作的以及一些工作的方法,明白了一些网页响应的状态码,以前不知道这些状态码是什么意思,现在明白了。
- 学到了HTTP和HTTPS的区别,以前认为这两者没有区别,现在能够明白HTTPS是更安全的一种数据传输,比HTTP协议更加安全。