计算机网络常见问题总结


  1. http 响应码 301 和 302 代表的是什么?有什么区别?
  2. forward 和 redirect 的区别?
  3. 简述 tcp 和 udp 的区别?
  4. tcp 为什么要三次握手?两次不行么?为什么?
  5. 说一下 tcp 粘包是怎么产生的?
  6. OSI 的七层模型都有哪些?
  7. get 和 post 请求有什么区别?
  8. 如何实现跨域?
  9. 说一下 JSONP 实现原理?

1. http 响应码 301 和 302 代表的是什么?有什么区别?

301:永久重定向

302:暂时重定向

它们的区别是,301 对搜索引擎优化(SEO)更有利;302 有被提示为网络拦截的风险。


2. forward 和 redirect 的区别?

forward 是转发和 redirect 是重定向:

  • 地址栏 url 显示:forward url 不会发生改变,redirect url 会发生改变;
  • 数据共享:forward 可以共享 request 里的数据,redirect 不能共享;
  • 效率:forward 比 redirect 效率高;

3. 简述 tcp 和 udp 的区别?

tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供了可靠的通信传输,而 udp 则常被用来让广播和细节控制交给应用的通信传输。

两者的区别大致如下:

  1. TCP是面向连接的,UDP是无连接的;

  2. TCP是可靠的,UDP是不可靠的;

  3. TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;

  4. TCP是面向字节流的,UDP是面向报文的;

  5. TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;

  6. TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;


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

如果采用两次握手,那么只要服务器发送确认数据包就会建立连接,但由于此时客户端并未响应服务器端请求,那么此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用握手,服务器端没有收到来自客户端的再次确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。


5. 说一下 tcp 粘包是怎么产生的?

tcp 粘包问题主要是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。tcp粘包 可能发生在发送端或者接收端,分别来看各种产生粘包的原因:

  • 发送端粘包:发送端需要等缓冲区满才发送出去,造成粘包
  • 接收方粘包:接收方不及时接收缓冲区的包,造成多个包接收。

详细请看: tcp 粘包问题


6. OSI 的七层模型都有哪些?

  • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
  • 数据链路层:负责建立和管理节点的链路。
  • 网络层:通过路由选择算法,为报文或分组通过子网选择最适当的路径。
  • 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
  • 会话层:向两个实体的表示层提供建立和使用连接的方法。
  • 表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密等。
  • 应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。

7. get 和 post 请求有什么区别?

  1. 从功能上讲:get 一般用来获取服务器上的资源,post 一般用户更新服务器上的资源。
  2. 从 REST 服务角度上说:get 是幂等的,即读取同一个资源,总是得到相同的数据。而 post 不是幂等的,因为每次请求对资源的改变并不是相同的;进一步讲,get 不会改变服务器上的资源,而 post 会对服务器资源进行改变。
  3. 从请求参数形式上看:get 请求的数据会附在 URL 之后,即将请求数据放置在 HTTP 报文的请求头中,以 ?分割URL和传输数据,参数直接用 & 连接。而 post 请求会把提交的数据放置在HTTP请求的报文的请求体中。
  4. 从安全性讲:post 的安全性要比 get 的安全性高,因为 get 请求提交的数据将明文出现在url 上,而post请求参数则被封装到请求体中,相对更安全。
  5. 从请求的大小看:get请求的长度受限于游览器或服务器对URL长度的限制,运行发送的数据量比较小,而post请求则是没有大小限制的。

8. 如何实现跨域?

实现跨域有以下几种方案:

  • 服务器端运行跨域 设置 CORS 等于*;
  • 在单个接口使用注解 @CrossOrigin 运行跨域;
  • 使用 jsonp 跨域;

9. 说一下 JSONP 实现原理?

jsonp:JSON with Padding,它是利用 script 标签的 src 连接可以访问不同源的特性,加载远程返回的“JS 函数”来执行的。

