文章目录
一、相关概念
1.客户端VS服务器
网络通信有两台主机,一方是主动发起请求,被称为客户端,另一方是被动接受请求,被称为服务器,正是因为服务器是被动接受请求,它不知道客户端什么时候会发送请求,所以服务器是7*24小时运行,随时等待连接。
2.请求(request)VS响应(response)
典型的客户端和服务器之间的交互方式主要是一问一答,也有一问多答、多问一答,多问多答等。
注:请求和响应是一一回应的关系,也是前后端交互的桥梁!
3.协议
客户端和服务器相互传输数据使用协议,协议是规定通信双方按照什么样的规则来进行交流。
比如两个程序之间数据传输本质是二进制的bit流,bit流是协议里包含的东西,它就是通过“协议”约定的。
4.协议栈
网络通信涉及很多协议,不同协议有不同的功能,按照不同功能或在通信中不同的作用,将协议分为几个不同的类别,也叫“协议栈”。
应用层:程序员在代码中约定传输的数据是什么。
传输层:只考虑起点和终点数据的传输。
网络层:两个遥远的主机的数据传输。
数据链路层:相邻主机之间的通信。
物理层:物理设施。
5.HTTP协议
从属于Tcp/ip协议栈,处于应用层,HTTP协议与代码直接相关
Web开发广泛使用HTTP协议,比如我们平时上网是时输入的网址,此时,浏览器是客户端。
二、属性
1.URL
URL就是我们平时上网输入的网址。是资源唯一的定位符,描述了互联网上的资源位置。
其中,登录信息一项现在已经废了,片段标识符不常见。
2.urlencode和urldecode
特殊字符的转义,简单的说,urlencode就是将每3个字节用16进制表示,前面再加一个%。而ruldecode就是urlencode的逆过程。
3.HTTP的方法
4.HTTP常见的Header
1)referer典型用处:获取自己的网站被访问了多少次。
2)Cookie:以键值对的形式存在于HTTP请求,内容来自服务器,每个域名都有必用的Cookie,后期访问服务器时会自动带上Cookie。
典型用处:识别用户身份,
三、HTTP格式
1.HTTP请求
首行:方法 + url + 版本。之间用空格分隔。
header :请求的属性,冒号分割的键值对;每组属性之间使用\n分隔,遇到空行表示header结束。
body:空行后的内容,可以为空字符串,若body存在,那么header中会有一个Content-Length属性来标识body的长度。
注:HTTP请求中获取服务器数据主要通过GET方法,给服务器提交数据主要通过POST方法,对GET请求来说一般没有body,post请求一般有body。
2.HTTP响应
首行:版本号 + 状态码 + 状态码解释。用空格分隔
header:请求的属性,冒号分割的键值对;每组属性之间使用\n分隔,遇到空行表示header结束。
body:空行后的内容,可以为空字符串,若body存在,那么header中会有一个Content-Length属性来标识body的长度;如果服务器返回了一个html页面,那么html页面内容就在body中。
注:一次HTTP请求可能成功也可能失败,或其它情况,可以根据不同情况不同的状态码表示。
常见的状态码
四、HTTPS
简单来说,Https是对Http的加密
非对称加密:加密和解密用同一个密钥。
对称密钥:加密和解密用不同密钥
若用公钥加密,那就用私钥解密
若用私钥加密,那就用公钥解密