不论是在工做仍是面试中,Http这一块的知识,对于每一个前端开发都是必备的。这篇笔记,是我的在学习 图解Http 这本书的时候,记录一些平时工做面试中,用得比较多的知识点,拿出来和你们分享一下。全部图片取材都源于 图解 Http,文章仅供我的学习使用。前端
计算机与网络设备要相互通讯,双方就必须基于相同的方法。不一样的硬件、操做系统之间的通讯,全部的这一切都须要一种规则。而咱们就把这种规则称为协议(protocol)。 像这样把与互联网相关联的协议集合起来总称为TCP/IP。也有说法认为,TCP/IP是指TCP和IP这两种协议。还有一种说法认为,TCP/IP是在IP协议的通讯过程当中,使用到的协议族的统称。面试
三次握手是由发送端发起的,在发送数据以前,发送端会给接收端发送一个确认消息,当接收端接到发送端的消息而且作出回应以后,发送端才会开始数据的传输浏览器
DNS(Domain Name System) 服务是和 HTTP 协议同样位于应用层的协议,它提供域名到 IP 之间的解析服务缓存
URI(Uniform Resource Iden-tifier):统一资源定位符,标识某一互联网上面的资源安全
URL(Uniform Resource Locator): 统一资源地址,标识资源的位置服务器
HTTP协议和 TCP/IP 协议族内的其它众多协议相同,用于客户端和服务器之间的通讯cookie
请求访问的一端称为客户端,提供资源响应的一端称为服务端网络
http 是一种不保存状态,即无状态的协议学习
在调用过程当中,对请求和响应都不作持久化处理操作系统
优势:
- 更快的处理大量事物
- 确保协议的可伸缩性
缺点:
- 某些请求或者登录状态须要保持状态
GET : 主要用来获取资源,参数包含在URL中可见,因此安全性比较差,浏览器对GET方法的参数长度有限制
POST :主要用来获取和传输资源,参数包含在请求体中,且参数长度比GET大的多,对外不可见,相对较为安全,
PUT :向服务器提交数据,更新服务器资源
DELETE :删除服务器数据
HEAD :获取报文首部
问题: 在 Http 最初的版本中,没进行一次 Http 通讯都会断开一次链接,所以当请求过多的时候,都会形成无谓的通讯开销
解决: Http/1.1 提出了持久链接的概念
持久链接: 持久链接的特色是,只要任意一方没有明确提出断开链接,就保持TCP链接状态
优势: 持久链接的好处在于减小了 TCP 链接的重复创建和断开所形成的额外开销,减轻了服务器端的负载。另外,减小开销的那部分时间,使HTTP 请求和响应可以更早地结束,这样 Web 页面的显示速度也就相应提升了
前面说过,Http是无状态的
Http 包含请求报文和响应报文,经过依赖这两种报文来达到信息的资源的请求和响应
请求报文:
- 请求行:请求方法,协议名,版本号,请求URI
- 请求头部
- 空行
- 请求体
响应报文
- 状态行:协议名,版本号,返回的状态码
- 响应头部
- 空行
- 响应体
请求头参数:
Content-type
Host
Connection
Content-length
cookie
Date
last-modify
cache-control
HTTP 首部是构成HTTP报文的要素之一
在HTTP通讯过程当中,不管是请求仍是响应都会使用首部字段,它能起到传递额外信息的做用
状态码表示客户端请求的返回结果
状态码中的第一位指定响应类别,后两类无分类
缓存是指代理服务器内保存的资源副本,利用缓存能够减小对服务器的访问,所以也就节省了通讯流量和通讯时间
缓存是服务器是代理服务器的一种,当代理转发从服务器返回的资源时,代理服务器会返回一份资源的副本
缓存不只能够存在于缓存服务器内,还能够存在客户端浏览器中。把客户端缓存称为临时网络文件
另外,和缓存服务器相同的一点是,当断定缓存过时后,会向源服务器确认资源的有效性。若判断浏览器缓存失效,浏览器会再次请求新资源。
- 强缓存:
- Cache-Control
- Expires
- Pragma:在 HTTP 1.1中已经被废弃
- 协商缓存:
- ETag/If-Not-Match
- Last-Modified/If-Modified-Since
浏览器首次发送请求
浏览器再次发送请求
参考文章:简书:一文读懂http缓存
TCP: 三次握手,稳定性强,数据可靠,速度慢,占用系统资源高,适合少许的数据传输
UDP:
总结:
- TCP面向链接,UDP是无链接的,即发送数据以前不须要创建链接
- TCP提供可靠的服务,即TCP链接传送的数据,无差错,不丢失。UDP尽最大努力交付,可是不保证数 据的可靠性
- TCP只能是一对一,UDP能够一对一,一对多,多对一