计算机网络高频面试考点

一、五层协议

在这里插入图片描述

1、应用层

  • 应用层的任务是通过应用进程间的交互来完成特定网络应用
  • 应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则
  • 例如: 域名系统DNS、支持万维网应用的HTTP协议、支持电子邮件的SMTP协议
  • 我们把应用层交互的数据单元称为报文

2、运输层

  • 运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务
  • 应用进程利用该服务传送应用层报文
  • 由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。
    • 复用:多个应用层进程可同时使用下面运输层的服务
    • 分用:运输层把收到的信息分别交付上面应用层中的相应进程

协议:

  • 传输控制协议TCP: 提供面向连接的、可靠的数据传输服务
  • 用户数据协议UDP:提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性)

3、网络层

任务是选择合适的网间路由和交换结点,确保数据及时传送

4、数据链路层

在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)

数据链路层不仅要检错,而且还要纠错

二、TCP三次握手、四次挥手

在这里插入图片描述

SYN 同步序列编号(Synchronize Sequence Numbers)

1、为什么要三次握手

三次握手的目的是:建立可靠的通信信道, 双方确认自己与对方的发送与接收是正常的

  1. 第一次握手:
    1. Client什么都不能确认
    2. Server确认对方发送正常、自己接收正常
  2. 第二次握手:
    1. Client确认自己发送、接收正常,对方发送、接收正常
    2. Server确认对方发送正常、自己接收正常
  3. 第三次握手:
    1. Client确认自己发送、接收正常,对方发送、接收正常
    2. Server确认自己发送、接收正常,对方发送、接收正常

2、第二次握手传回了ACK,为什么还要传回SYN

  • 接收端传回发送端所发送的ACK是为了告诉客户端,接收到的信息确实就是你发送的信号,表明从客户端到服务端的通信是正常的
  • 回传SYN则是为了建立并确认服务端到客户端的通信

3、为什么要四次挥手

在这里插入图片描述

任何一方都阔以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接

三、TCP、UDP协议的区别

TCPUDP
是否面向连接面向连接无连接
传输可靠性可靠不可靠
传输形式字节流数据报文段
传输效率
所需资源
应用场景要求通信数据可靠
(如文件传输、邮件传输)
要求通信速度高
(如域名转换)
首部字节20-608
  • UDP:QQ语音、QQ视频、直播
  • TCP:文件传输、发送和接收邮件、远程登录

四、TCP协议如何保证可靠传输

  • 应用数据被分割成TCP认为最适合发送的数据块
  • TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层
  • 校验和:TCP保持它首部和数据的校验和(端到端的校验),检测数据在传输过程中的任何变化
  • TCP的接收端会丢弃重复的数据
  • 流量控制:TCP利用滑动窗口实现流量控制
  • 拥塞控制:当网络拥塞时,减少数据的发送
    • 慢开始
    • 拥塞避免
    • 快重传
    • 快恢复
  • ARQ协议:每发完一个分组就停止发送,等待对方确认,在收到确认后再发下一个分组
  • 超时重传:当TCP发出一个段后,启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段

五、在浏览器中输入url地址—过程

  1. 浏览器查找域名的IP地址
  2. TCP连接
  3. 浏览器向web服务器发送一个HTTP请求
  4. 服务器处理请求
  5. 服务器发回一个HTML响应
  6. 浏览器解析渲染页面
  7. 连接结束

协议:DNS、TCP、IP、OSPF(开放最短路径优先协议)、ARP、HTTP

六、状态码

在这里插入图片描述

301重定向是一种永久重定向、302跳转是暂时的跳转

  • 在使用域名跳转的情况下,301重定向比较常用。搜索引擎在抓取新内容的时候,还会把原本的旧网址用重定向之后的新网址代替。就比如说,我们访问 http://www.baidu.com ,网站页面会跳转到 https://www.baidu.com,发送请求之后,就会返回301状态码,然后返回一个位置以提示新地址,浏览器就会访问这个新地址。
  • 302跳转,可以在登陆用户访问用户中心的时候重定向到登录页面。接着,搜索引擎就会获取新内容,并保留旧的URL。由于服务器返回的是302代码,搜索引擎会认为新的网址只是暂时的。

