计算机网络八股总结

embedded/2024/12/23 1:20:58/

这里写目录标题

    • 网络模型划分(五层和七层)及每一层的功能
      • 五层网络模型
      • 七层网络模型(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。


http://www.ppmy.cn/embedded/111497.html

相关文章

鸿蒙轻内核M核源码分析系列十九 Musl LibC

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…

基于Python的B站热门视频可视化分析与挖掘系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着互联网视频平台的迅猛发展&#xff0c;如何从海量的数据中提炼出有价值的信息成为了内容创作者们关注的重点之一。B站&#xff08;哔哩哔哩&#xff09;作为国内领先的年轻人文化社区&#xf…

ThreeJS入门(002):学习思维路径

查看本专栏目录 - 本文是第 002篇入门文章 文章目录 如何使用这个思维导图 Three.js 学习思维导图可以帮助你系统地了解 Three.js 的各个组成部分及其关系。下面是一个简化的 Three.js 学习路径思维导图概述&#xff0c;它包含了学习 Three.js 的主要概念和组件。你可以根据这个…

首批通过!华为云CodeArts Snap智能开发助手通过可信AI智能编码工具评估,获当前最高等级

近日&#xff0c;华为云CodeArts Snap智能开发助手在中国信通院组织的智能编码工具首轮评估中&#xff0c;最终获得4级评级, 成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第2部分&#xff1a;智能开发能力》为依据&…

【Kubernetes】常见面试题汇总(十三)

目录 39.简述 Kubernetes Scheduler 使用哪两种算法将 Pod 绑定到 worker 节点&#xff1f; 40.简述 Kubernetes kubelet 的作用&#xff1f; 41.简述 Kubernetes kubelet 监控 Worker 节点资源是使用什么组件来实现的&#xff1f; 39.简述 Kubernetes Scheduler 使用哪两种算…

从 Postgres 到 ClickHouse:数据建模指南

本文字数&#xff1a;7149&#xff1b;估计阅读时间&#xff1a;18 分钟 作者&#xff1a;Sai Srirampur 本文在公众号【ClickHouseInc】首发 上个月&#xff0c;我们收购了专注于 Postgres CDC 的 PeerDB。PeerDB 使得数据从 Postgres 复制到 ClickHouse 变得既快速又简单。Pe…

【docker npm】npm 私库

1.部署环境 window 11 x64Docker Desktop 4.34.1 (166053) Docker Engine v27.2.0 1.1.Docker 镜像源 1.1.1.Docker Engine 配置 {"builder": {"features": {"buildkit": true},"gc": {"defaultKeepStorage": "32…

下一代 AI 教育:知识图谱RAG + 多智能体,听老师的话没前途,让老师听你的才是正道

下一代 AI 教育&#xff1a;知识图谱RAG 多智能体&#xff0c;听老师的话没前途&#xff0c;让老师听你的才是正道 下一代 AI 教育&#xff1a;基于最本质的用脑方式学习 理解 记忆&#xff1f;学习的 3 个层次文科&#xff1a;关联理解 关联分析 关联记忆秒背古诗古文商业…