IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络面经 -> 正文阅读

[网络协议]计算机网络面经

计算机网络面经

  1. 什么是网络协议,为什么要进行网络分层?

    网络协议是计算机在通信过程中要遵循的一些约定好的规则

    网络分层的原因:

    • 易于实现和维护,因为分层之间是独立的,层与层之间不会受到影响
    • 有利于相关标准的制定
  2. 计算机网络的各层协议及作用

在这里插入图片描述

  • 应用层:通过应用进程之间的交互来完成特定的网络作用,常见的应用层协议有域名系统DNS、HTTP协议等;

  • 表示层:表示层的主要作用是数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层所读取;

  • 会话层:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。

  • 传输层:负责两台主机进程之间的通信提供数据传输服务。主要协议:TCP和UDP

  • 网络层:选择合适的路由。主要协议:IP协议

  • 数据链路层:信道差错控制。主要协议:PPP等

  • 物理层:比特流传输。

    无论是哪种分层模式,TCP属于传输层,IP属于网络层,搞清楚这一点,别的就很简单!

  1. DNS域名管理服务:

    • DNS是因特网上域名和IP相互映射的一个分布式数据库,能够更方便地访问互联网。

    • 采用分布式的层次数据库模式

      重要:在浏览器中输入域名之后的过程:

      1. 在浏览器中输入www.baidu.com域名时,操作系统会先检查自己本地的hosts文件是否有这个域名的映射关系,如果有,就先调用这个ip地址映射,完成域名解析
      2. 如果hosts文件中没有,则查询本地DNS解析器缓存
      3. 还没有,去查找本地DNS服务器
      4. 还没有,本地服务器向根域名服务器发起查询请求,根域名服务器会告诉本地域名服务器去查询哪个顶级域名服务器。
      5. 本地域名服务器向顶级域名服务器发起查询请求,顶级域名服务器会告诉本地域名服务器去查找哪个权限域名服务器。
      6. 本地域名服务器向权限域名服务器发起查询请求,权限域名服务器告诉本地域名服务器www.baidu.com对应的ip地址
      7. 本地域名服务器告诉主机www.baoidu.com多对应的ip地址。
  2. TCP和UDP有什么区别

    协议名是否面向连接可靠性传输形式传输效率消耗资源应用场景首部字节
    TCP面向连接可靠字节流文件/邮件传输20~60
    UDP无连接不可靠数据报文段视频/语音传输8

TCP报文结构

UDP报文结构

?

  1. TCP的三次握手和四次挥手

    TCP的三次握手和四次挥手是通过头部的字段实现的,TCP头部包括32位序列号seq,32位的确认序号,还有一个ACK标志位。只有当ACK的标志位为1时,确认序号字段才有效,ack=seq+1

    标志位作用:

    • SYN:发起一个新连接
    • FIN:释放一个连接
    • ACK:确认序号有效

    三次握手:

    本质:为了确认发送端和接受端都具备收发信息的能力。

    重点:流畅叙述三次握手的流程以及其中字段的含义,并记住每次握手时接收端和发送端的状态

    建立连接的流程(三次握手):

    • 第一次握手:客户端发送syn包(syn=x)到服务器,并进入syn_wait状态,等待服务器确认;
    • 第二次握手:服务器收到syn包,必须确认客户的syn(ack=x+1),同时自己也发送一个SYN包(syn=y),即发送SYN+ACK,并进入SYN_RECV状态
    • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABILSHED状态,连接建立完成。
      关闭连接的流程(四次挥手)
    • 第一次挥手:主动关闭方发送一个FIN,用来关闭主动方和被动关闭方之间的数据传送,此时还可以接受数据。(我不会再给你发数据了)
    • 第二次挥手:被动关闭方接收到FIN之后,发送一个ACK给对方(收到)
    • 第三次挥手:被动关闭方发送一个FIN,用来关闭被动与主动之间的数据传送。(我也不会给你发数据了)
    • 第四次挥手:发送一个ACK(收到)

    TCP协议:三次握手、四次挥手过程详解1

?

关键:为什么要进行三次握手,中间出现问题了怎么办?

  • 第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
  • 第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。
  • 第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。

经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。 要注意的是,每次只有接收到包的一方可以做出结论。

出现问题:

  • 第一次握手失败:SYN传输失败,两边都不会申请资源。如果一段时间之后之前的SYN发送成功了,此时客户端只会接收它最后发送的SYN以及SYN+ACK回应,其它的一概忽略。
  • 第二次握手失败:服务器发送的SYN+ACK传输失败,客户端没有收到这条响应,不会申请资源,服务器会申请资源,在一段时间没有收到ACK之后,将资源释放
  • 第三次握手失败:如果第三次握手的ACK传输失败,服务器端会一直发送SYN+ACK包,一段时间后会释放资源。客户端觉得自己已经连接好了,一段时间后会给服务器发送数据,服务器会以RST对客户端进行响应(防止泛洪攻击)。

关键:为什么要进行四次挥手,中间出现问题了怎么办?

  • 第一次挥手:主动关闭方发出FIN,表示我不想再发数据了,但我还可以收数据(FIN_WAIT_1)

  • 第二次挥手:被动接收方表示收到(CLOSE_WAIT)

  • 第三次挥手:被动接收方表示我也不想发数据了(LAST_ACK)

  • 第四次挥手:主动关闭方回复收到(FIN_WAIT_2),等待2MSL之后,进入CLOSED

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:28:31  更:2021-08-26 12:30:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:18:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码