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

计算机网络八股总结

这里写目录标题

    • 网络模型划分(五层和七层)及每一层的功能
      • 五层网络模型
      • 七层网络模型(OSI模型)
    • ==三次握手和四次挥手具体过程及原因==
      • 三次握手
      • 四次挥手
    • TCP/IP协议组成
    • ==UDP协议与TCP/IP协议的区别==
    • Http协议相关知识
    • 网络地址,子网掩码等相关计算

网络模型划分(五层和七层)及每一层的功能

五层网络模型

应用层:负责处理网络应用程序,如电子邮件、文件传输和网页浏览。主要协议包括HTTP、FTP、SMTP等。
传输层:提供端到端的通信服务,确保数据的可靠传输。主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。
网络层:负责数据包的路由和转发,使数据包能够通过网络从源主机传输到目的主机。主要协议是IP(因特网协议)。
链路层(数据链路层):在物理层提供的服务基础上,建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法。
物理层:负责比特流的物理传输,即处理数据传输的物理介质,如网线、网卡等。
在这里插入图片描述

七层网络模型(OSI模型)

物理层:与五层模型中的物理层相同,负责比特流的物理传输。
数据链路层:与五层模型中的链路层相同,负责建立数据链路连接,传输帧数据。
网络层:与五层模型中的网络层相同,负责数据包的路由和转发。
传输层:与五层模型中的传输层相同,提供端到端的通信服务。
会话层:负责在两个通信实体之间建立、管理和终止会话。
表示层:处理数据表示和编码,确保不同系统间的数据能够正确交换。
应用层:提供网络应用服务,如文件传输、电子邮件等。

三次握手和四次挥手具体过程及原因

三次握手

第一次握手:客户端向服务器发送一个SYN包,并附带一个随机生成的序列号,请求建立连接。
第二次握手:服务器收到SYN包后,返回一个SYN-ACK包作为应答,同时包含一个确认序列号(对客户端SYN包的序列号加1)和一个服务器自己的随机序列号。
第三次握手:客户端收到SYN-ACK包后,返回一个ACK包,该包的序列号是对服务器SYN-ACK包中的确认序列号加1。至此,三次握手完成,连接建立。

为什么要三次握手?
在只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据…问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,"三次握手"很有必要!

四次挥手

第一次挥手:客户端发送一个FIN包给服务器,表示客户端不再发送数据。
第二次握手:服务器收到FIN包后,发送一个ACK包给客户端,表示已收到客户端的关闭请求。
第三次握手:服务器完成数据传输后,发送一个FIN包给客户端,表示服务器也不再发送数据。
第四次握手:客户端收到服务器的FIN包后,发送一个ACK包给服务器,表示已收到服务器的关闭请求。至此,四次挥手完成,连接关闭。

为什么要四次挥手?
试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。
在这里插入图片描述
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:“acknowledge"确认标志”;FIN:"Finally"结束标志。

TCP/IP协议组成

TCP/IP协议(传输控制协议/因特网协议)并不直接对应OSI模型的某一层或几层,而是更接近于一个协议族的概念,它涵盖了从网络接口层到应用层的多个协议。不过,为了简化讨论,我们可以将TCP/IP协议族按照其功能划分成几个层次,这些层次与OSI模型有一定的对应关系,但并非严格一致。

TCP/IP协议族通常被划分为以下四个层次(也有说法将其划分为五层,但这里我们采用四层的划分方式):

网络接口层(对应OSI模型的物理层和数据链路层):
这一层负责数据在物理网络上的传输,包括数据的封装成帧、帧的同步、差错控制等。
具体的协议取决于物理网络类型,如以太网、令牌环网等。

网络层(对应OSI模型的网络层):
主要负责数据包的路由和转发,确保数据包能够从源主机传输到目的主机。
最核心的协议是IP(因特网协议),它定义了数据包的格式、寻址方式和路由机制。
其他协议还包括ICMP(因特网控制消息协议)、IGMP(因特网组管理协议)、ARP(地址解析协议)和RARP(逆地址解析协议)等。

