1. http与https区别
- HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
- HTTP 是不安全的,而 HTTPS 是安全的
- HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
- 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
- HTTP 无法加密,而HTTPS 对传输的数据进行加密
- HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书
2. 什么是Http协议无状态协议?怎么解决Http协议无状态协议?
- 无状态协议:前后两次访问,服务端无法判断是同一人
- 用cookie解决
3. URI和URL区别
- URI:
uniform resource identifier
,统一资源标识符,用来唯一的标识一个资源 - URL:
uniform resource locator
,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源
4. 常用HTTP方法
- GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
- POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
- PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
- HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
- DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
- OPTIONS:查询相应URI支持的HTTP方法。
5. 长链接
HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接。比如使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销。
为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。旨在建立一次 TCP 连接后进行多次请求和响应的交互。在 HTTP/1.1 中,所有的连接默认都是持久连接。
作者:涤生_Woo
链接:https://www.jianshu.com/p/6e9e4156ece3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
6. session和cookie
- cookie:cookie技术是客户端的解决方案,cookie就是有服务器给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息
- session:session是另一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上,客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上
- 区别
- 存放位置不同
- 存放方式不同 (session能保存任何内容,cookie 字符串)
- 安全性不同,session更安全
- 有效期不同 ,cookie比较长,session如果设置为-1关闭浏览器后就会失去
- 对服务器压力不同
7. OSI七层模型
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
8. TCP/IP四层模型
- 应用层:决定了向用户提供应用服务时通信的活动。eg. DNS、FTP、HTTP
- 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。eg. UDP、TCP
- 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传给对方。
- 链路层:用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC及光纤等物理可见部分。
8. IP协议
- 位于传网络层
- 把各种数据包传送给对象
9. TCP协议
-
位于传输层
-
提供可靠的字节流服务,确保数据已送达到对方
-
为了准确无误的将数据送达到目的地,TCP采用了三次握手的策略.握手过程使用TCP的标志(flag)-SYN(synchronize)和ACK(acknownledgement)
-
三次握手
-
为什么不能两次握手
- 确认双方的接收能力
- 第一次握手:确定了客户端发送能力和服务端的接收能力正常
- 第二次握手:确定了服务端的发送能力和客户端的接收能力正常,不过服务端不确定客户端接收能力正常
- 第三次握手:确定了客户端发送接收能力和服务端的发送接收能力
- 序列号可靠同步
- 如果两次握手就开始交换数据,服务端无法确定客户端是否已经接收到了自己发送的初始序列号
- 如果第二次握手报文丢失,那么客户端就无法知道服务端的初始序列号,就是不可靠的链接了
- 阻止历史链接
- 客户端由于某种原因发送了两个不同序号的 SYN 包,我们知道网络环境是复杂的,旧的数据包有可能先到达服务器。如果是两次握手,服务器收到旧的 SYN 就会立刻建立连接,那么会造成网络异常。
- 如果是三次握手,服务器需要回复 SYN+ACK 包,客户端会对比应答的序号,如果发现是旧的报文,就会给服务器发 RST 报文,直到正常的 SYN 到达服务器后才正常建立连接。
- 确认双方的接收能力
-
每次握手可以携带数据?
- 第一二次握手如果携带数据,遭遇攻击的话,服务器会频繁处于处理握手报文的状态
- 第三次握手,此时客户端已经处于连接状态,他已经知道服务器的接收、发送能力是正常的了,所以可以携带数据是情理之中
- 四次挥手:四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放
-
为什么TIME_WAIT 状态需要经过 2MSL 才能返回到 CLOSE 状态?
- MSL 指的是报文在网络中最大生存时间。在客户端发送对服务器端的 FIN 的确认包 ACK 后,这个 ACK 包是有可能不可达的,服务器端如果收不到 ACK 的话需要重新发送 FIN 包。
- 所以客户端发送 ACK 后需要留出 2MSL 时间(ACK 到达服务器 + 服务器发送 FIN 重传包,一来一回)等待确认服务器端确实收到了 ACK 包。
- 也就是说客户端如果等待 2MSL 时间也没有收到服务器端的重传包 FIN,说明可以确认服务器已经收到客户端发送的 ACK
10. UDP协议
- UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
- 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
- 此外,传输途中出现丢包,UDP 也不负责重发。
- 甚至当包的到达顺序出现乱序时也没有纠正的功能。
- 如果需要以上的细节控制,不得不交由采用 UDP 的应用程序去处理。
- UDP 常用于一下几个方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)