规范化网站URL的常用的方法是使用301重定向,而不是302跳转。

七、各种协议与HTTP协议之间的关系

客户端想要访问页面

  1. DNS获取IP地址
  2. 客户端:HTTP协议生成针对目标Web服务器的请求报文
  3. 客户端:TCP协议将请求报文分割成报文段、可靠传输(方便通信)
  4. IP协议搜索对方的地址,边中转边传送
  5. 服务器:TCP协议接收报文段、重组报文段
  6. 服务器:HTTP协议对Web服务器请求的内容的处理
  7. (请求的处理结果也同样利用TCP/IP通信协议向用户进行回传)

在这里插入图片描述

八、HTTP长连接、短连接

HTTP/1.0中默认使用短连接

  • 客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • 当客户端浏览器访问的某个HTML或其他类型的web页中包含有其他的Web资源(js、css、图像等),每遇到这样的web资源,浏览器便会重新建立一个HTTP会话

HTTP/1.1默认使用长连接,用以保持连接特性

  • 使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive
  • 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接
  • Keep-ALive不会永久保持连接,有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
  • 实现长连接需要客户端和服务端都支持长连接

九、HTTP是不保存状态的协议,如何保存用户状态

  • HTTP是一种不保存状态,即无状态(stateless)协议。

  • HTTP协议自身不对请求和响应之间的通信状态进行保存。

Session机制的存在就是为了解决这个问题,Session主要作用就是用过服务端记录用户的状态。

典型场景就是购物车,当你要添加商品到购物车时,系统不知道是哪个用户操作的(HTTP协议无状态);服务端给特定的用户创建特定的Session之后就可以标识这个用户并且跟踪这个用户了(在一定时间内保存session,超过时间则销毁)

保存Session:内存、数据库

实现Session跟踪:大多情况下,通过Cookie中附加一个Session ID来跟踪

Cookie被禁用怎么办----利用URL重写吧Session ID直接附加在URL路径后面

十、Cookie的作用?和Session的区别

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie一般用来保存用户信息

  • 我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了
  • 一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写)
  • 登录一次网站后访问网站其他页面不需要重新登录

Session主要作用就是通过服务端记录用户的状态,场景在

Cookie 数据保存在客户端(浏览器端)

Session 数据保存在服务器端。

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

十一、HTTP/1.0和HTTP/1.1区别

  • 连接
    • 1.0:短连接,每一次建立或者断开连接都需要三次握手四次挥手
    • 1.1:长连接,默认开启Connection:keep-alive,持续连接有非流水线方式和流水线方式
  • 错误状态响应码
    • 1.1新增24个错误状态响应码
      • 409:请求的资源与资源当前的状态发生冲突
      • 410:服务器上的某个资源被永久性的删除
  • 缓存处理
    • 1.0:主要使用header中if-Modified-Since、Expires来作为缓存判断的标准
    • 1.1:引入了更多的缓存控制策略:Entity tag、If-Unmodified-Since、If-Match
  • 带宽优化及网络连接的使用
    • 1.0:存在浪费带宽的现象
      • 例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能
    • 1.1:在请求头引入了range头域
      • 允许只请求资源的某个部分,即返回码是206(Partial Content),方便了开发者自由的选择以便于充分利用带宽和连接

十二、URI和URL区别

  • URI:Uniform Resource Identifier 统一资源标志符,唯一标识一个资源
  • URL:Uniform Resource Location 统一资源定位符,可以提供该资源的路径。是一种具体的URI

URI==身份证号

URL==家庭住址

URL是一种具体的URI,不仅唯一标识资源,还提供定位该资源的信息。

十三、HTTP和HTTPS区别

  • 端口
    • HTTP: 默认80
    • HTTPS:默认443
  • 安全性和资源消耗
    • HTTP:
      • 运行在TCP之上
      • 所有的传输的内容都是明文,客户端和服务器都无法验证对方的身份
    • HTTPS:
      • 运行在SSL/TLS上的HTTP协议,SSL/TLS运行在TCP上
      • 所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密

供定位该资源的信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值