传输层(对应OSI模型的传输层):
提供端到端的通信服务,确保数据的可靠传输或提供无连接的数据报服务。
主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP则是一种无连接的、不可靠的、基于数据报的传输层通信协议。

应用层(对应OSI模型的应用层、表示层和会话层):
负责处理网络应用程序,提供具体的网络服务。
常见的应用层协议包括HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、POP3(邮局协议版本3)、IMAP(互联网邮件访问协议)、Telnet(远程终端协议)、SSH(安全外壳协议)、DNS(域名系统)等。

需要注意的是,TCP/IP协议族中的每一层都依赖于其下一层提供的服务,并为其上一层提供服务。同时,不同层之间的协议是相互独立的,每一层都处理自己的数据和服务,并通过接口与相邻层进行交互。这种分层的设计使得TCP/IP协议族具有良好的可扩展性和灵活性。

UDP协议与TCP/IP协议的区别

连接性:TCP/IP是面向连接的协议,而UDP是无连接的协议。
可靠性:TCP/IP提供可靠的传输服务,通过三次握手和四次挥手确保数据的完整性和顺序;而UDP不保证数据的可靠性,可能会出现丢包、乱序等问题。
应用场景:TCP/IP适用于对可靠性要求较高的场景,如文件传输、网页浏览等;而UDP适用于对实时性要求较高、对可靠性要求不高的场景,如视频直播、语音通话等。

Http协议相关知识

HTTP(超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它是基于TCP协议之上的应用层协议,由请求和响应组成,采用客户端-服务器模型。HTTP是无状态的,即每次请求都是独立的,服务器不会保留之前请求的信息。HTTP请求由请求行、请求头部和请求体组成,响应由状态行、响应头部和响应体组成。

HTTP 协议包括哪些请求?

GET:请求读取由URL所标志的信息。

POST:给服务器添加信息(如注释)。

PUT:在给定的URL下存储一个文档。

DELETE:删除给定的URL所标志的资源。

HTTP 中, POST 与 GET 的区别

1)Get是从服务器上获取数据,Post是向服务器传送数据。
2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。
4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

I. 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。

II. 幂等 的意味着对同一URL的多个请求应该返回同样的结果。

网络地址,子网掩码等相关计算

随着互连网应用的不断扩大,原先的IPv4的弊端也逐渐暴露出来,即网络号占位太多,而主机号位太少,所以其能提供的主机地址也越来越稀缺,目前除了使用NAT在企业内部利用保留地址自行分配以外,通常都对一个高类别的IP地址进行再划分,以形成多个子网,提供给不同规模的用户群使用。

这里主要是为了在网络分段情况下有效地利用IP地址,通过对主机号的高位部分取作为子网号,从通常的网络位界限中扩展或压缩子网掩码,用来创建某类地址的更多子网。但创建更多的子网时,在每个子网上的可用主机地址数目会比原先减少。

什么是子网掩码?

子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

在计算子网掩码时,我们要注意IP地址中的保留地址,即" 0"地址和广播地址,它们是指主机地址或网络地址全为" 0"或" 1"时的IP地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。

子网掩码的计算:

对于无须再划分成子网的IP地址来说,其子网掩码非常简单,即按照其定义即可写出:如某B类IP地址为 10.12.3.0,无须再分割子网,则该IP地址的子网掩码255.255.0.0。如果它是一个C类地址,则其子网掩码为 255.255.255.0。其它类推,不再详述。下面我们关键要介绍的是一个IP地址,还需要将其高位主机位再作为划分出的子网网络号,剩下的是每个子网的主机号,这时该如何进行每个子网的掩码计算。

下面总结一下有关子网掩码和网络划分常见的面试考题:

利用子网数来计算

在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。

  1. 将子网数目转化为二进制来表示;

如欲将B类IP地址168.195.0.0划分成27个子网:27=11011;

  1. 取得该二进制的位数,为N;

