- 物理层:主要作用是定义物理设备如何传输数据(光缆,网线)
- 数据链路层:为通讯实体间建立数据链路连接
- 网络层:为数据在节点之间传输创建逻辑链路
- 传输层:数据的传输都是在这层定义的,数据过大分包,分片。
- 应用层:为应用软件提供了很多服务,构建于协议之上。
HTTP协议的发展历史
- http/0.9:只有一个命令get,没有header等描述数据的信息,服务器发送完毕,就关闭tcp协议。
- http/1.0:增加了很多命令,增加了status code和header
- http/1.1:持久连接,同一个连接发送多次请求,增加host
- http/2:所有数据二进制传输,同一个链接里发送多个请求不再按照顺序来,头信息压缩以及推送(之前的版本html页面如果链接了css和js,先解析html,然后解析链接了url,现在是并行顺序)等提高效率的功能。
HTTP的三次握手
客户端与服务器端连接.png-
相关概念:http不存在连接这个概念,他们只是请求和响应,只是数据包,而数据包是通过tcp协议创建的通道进行传输的,在tcp连接上面可以发送多个http请求。
三次握手时序图.png - TCP为什么要进行三次握手:因为网络传输有延迟,客户端发送请求到服务器端要求建立连接,如果服务器端直接返回的话可能会产生丢包的情况导致客户端接收不到数据,客户端会因为超时就关闭了,可能就去发送新的请求了,然而服务端并不知道丢包导致客户端没有接收数据,服务端的socket端口就一直开着,造成了额外的开销。所以需要三次握手确认这个过程。
- 跨域:简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。
网友评论