关于HTTP和HTTPS:
http:超文本传输协议,在客户端与服务端之间传输信息,客户端发送html,css给服务器,服务器返回源码给客户端;
https:是一种更安全的传输协议(ssl协议),在协议上加了一层密码,不容易被黑客攻击,更加安全。多用于支付页面,政府机构页面,公安局页面,银行……;
HTTP 和 HTTPS 的共同点和区别
区别:
1.https 协议需要申请证书
2.端口不一样 http是80端口 https是443端口··
3.http 是超文本传输协议,信息是明文传输, https 则是具有安全性的ssl加密传输协议。
4.http 的连接很简单,是无状态的; HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
5.在网络模型中,http工作于应用层,https位于传输层。
共同点:
大多数情况下,HTTP 和HTTPS 是相同的,因为都是采用同一个基础的协议。
当在浏览器输入url,向服务器发送请求,浏览器都做了些什么?
http事务:从浏览器传给服务器,服务器反回内容给浏览器,这一个完整的过程就叫做http的一个事务。
1.域名解析
DNS解析找到对应的IP地址
2.建立TCP连接(tcp三次握手)
3.发送HTTP请求
客户端向服务端发送http请求,客户端发送请求头信息,请求内容,最后会发送一空白行,标识客户端请求完毕。
4.服务器发送响应。
服务端做出应答,比如status code 为200
服务端向客户端发送答头信息,最后也会发送一空白行,标识服务端发送响应完毕,然后发送以content-type要求的数据格式发送数据给客户端。
5.TCP连接的释放(四次挥手)
http的三次握手和四次挥手:
浏览器在给服务器传输数据之前,有三次握手,握手成功之后,才可以传输数据
1、浏览器需要先发送SYN码,客户端请求和服务器建立连接;
2、服务器接收到SYN码,再发送给客户端SYN+ACK码,我可以建立连接;
3、客户端接收到ACK码,验证这个ACK是否正确,如果正确则客户端和服务端则建立起数据连接;双方的数据发送通道都将开启;
四次挥手:
1、当客户端无数据要传输了,会发送FIN码告诉服务器,我发送完毕了;
2、当服务端接收完毕后,告诉客户端ACK码,告诉客户端你可以把数据通道关闭了;
3、当服务器发送完毕之后,也会发送FIN码,告诉浏览器,数据发送完毕;
4、当客户端接收完毕 之后,同样发送ACK码,告诉服务器,数据接收完毕,你可以关闭;
三次握手和四次挥手的好处:确保数据的安全和完整
TCP与UDP:
TCP:
优点:更可靠、稳定。在传递数据之前会有三次握手的过程,在数据传递时有确认、窗口、重传、拥塞控制等机制,数据传递完,会有四次挥手的过程。
缺点:慢,效率低,占用的资源比较高,容易被攻击,因为有握手、挥手的过程消耗的时间比较长。
UDP:
优点:更快,可以传输大量的数据。没有握手 挥手的机制,是无状态的传输协议。
缺点:不可靠,不稳定,因为没有握手挥手的机制,如果网络不好会丢包。
基于上面这些优缺点,他们的使用场景都有哪些呢:
- 当对网络通讯质量有要求的时候,要求数据要准确无误的传递给对方,比如HTTP、HTTPS、FTP、SOCKET等传输协议,这是使用TCP的场景。
- 当对通讯质量要求不高时,就可以使用UDP,比如微信语音 视频等。
小结:
1.基于连接与无连接。
2.对系统资源的要求(TCP较多,UDP比较少)。
3.UDP结构比较简单
4.TCP可以保证数据的顺序和准确性,UDP不能保证。
5.TCP比较慢,UDP更快。
cookie和session:
什么是cookie?
HTTP cookie是服务器发送到用户浏览器保存在本地的一小块数据,他会在浏览器下一次请求的时候携带发送给服务器。通常,他用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。
cookie主要用于下面三个方面:
1、会话状态管理,如用户的登录状态、购物车、游戏分数或者其他信息。
2、个性化设置,如用户自定义设置、主题等。
3、浏览器的追踪行为,如跟踪分析用户行为等。
什么是session?
session代表着服务器和客户端一次会话的过程,session对象存储特定的用户信息等。用户在web跳转的时候,session中的变量不会丢失。
两者的区别:
1.作用范围不同。session保存在服务端,cookie保存在客户端。
2.存取方式不同。cookie只能保存ASCII,session 可以是任意类型。
3.有效期不同。cookie可以长时间有效,session有效期比较短,客户端关闭或者session超时都会失效。
4.隐私策略不同。cookie保存在客户端不安全,容易被截获。
5.存储大小不同。单个cookie存储的数据不能超过4k,session存储的数据大小过高于cookie。
为什么需要cookie和session,他们有什么关联?
浏览器是没有状态的,因此浏览器并不知道是哪个用户在和服务端通讯,这个时候就需要有一个机制来告诉服务端,这套机制就需要session和cookie来配合。
用户第一次请求服务器的时候,服务器根据用户提交的信息,创建相应的session,请求返回的时候将session的唯一标识sessionId,浏览器接受到sessionId后,会存入到cookie中,同时cookie记录此sessionid属于哪个域名。
当浏览器再次访问的时候,请求会判断此域名下面是否存在cookie信息。如果存在将cookie发送到服务端,服务端会从cookie中获取sessionId,在根据sessionId查找对应的session信息,如果没有则登录无效。
分布式session问题:
- Nginx_ip_hash 策略,服务端使用Nginx代理,每个请求按访问的IP的hash分配,这样来自同一IP访问一个后台服务器
- session复制
- 共享session 使用缓存
websocket:
WebSocket的出现,使得浏览器具备了实时双向通信的能力。
websocket:HTML5开始提供的一种浏览器和服务器进行全双工通讯的网络技术,属于应用层协议,基于TCP传输协议,并复用HTTP握手通道。
优点:
- 支持双向通讯,实时性更强。
- 二进制数据传输,更快更高效。
- 较少的控制开销,是长连接。