该二进制为五位数,N = 5

  1. 取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1即得出该IP地址划分子网的子网掩码。

将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0

利用主机数来计算

如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:

  1. 将主机数目转化为二进制来表示;

700=1010111100

  1. 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位;

该二进制为十位数,N=10;

  1. 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255,然后再从后向前将后 10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。

还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码。这也可按上述原则进行计算。

比如一个子网有10台主机,那么对于这个子网需要的IP地址是:

10+1+1+1=13

注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。

因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。

如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为14+1+1+1=17,17大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224。

相关文章:

计算机网络八股总结

这里写目录标题 网络模型划分&#xff08;五层和七层&#xff09;及每一层的功能五层网络模型七层网络模型&#xff08;OSI模型&#xff09; 三次握手和四次挥手具体过程及原因三次握手四次挥手 TCP/IP协议组成UDP协议与TCP/IP协议的区别Http协议相关知识网络地址&#xff0c;子…...

AMD CMD UMD CommonJs ESM 的历史和区别

这几个东西都是用于定义模块规范的。有些资料会提及到这些概念&#xff0c;不理清楚非常容易困惑。 ESM&#xff08;ES Module&#xff09; 这个实际上我们是最熟悉的&#xff0c;就是ES6的模块功能。出的最晚&#xff0c;因为是官方出品&#xff0c;所以大势所趋&#xff0c…...

人工智能数据基础之微积分入门-学习篇

目录 导数概念常见导数和激活导数python代码绘制激活函数微分概念和法则、积分概念微积分切线切面代码生成案例链式求导法则反向传播算法(重要) 一、概念 二、常见导数及激活导数 常见激活函数及其导数公式&#xff1a; 在神经网络中&#xff0c;激活函数用于引入非线性因素&…...

【PSINS】ZUPT代码解析(PSINS_SINS_ZUPT)|MATLAB

