引言
这篇文章是我各处收集有关于http的知识,不成体系,爱看不看?,看完点赞。
我们输入网址之后发生的事情
输入网址并回车(URL 包括 协议名称 域名或者IP 端口号 请求资源具体地址 参数)
解析域名 DNS解析
浏览器发送HTTP请求
服务器处理请求
服务器返回HTML响应
浏览器处理HTML页面
继续请求其他资源
首先客户机与服务器需要建立连接,只要点击某个超级连接,HTTP的工作开始。
建立连接后,客户端发送一个请求给服务器,请求方式的格式为,统一资源标识符(URL),协议版本号,后面是MIME信息包括服务器信息、实体信息和可能的内容。
服务器收到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或者错误的代码、后面是MIME信息包括服务器信息、实体信息和可能的内容。
客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果以上过程任意一步出现错误,那么产生的错误信息将返回到客户端,有显示器输出。
TCP/IP协议栈
http是超文本传输协议,从www浏览器传输到本地浏览器的一种传输协议,网站是基于HTPP协议的,例如网站的图片、css、js都是基于HTTP协议进行传输的
HTTP协议是由从客户机到服务器的请求(request)和从服务器到客户机的响应(response)进行约束和规范
应用层为用户提供所需要的各种服务,例如HTTP、FTP、DNS、SMTP等。
传输层为应用层实体提供端到端的通信功能,保证数据包的顺序传递及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)
网络层解决主机到主机的通信问题。IP协议是国际互联层最重要的协议
网络接口层负责数据在主机和网络之间的交换
请求和响应
HTTP请求组成:请求⾏、消息报头、请求正⽂。
HTTP响应组成:状态⾏、消息报头、响应正⽂。
请求⾏组成:以⼀个⽅法符号开头,后⾯跟着请求的URI和协议的版本。
状态⾏组成:服务器HTTP协议的版本,服务器发回的响应状态代码和状态代码的⽂本描述。
accept-Encoding 编码:数据的一种组织格式
Accept-Language: 接受的语言
Cache-Control: 缓存
Connection
Cookie
Host:主机名称
HTTP请求的几种方法
OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web
Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT:向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:回显服务器收到的请求,主要用于测试或诊断。
HTTP状态码
1xx消息,表示请求已经接收,继续处理
2xx成功
3xx重定向
4xx客户端错误
5xx服务器错误
cookies与session
Cookies是保留在客户端的一小段文本,随客户端每一个请求发送该URL下的所有cookies到服务端
Session则保存在服务器端,通过唯一的值sessionID来区分每一个用户。sessionID随每个请求发送到服务器,服务器根据sessionID来识别客户端,再通过session的key 获取 session的值。
cookie使用
1、cookie将服务器设置的cookie返回到服务器
2、set-cookie 服务器向客户端设置cookie
服务端在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中发送给服务端。从而实现会话的保持。
HTTP的链路安全
1、加密重要数据(密码md5)
2、对非重要数据签名 (对付爬虫)
3、使用安全连接HTTPS协议
HTTP2的优点
使用二进制格式传输,更高效、更紧筹
对报头压缩、降低成本
多路复用,一个网络连接实现并行请求
服务器主动推送,减少请求延时