计算机网络常见问题总结相关推荐

  1. 【总结】计算机网络常见问题

    1.TCP/IP协议与OSI协议   相互通信的两个计算机系统必须高度协调工作才行,而这种"协调"是相当复杂的. "分层"可将庞大而复杂的问题,转化为若干较小的 ...

  2. 计算机网络常见问题归纳

    目录 一,tcp三次握手四次挥手 二,网络层七层协议 三,输入url后发生了什么? 四,封装和分用 五,HTTPS和HTTP的区别主要如下 六,TCP提供可靠传输的工作原理和实现过程 七,Get和Po ...

  3. 计算机网络怎么面试问题,【面试】计算机网络常见问题

    0 0 (1)使人们更容易探讨和理解协议的许多细节    (2)创建更好的集成环境     (3)把复杂的网络划分成更为容易管理的层,减少复杂性   (4)较低层为较高层提供服务 第一次握手:客户端将 ...

  4. 《计算机网络常见问题》

    四次挥手中TIME_WAIT出现的时候以及作用. 主动断开连接的一方收到对端的连接释放报文段就进入TIME_WAIT状态.假设A是主动断开的一方,另一方是B 作用: (1)保证A发送的最后一个确认报文 ...

  5. 快速过一遍计算机网络!

    本文公众号来源:JavaGuide  作者:Snailclimb 这篇文章我在准备秋招时就一直躺在我的收藏夹了,可以快速将计算机网络过一遍,分享一下~~ 文章目录结构:  一 OSI与TCP/IP各层 ...

  6. 搞定计算机网络面试,看这篇就够了

    目录 一 OSI与TCP/IP各层的结构与功能,都有哪些协议 1 应用层 2 运输层 3 网络层 4 数据链路层 5 物理层 二 TCP三次握手和四次挥手(面试常客) 为什么要三次握手 为什么要传回s ...

  7. 后端开发面试自我介绍_一定是最适合你的后端面试指南

    原标题:一定是最适合你的后端面试指南 本文转自公众号:Java面试通关手册 友情提示:阅读+独立思考的方式学习本文效果最佳.本文干货较多,如果大家觉得不错请转发给可能需要本文的朋友哦!最后,不要忘记给 ...

  8. 可能是一份最适合你的后端面试指南(部分内容前端同样适用)| 掘金技术征文...

    本文系掘金首发,禁止转载哦! 如果觉得文章内容不错的话,欢迎为我转身,啊!不对,是给我一个赞!点赞之后会有惊喜哦! 看本文之前,推荐给大家一个阿里云双11活动,真的非常非常非常推荐,对于新人阿里云真的 ...

  9. [总结]Java-Mysql你所需要的面试题集内容

    本文转载自:https://segmentfault.com/a/1190000016520312 在原文基础上,按照markdown优化了排版 一 简历该如何写 1.1 为什么说简历很重要? 1.2 ...

最新文章

  1. Science:若DTC基因检测达2%成年人群,几乎所有人的身份或将无所遁形
  2. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
  3. mysql什么时候用in,什么时候用exists
  4. 数据仓库与联机分析处理笔记
  5. python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
  6. 论文精读 | slam中姿态估计的图优化方法比较
  7. 八十第五个冠军(复制和匹配的字符串)
  8. 《Scala机器学习》一一1.1 Scala入门
  9. Python六大开源框架对比:Web2py略胜一筹(转)
  10. Mybatis mapper.xml中常用标签详解
  11. 数组及引用类型内存分配
  12. 分享一点写掘金小册的经验和心得
  13. ubuntu下android刷机,Ubuntu下android刷机教程
  14. IOS 插屏广告弹窗
  15. 1:使用递归函数计算1到n之和
  16. echarts饼图自定义设置颜色的三种方式
  17. 追光者计算机 音乐,追光者歌曲
  18. 微信小程序获取手机号码第一次失败第二次成功的解决方案
  19. NotePad++ 打开多个文件
  20. STO解析:从STO概念到STO生态圈

热门文章

  1. Java Streams,第 4 部分: 从并发到并行
  2. 从头开始敲代码之《从BaseApplication/Activity开始(五)》(自定义控件,实现点击/滑动翻页)...
  3. 《Genesis-3D游戏引擎系列教程-入门篇》五:脚本
  4. (转)Objective-C Autorelease Pools(自动释放池)详解
  5. JVM编译时和运行时状态
  6. [JavaScript]只需一行代码,轻松搞定快捷留言功能
  7. SDUT - 2609 A-Number and B-Number(二分+数位dp)
  8. 八进制小数转化为十进制小数
  9. 15.枚举enum.rs
  10. 消息队列中点对点与发布订阅区别