这篇文章写关于PSINS_SINS_ZUPT的相关解析。【值得注意的是】:例程里面给的这个m文件的代码,并没有使用ZUPT的相关技术,只是一个速度观测的EKF 简述程序作用 主要作用是进行基于零速更新(ZUPT)的惯性导航系统(INS)仿真和滤波 什么是ZUPT ZUPT是Zero Velocity Update(…...

多态(上)【C++】

文章目录 多态的概念多态的实现多态产生的条件什么是虚函数&#xff1f;虚函数的重写和协变重写协变 析构函数的重写为什么有必要要让析构函数构成重写&#xff1f; 多态的概念 C中的多态是面向对象编程&#xff08;OOP&#xff09;的一个核心特性&#xff0c;指的是同一个接口…...

如何驱动一枚30年前的音源芯片,YMF288驱动手记 Part2

一些问题 在上一篇里面虽然策划了想要驱动YMF288所需要做的事情以及目标。但是&#xff0c;在板子打出来后&#xff0c;我在进一步的研究中&#xff0c;发现我犯了个错误&#xff0c;那就是YMF288并不是使用现在很多轻量化的嵌入式&#xff0c;比如ESP32常用的I2S协议的&#x…...

yarn webpack脚手架 react+ts搭建项目

安装 Yarn 首先&#xff0c;确保你已经安装了 Node.js 和 Yarn。如果还没有安装 Yarn&#xff0c;可以通过以下命令安装&#xff1a; npm install -g yarn创建项目 使用 create-react-app 脚手架创建一个带有 TypeScript 的项目&#xff0c;node更新到最新版&#xff0c;并指定…...

防蓝光护眼灯有用吗?五款防蓝光效果好的护眼台灯推荐

现在孩子的很多兴趣班和课后辅导班都是在线上举行&#xff0c;通常对着手机电脑长时间。电子产品有大量蓝光和辐射&#xff0c;会伤害到孩子的眼睛。但为了学习&#xff0c;也是没办法。护眼台灯的出现可以让孩子们的眼睛得到保护&#xff0c;防止蓝光对眼睛的伤害。防蓝光护眼…...

Mac使用Elasticsearch

下载 Past Releases of Elastic Stack Software | Elastic 解压tar -xzvf elasticsearch-8.15.1-darwin-x86_64.tar.gz 修改配置文件config/elasticsearch.yml xpack.security.enabled: false xpack.security.http.ssl: enabled: false 切换目录 cd elasticsearch-8.15.1/…...

DevOps -CI/CD 与自动化部署

DevOps - CI/CD 与自动化部署详解 DevOps 是一种结合开发&#xff08;Development&#xff09;与运维&#xff08;Operations&#xff09;的方法论&#xff0c;旨在通过工具和文化变革&#xff0c;促进软件开发和运维之间的协作&#xff0c;提升软件交付的效率、质量和稳定性。…...

单体架构系统是不是已经彻底死亡?

单体架构系统并未“彻底死亡”&#xff0c;尽管在复杂和大规模的应用场景中&#xff0c;它可能不再是首选的架构模式。单体架构系统&#xff0c;也称为巨石系统&#xff08;Monolithic&#xff09;&#xff0c;在软件发展过程中是最广泛的架构风格之一&#xff0c;出现时间最早…...

mathorcup发邮件:参赛必看邮件撰写技巧?

mathorcup发邮件的注意事项&#xff1f;如何使用mathorcup发信&#xff1f; 无论是提交参赛作品、咨询比赛规则&#xff0c;还是与组委会沟通&#xff0c;一封清晰、专业的邮件都能为你赢得更多机会。AokSend将为你详细介绍mathorcup发邮件的撰写技巧&#xff0c;帮助你在比赛…...

ESP01烧入AT出厂固件

ESP01是一种常见的WIFI模块&#xff0c;其核心是esp8266&#xff0c;常用于给主控拓展WIFI功能&#xff0c;因其体积较小、集成度高、造价便宜&#xff0c;常受到消费者喜爱&#xff0c;ESP01常用的开发方式有两种&#xff0c;一种是利用基于Arduino框架作为独立设备开发&#…...

Qt 开发:深入详解 Qt 的信号与槽机制——彻底搞懂QT信号与槽

一、概念 Qt 的信号与槽&#xff08;Signals and Slots&#xff09;机制是一个用于对象间通信的核心特性。这个机制使得对象能以松散耦合的方式进行通信&#xff0c;从而提升了代码的模块化和可维护性。 信号&#xff08;Signal&#xff09;&#xff1a;对象状态的变化或事件…...

民间故事推广系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;民族文化管理&#xff0c;节日类型管理&#xff0c;传统节日管理&#xff0c;故事类型管理&#xff0c;民间故事管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首…...

关于武汉芯景科技有限公司的IIC缓冲器芯片XJ4307开发指南(兼容LTC4307)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.总线超时&#xff0c;自动断开连接 当 SDAOUT 或 SCLOUT 为低电平时&#xff0c;将启动内部定时器。定时器仅在相应输入变为高电平时重置。如果在 30ms &#xff08;典型值&#xff09; 内没有变为高…...

C++ 异常

这里写目录标题 1.C语言传统的处理错误的方式2.C异常概念3.异常的用法3.1 异常的抛出和捕获3.2 异常的重新抛出3.3异常安全3.4 异常规范 4.自定义异常体系5.标准库异常体系6.异常的优缺点 1.C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序&#xff0c…...

ST官方 VSCode 插件安装及配置工程参考

写在前头 VSCode的用法和插件是月初参加ST官方北京站举办的线下培训中&#xff0c;厂家AE工程师给我们讲的&#xff0c;不同于已经很多人用的&#xff08;并且一直在吵的&#xff09;keil assistant什么的&#xff0c;用的是CMake编译&#xff0c;抛弃了原有的keil&#xff0c;…...

使用Pandas读取和写入数据库的Python函数实现

使用Pandas读取和写入数据库的Python函数实现 Pandas是一个强大的数据处理和分析库,广泛应用于数据科学和机器学习领域。结合数据库操作,Pandas可以极大地简化数据的读取和写入过程。本文将详细介绍如何使用Pandas实现读取和写入数据库的函数,涵盖数据库连接、数据读取、数…...

Redis——常用数据类型hash

目录 hash常用命令hsethgethdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhdecrby 哈希的编码方式哈希的应用 hash 常用命令 hset HSET key field value [field value ...]//时间复杂度O(1) //返回值&#xff1a;设置成功的键值对的个数hget HGET key field//hdel HDEL key…...

基于Python实现一个庆祝中秋节的小程序

功能包括&#xff1a; 使用复杂的库来计算农历日期&#xff1a;可以使用 lunarcalendar 库来计算农历日期。提供更多的祝福语&#xff1a;可以通过随机选择祝福语来增加趣味性。加入图形用户界面 (GUI)&#xff1a;可以使用 tkinter 库来创建一个简单的图形用户界面。 我们可…...

近期最值得买的数码好物有什么?2024兼具功能和实用性的好物分享

在如今这个科技飞速发展的时代&#xff0c;数码好物层出不穷&#xff0c;它们为我们带来了前所未有的便捷与乐趣。而对于学生党和上班族来说&#xff0c;挑选到既实用又性价比高的数码好物&#xff0c;更是能为学习和办公生活增添一抹亮丽的色彩。其中&#xff0c;电容笔便是备…...

云服务器中的MinIO 配置 HTTPS 过程(图文)

目录 1. 基本知识2. 实战3. 彩蛋1. 基本知识 具体证书的格式如下: 私钥:private.key公钥:public.crt (公钥以pem格式结尾,可直接改为crt格式)证书和私钥文件的命名和路径应该是: 证书文件: ~/.minio/certs/public.crt 私钥文件: ~/.minio/certs/private.key使用了自定义…...

注册安全分析报告:熊猫频道

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

计算机毕业设计 自习室座位预约系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

2000-2021年3月海关数据库

2000-2021年3月海关数据库 1、时间&#xff1a;2000-2021年3月 2、指标&#xff1a;2000-2015数据变量包括&#xff1a;年份、截止日期、进出口分类代码、进出口分类名称、HS商品编码、HS商品名称、金额_美元、数量、价格、经营单位代码、经营单位名称、经营单位地址、电话、…...

【YashanDB知识库】archivelog磁盘满导致数据库abnormal

本文转自YashanDB官网&#xff0c;具体内容可见archivelog磁盘满导致数据库abnormal 【问题分类】功能使用 【关键字】磁盘空间满&#xff0c;archivelog日志&#xff0c;archivelog自动清理 【问题描述】数据库状态变更为abnormal&#xff0c;检查V$DIAG_INCIDENT视图&#…...

远程跨境传输大文件如何做到安全又稳定?

在当今全球化的商业环境中&#xff0c;企业跨境传输大文件的需求日益增长。这不仅涉及到数据的快速迁移&#xff0c;还包括了安全性、稳定性和合规性等多重挑战。本文将探讨企业在跨境传输大文件时可能遇到的问题&#xff0c;以及在传输过程中应注意的事项&#xff0c;并重点介…...

JSON报文根据正则过滤消息

有时候业务系统在接收外部传过来的JSON报文&#xff0c;可能需要根据某个标识来判断是否是自己系统的消息&#xff0c;不是需要过滤。正常我们可能是先将JSON反序列化为具体实体类(例: A a JSON.parseObject(body,A.class))&#xff0c;然后获取具体字段来判断。此方法面对接收…...

BOM编程

什么是 BOM&#xff1f; BOM&#xff08;Browser Object Model&#xff09;是浏览器提供的对象和方法的集合&#xff0c;允许开发者操作浏览器窗口、页面跳转、URL、浏览器历史记录、用户设备信息等。window 对象是 BOM 的顶层对象&#xff0c;所有 BOM API 都直接或间接作为 …...