常见面试题-网络

1.http响应码301和302费别代表什么,有什么区别

301和302都是http状态的编码,都代表某个url发生了转移

区别:

  • 301 redirect:代表永久性转移
  • 302 redirect:代表暂时性转移

2.forward和redirect的区别

  • forward:直接转发方式,客户端或浏览器只发出一次请求,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的

直接转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”

  • redirect:间接转发,客户端或浏览器实际是两次http请求,服务器端在响应第一次请求的时候,让客户端或浏览器再向另外一个url发出请求,从而达到转发的目的

间接转发就相当于:"A找B借钱,B说没有,让A去找C借"

3.tcp和udp的区别

  • tcp面向连接,如打电话要先拨号建立连接。udp是无连接的,即发送数据前不需要建立连接
  • tcp提供可靠的服务,通过tcp传送的数据是无差错的,不丢失,不重复,且按序到达。udp是尽最大努力交付,不保证可靠交付
  • tcp通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制
  • udp具有较好的实时性,工作效率比tcp高,适用于对高速传输和实时性有较高要求的通信或广播通信
  • tcp只能支持点对点。udp支持一对一,一对多,多对一和多对多
  • tcp对系统资源要求较多,udp对系统资源要求较少

4.tcp为什么要三次握手,两次不行吗,为什么

为实现可靠传输,tcp协议通信双方,都必须维护一个序列号,以标识发送的数据包中,哪些是已经被对方收到。三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到序列号起始值的最少步骤

如果是两次握手,最多只有发送方的起始序列号能被确认,接收方的序列号则得不到确认

5.tcp粘包是怎么产生的

  • 发送方产生粘包

采用TCP协议传输数据的客户端与服务器经常是保持一个长连接的状态(一次连接发一次数据不存在粘包),双方在连接不断开的情况下,可以一直传输数据;但当发送的数据包过于的小时,那么TCP协议默认的会启用Nagle算法,将这些较小的数据包进行合并发送(缓冲区数据发送是一个堆压的过程);这个合并过程就是在发送缓冲区中进行的,也就是说数据发送出来它已经是粘包的状态了

  • 接收方产生粘包

接收方采用TCP协议接收数据时的过程是这样的:数据到达接收方,从网络模型的下方传递至传输层,传输层的TCP协议处理是将其放置接收缓冲区,然后由应用层来主动获取(C语言用recv、read等函数);这时会出现一个问题,就是我们在程序中调用的读取数据函数不能及时的把缓冲区中的数据拿出来,而下一个数据又到来并有一部分放入的缓冲区末尾,等我们读取数据时就是一个粘包。(放数据的速度 > 应用层拿数据速度) 

6.osi的七层模型有哪些

  1. 应用层:网络服务与最终用户的一个接口
  2. 表示层:数据的表示,安全,压缩
  3. 会话层:建立,管理,终止会话
  4. 传输层:定义传输数据的协议端口号,以及流量控制和差错校验
  5. 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择
  6. 数据链路层:建立逻辑连接,进行硬件地址寻址,差错校验等功能
  7. 物理层:建立,维护,断开物理连接

7.get和post请求有哪些区别

  • get在浏览器回退时是无害的,而post会再次提交请求
  • get产生的url地址可以被bookmark,而post不可以
  • get请求会被浏览器主动cache,而post不会,除非手动设置
  • get请求只能进行url编码,而post支持多种编码方式
  • get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会
  • get请求在url中传送的参数是有长度限制的,而post没有
  • 对参数的数据类型,get直接收ascii字符,而post没有限制
  • get比post更不安全,因此参数直接暴露在url上,所以不能用来传递敏感信息
  • get参数通过url传递,post放在request body中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值