1、网络分层
五层:
底层是物理层(硬件)
顶层是应用层(应用程序)
中层是网络层(网络)
两条传输的道路
应用层<-->网络层:运输层(关注端点到端点的通信-->通信的可靠性)
网络层<-->物理层:数据链路层(关注点到点(一段到一段)的信息传送)
2、三次握手&四次挥手
三次握手
帮助客户端和服务端建立通信
客户端A要和服务端通信B
A:我要建立通信,你能收到我的信息吗?
B:我收到了,你呢?
A:我也收到了。
至此三次通信实现了通信通道的建立。
四次挥手
任何一方提出要停止通信的协议
A:我要挂了,还有什么要交代的?
B:好的,等等,还有。
B:巴拉巴拉,好了,你可以挂了。
A:那我挂了。
3、浏览器中输入地址到显示页面的过程
- DNS解析-->(结论)把网址解析成 ip地址-->(过程)浏览器缓存、本地缓存hosts文件找对应的 ip,找不到就去 DNS服务器解析
- 拿到服务器 ip就让本机 ip和它进行 tcp连接
- 发送 HTTP请求
- 服务器处理请求并返回 HTTP报文
- 浏览器解析并渲染页面
- 结束连接
HTTP&HTTPS
1、无状态协议
HTTP协议本身是不保存请求和响应的状态。
实际应用场景里,我们会想要获得用户的信息。
这时候就可以聊聊 Session和Cookie了。
2、Session&Cookie
我们会用 Session、Cookie来保存用户状态,
它们的区别是,
Session是保存在服务器中的(对服务器会占用一定的资源);
Cookie是保存在本地浏览器中的(存在安全问题)。
实际项目中会结合两者来保存用户信息,提高用户体验,
比如
用户第一次登陆请求后,
服务器会产生 session(保存到服务器内存中,一般是保存在 redis中)和 sessionid保存到本地浏览器的cookie中。
用户第二次请求会携带 sessionid请求,获取到 session,得到用户会话信息。
3、HTTPS
默认端口是 443,
安全性来说的话,HTTPS的请求中传输的内容是加密过的,比 HTTP明文传输安全。
HTTPS有两种加密方式,会消耗一定的服务器资源。
- 对称加密:密匙只有一个,加密解密同一个密码,速度快点。
- 非对称加密:密匙成对出现(公匙和私匙),可以根据公匙加密需要私匙解密,私匙加密需要公匙解密。速度慢些。