网络基础3-HTTP相关
HTTP相关
明确概念:
URI:uniform resource identifier统一资源标识符,用字符串标识某一互联网资源
URI包含URL与URN(统一资源名)两种形式
URL:uniform resource locator统一资源定位符
URL是URI的子集
1.URL
通用格式(9个通用组件):<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
scheme:方案,访问服务器以获取资源时要使用协议,如:http ,ftp
如:https://www.baidu.com/ 采用的是https的方案
ftp://202.114.1.121 采用的是ftp的方案
user:password:访问资源时需要的用户名和密码,二者用‘:’分隔
host:资源宿主服务器的主机名或IP地址
port:端口,默认端口为80(HTTP端口)
path:路径,服务端上的资源本地名,用斜杠与前面的部分分隔开来,如:https://www.baidu.com/index.html访问的就是根目录下的index.html
params:参数,参数为名/值对(如:format=json ),用分号来与其他组件分隔开,一个路径段可以包含多个参数字段,各参数之间用‘&’分隔,如:http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true 这个例子有两个路径段,分别带参数sale=false和graphics=true
query:查询,用字符‘?’来将其与其他组件分隔开来,用于缩小请求的资源范围
如:http://china.huanqiu.com/article/2017-03/10392334.html?from=bdwz中,查询字段为from=bdwz
frag:片段,用‘#’将其与其他组件分隔开来,表示请求一个资源内部的片段
2.HTTP报文
报文分为请求报文与响应报文,二者的格式如下:
请求报文:
请求行:<method> <request-URL> <version>
<headers>
<entity-body>
响应报文:
响应行:<version> <status> <reson-phrase>
<headers>
<entity-body>
具体内容如下:
1.method方法,即请求方希望服务器执行的动作,HTTP中支持的主要方法如下:
2.request-URL,请求的完整的URL
3.version,所采用的HTTP版本号,如HTTP/1.0,HTTP/1.1
4.entity-body,实体
5.status,返回的状态码,返回对于所发送请求的情况反馈
6.reson-phrase,对于状态码进行解释的短语
7.headers,首部
首部分为:通用首部,请求首部,响应首部,实体首部与拓展首部,由于首部是决定HTTP连接细节的主要内容,比较繁多,加之作者本身是移动端开发人员,所以没有对HTTP的首部进行更加深入的了解,需要了解的同学请自行查阅手册。
3.HTTP连接管理
对于TCP而言造成的时延可能出现在下列几个方面:
1.建立TCP连接时的三次握手
2.TCP慢启动过程与拥塞控制
3.对于少量数据使用的Nagle算法
4.延迟确认应答
5.捎带应答
6.TIME_WAIT时延与端口耗尽
HTTP采用了下列三种方式来优化上面的问题:
1.并行连接
通过多条TCP连接发起并发的HTTP请求,但由于过多的连接会消耗大量的网络资源,同时加大服务器的负担,所以若建立很多的并行连接并不能提高网络传输的效率,所以服务器也会控制客户端所建立的并行连接的数量。
2.持久连接
重用已建立的TCP连接,即在事务处理完毕后保持TCP连接为打开状态,降低了TCP建立与关闭时的时延开销。需要注意的是HTTP/1.0的持久连接默认是关闭状态,需要通过Connection:keep-alive来激活,但是HTTP/1.1中就默认持久连接为激活的,若不需要则在首部中添加Connection:close。
3.管道化连接
通过共享的TCP连接发起并发的HTTP请求,即在收到响应之前,将多条请求放入队列。
下面这张图很形象的说明了持久连接与管道化连接。
4.HTTPS简介
概念:
SSL:secure socket layer安全套接层
TLS:transport layer security安全层传输协议
HTTPS(HTTP secure超文本传输安全协议):与SSL组合使用的HTTP,也称为HTTP over SSL,即HTTP不再直接与TCP通信,而是直接与SSL协议通信,再由SSL与TCP通信
加入了SSL层之后,HTTP就拥有了HTTPS的加密,证书和完整性保护等功能。
共享密钥:也叫对称密钥,即加密与解密都用同一个密钥
公开密钥:一对非对称密钥,加密用公钥,解密用私钥
HTTPS:采用混合加密机制,先通过公开密钥方式传递共享密钥,再通过共享密钥加密报文传递数据
书中的一张图就很清晰地说明了HTTPS的工作流程:
接下来,什么是数字签名呢?
这个网址很简介形象的描述了数字签名
总结:
写到这里,关于网络基础的知识已经总结完了,由于本人是移动端开发人员,在平时的开发工作中并不需要非常详尽的网络知识细节,这三篇文章可以作为学习笔记也可以作为我在自学过程中的归纳总结,也可作为面试时的网络知识准备。总之,这三篇文章比较简洁的从一个非网络开发人员的角度来理解网络基础,主要是TCP/IP的部分比较重要,关于HTTP的部分则比较简略,经过这段时间的学习,算是补上大学时的网络基础课程,虽然平时用不到这样的知识,但我相信知识都是贯通的,知道总比不知道好。最后,如果本文中有任何错误的理解,欢迎留言讨论_