当前位置: 首页 > biancheng >正文

计算机网络基础问题——网络筑基

HTTP、TCP常见问题概述

  • 1、说说一个请求从输入URL到展示页面的全部过程?
  • 2、谈谈TCP和UDP差异?
  • 3、谈谈三次握手、四次挥手?
  • 4、谈谈HTTPS的原理
  • 5、http长连接和短连接差异?
  • 6、谈谈为什么要禁止跨域请求?


1、说说一个请求从输入URL到展示页面的全部过程?

  1. 根据域名解析IP,检查本地是否有缓存,在DNS服务器上,一直往上查找对应IP为止。
  2. 开始TCP连接,确认可以进行通讯。
  3. 发起了HTTP请求,携带请求头、请求体等消息。
  4. 服务器进行处理并且返回了HTTP报文
  5. 浏览器根据返回的HTML、CSS等进行解析渲染页面。
  6. 结束连接,四次挥手。

2、谈谈TCP和UDP差异?

主要的差异如下:

  • TCP定位是承担一个可靠的传输,只能点对点传输并且速度较慢,传输相同数据消耗资源更多;
  • UDP则定位是一个更加快速的传输数据但是相对不可靠,可能出现丢包异常,但是可以做到一对多传输并且速度较快,资源消耗较小。
  • TCP面向连接,每次通讯都需要握手,结束通讯也需要挥手告别,传输需要应答机制,还有重传机制等保证TCP的可靠性,而且TCP面向流的,可能会出现粘包、拆包现象。
  • UDP没有上述这么多机制,直接指向了目的地址之后发送数据就不管,不连接也不确认也不用重传,数据报文相比于TCP更加简单,没有那么多麻烦的机制。

3、谈谈三次握手、四次挥手?

  • 主动连接方是客户端,第一次握手由客户端发起连接请求SYN,试探服务器是否正常应答;第二次握手则是由服务端发起了SYN + ACK,应答客户端请求同时发起SYN来试探客户端是否正常应答,第三次握手由客户端发起了ACK应答服务器的试探。
  • 主动关闭方是客户端客户端close进入第一次挥手由客户端发起释放请求FIN,标识客户端不能够发送数据了;
  • 第二次挥手由服务端应答客户端的FIN,此时服务器进入close wait状态,可能之前客户端发送的数据还没有完全到达或者服务端还存在数据未发送,这些都是应用层说了算,之后由应用层来决定是否调用close方法来关闭连接,socket没有close连接就会一直处于这个状态,也不会释放资源。
  • 调用close之后,第三次挥手就是由服务器发起释放连接请求FIN表示服务端不再发送数据了
  • 第四次挥手由客户端发起了应答,因为应答的状态不确定服务端是否能收到,若服务端没有收到则持续重发FIN,所以客户端需要进入time wait状态等待2MSL,也就是客户端数据传输到服务端的时间,看看服务器是否重传了FIN,若重传了则需要重新应答,加强TCP连接的可靠性,也可以防止FIN未得到处理影响后续的连接。
  • HTTP则是服务端主动关闭,也就是若有少量的客户端进行大量的短连接并且不断连接释放资源,就会出现很多的time wait状态,从而影响服务器的性能,类似网关。网关基本描述。

4、谈谈HTTPS的原理

  • HTTPS是一个加密传输协议,利用加密算法,对报文进行了加密传输,HTTPS是通过非对称加密算法来确认传输的秘钥后,再次使用堆成加密算法进行信息的加密传输。对称加密和非对称加密。
  • HTTPS协议通信涉及第三方服务器做证书的验证,首先客户端服务端发送请求,服务器返回证书和公钥给客户端之后客户端向权威机构去验证服务端发送的公钥和证书是否正确
  • 若上述步骤正确无误,则客户端生成一个随机数后用公钥进行加密发送,因为公钥加密只有私钥能解密,私钥只有服务器拥有,所以只有服务器额能解密得到客户端的随机数。
  • 现在客户端和服务端都拥有了一个相同的随机数作为加密钥匙,所以接下来的数据传输都是基于这个钥匙进行对称加密,一方加密一方解密即可,因为钥匙只有双方拥有所以其他人无法解密的。

5、http长连接和短连接差异?

长链接:

  • 传输数据之后连接保持不释放,下次数据传输可以不用再次进行TCP连接即可直接传输数据,长链接有一个探活机制,服务器会在一段时间内不传输数据之后进行发送一个探活报文到客户端验证,若客户端不能正常返回则说明客户端挂掉了,则进行关闭连接。
  • 当然客户端也可以手动关闭连接,若一些客户端数量固定并且频繁传输数据,类似网关下游或者反向代理,服务器可以设置长连接的方式,由于短连接不断地连接释放造成资源的浪费,并且频繁开断也会导致大量连接处于time wait状态影响并发性能

6、谈谈为什么要禁止跨域请求?

跨域请求会带来安全问题,用户A在某站利用Ajax请求b,但是b站用户之前登录了有cookie所以就不用登录,这样A站可以静默获取当前用户在b站的信息,也就是CSRF攻击

跨域可以通过服务端进行解除限制,但是服务端需要自己承受被攻击的风险。

相关文章:

  • 牛客练习赛#84 F 莫比乌斯反演+杜教筛+技巧+斐波那契数列和gcd的结论+矩阵快速幂
  • ZZNUOJ_用C语言编写程序实现1342:支配值数目(附完整源码)
  • java毕业设计后勤管理系统餐饮评价监督系统(附源码、数据库)
  • 前端基础学习笔记
  • 【TS】联合类型--类型断言--类型推断
  • 谈笑风声的秘密
  • QT影城网上售票系统
  • NetCDF数据在ArcMap中的使用
  • 打怪升级(考验思路)
  • 持续精进,改变自己