计算机网络八股总结

news2024/11/18 23:30:03

这里写目录标题

    • 网络模型划分(五层和七层)及每一层的功能
      • 五层网络模型
      • 七层网络模型(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.coloradmin.cn/o/2132859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端——标签二(超链接)

标签二 超链接标签&#xff1a;a 超链接&#xff0c;实现页面间的跳转和数据传输 a标签的属性 href&#xff1a;跳转路径&#xff08;url&#xff09;必须具备&#xff0c;表示点击后会跳转到哪个页面 target&#xff1a;页面打开方式。默认是 _self 如果是 _blank则用新的…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 02 配置 nodejs 淘宝镜像仓库

文章目录 为什么要配置淘宝镜像仓库呢如何查看镜像仓库如何配置镜像仓库 为什么要配置淘宝镜像仓库呢 主要是因为默认的镜像仓库是国外的&#xff0c;当我们使用 npm 安装依赖的时候会很慢或者失败&#xff0c;我们配置国内的镜像仓库这样就可以加速我们安装镜像的过程&#x…

突破瓶颈:Java并发编程的最佳实践与技巧,你了解了吗?

文章目录 1 什么是 Executor 和 ExecutorService &#xff1f;这两个接口有什么区别&#xff1f;2 java.util.concurrent 标准库中 ExecutorService 的可用实现是什么 &#xff1f;3 什么是 Java 内存模型&#xff08; JMM &#xff09;&#xff1f;描述下其目的和基本思想4 JM…

Dubbo精要

1、为什么需要 Dubbo&#xff1f; 分布式系统中的服务调用和协调问题&#xff1a;在分布式系统中&#xff0c;服务之间的相互依赖会导致复杂的通信和协调问题。Dubbo提供了高效的服务调用和自动注册、发现等功能&#xff0c;使得构建分布式应用程序更加容易。服务治理和服务调…

6 递归——509. 斐波那契数 ★

6 递归 509. 斐波那契数 斐波那契数列从0和1开始,后面的每一项数字都是前面两项数字的和。F(0) = 0,F(1) = 1,当n > 1时,F(n) = F(n − 1) + F(n − 2)。给定n,请计算 F(n)。 示例 1: 输入:n = 2 输出:1 解释:F(2) = F(1) + F(0) = 1 + 0 = 1 示例 2: 输入:n …

[000-01-008].第05节:OpenFeign特性-重试机制

我的后端学习大纲 SpringCloud学习大纲 1.1.重试机制的默认值&#xff1a; 1.重试机制默认是关闭的&#xff0c;给了默认值 1.2.测试重试机制的默认值&#xff1a; 1.3.开启Retryer功能&#xff1a; 1.修改配置文件YML的配置&#xff1a; 2.新增配置类&#xff1a; packa…

CentOs 入门必备基础知识详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个基于 Red Hat Enterprise Linux (RHEL) 源代码的开源操作系统&#xff0c;主要用于服务器和企业环境。下面是一个详细的入门知识…

JDBC数据库连接技术

JDBC数据库连接技术 基础篇 一、引言 1.1 数据的存储 我们在开发Java程序时&#xff0c;数据都是存储在内存中&#xff0c;属于临时存储&#xff0c;当程序停止或重启时&#xff0c;内存中的数据就丢失了&#xff01;我们为了解决数据的长期存储问题&#xff0c;有如下解决方…

【Prompt Enhancer】如何优化prompt的内容

背景 在使用LLM的时候&#xff0c;提示词的好坏对模型的输出质量影响很大&#xff0c;提示词又是一个复杂工程&#xff0c;要写出优秀的提示词&#xff0c;需要丰富的经验。正因如此&#xff0c;各类Agent平台都会有自己的提示词增强功能&#xff0c;帮助用户编写提示词。 最…

Linux驱动.之platform平台总线驱动框架(二),正点原子

第五十四章 platform设备驱动实验 我们在前面几章编写的设备驱动都非常的简单&#xff0c;都是对IO进行最简单的读写操作。像I2C、SPI、LCD等这些复杂外设的驱动就不能这么去写了&#xff0c;Linux系统要考虑到驱动的可重用性&#xff0c;因此提出了驱动的分离与分层这样的软件…

数据结构与算法-17高级数据结构_图论(迪杰斯特拉算法)

迪杰斯特拉算法 1 是什么&#xff1f; 迪杰斯特拉算法&#xff08;Dijkstra’s Algorithm&#xff09;&#xff0c;又称狄克斯特拉算法&#xff0c;是由荷兰计算机科学家埃德加狄克斯特拉&#xff08;Edsger Dijkstra&#xff09;于1959年提出的一种用于解决有权图中最短路径…

GPT-4与ChatGPT:人工智能对话的新时代【含国内可用gpt】

随着人工智能&#xff08;AI&#xff09;技术的不断突破&#xff0c;人与机器的交互方式正发生深刻的变革。在这股技术浪潮中&#xff0c;GPT-4和基于它的ChatGPT成为了令人瞩目的焦点&#xff0c;推动了对话式AI的快速发展。通过这些技术&#xff0c;我们不仅看到了AI在语言理…

【MySQL】MySQL和Workbench版本兼容问题

1、安装MySQL WorkBench 最新版本下载&#xff1a;https://dev.mysql.com/downloads/workbench/ 历史版本下载&#xff1a;https://downloads.mysql.com/archives/workbench/ 2、问题描述 本人在Windows下安装了一个旧版本的MySQL&#xff08;5.1&#xff09;&#xff0c;同…

全球NAND原厂闪存市场格局变化

根据市场研究机构TrendForce的最新跟踪报告&#xff0c;三星&#xff08;Samsung&#xff09;和SK海力士&#xff08;SK hynix-Solidigm&#xff09;在过去的一个季度中扩大了他们在NAND闪存市场的份额&#xff0c;这主要得益于抢占了铠侠&#xff08;Kioxia&#xff09;与西部…

Threejs之加载3D模型(下)

本文目录 前言一、代码示例1.1 FBXLoader1.1.1 代码1.1.2 效果1.1.3 动画1.1.3.1 动画效果 1.2 ColladaLoader1.2.1 代码1.2.2 效果 前言 本篇博客基于Threejs之加载3D模型&#xff08;上&#xff09;追加常用模型加载示例。 一、代码示例 1.1 FBXLoader 构造函数 FBXLoader(…

【C++指南】作用域限定符 :: 使用详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 1. 访问全局变量 2. 命名空间中的成员访问 3. 类的静态成员访问 4. 嵌套命名空间/类中的…

钾盐矿开采与加工过程中的机电设备选型及管理指南

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 在钾盐矿的开采和加工过程中&#xff0c;需要使用多种机电设备以确保生产的顺利进行。这些设备主要用于矿石开采、破碎、运输、选矿以及矿物产品的深加工等过程。以下是钾盐矿常用的一些机…

vulnhub靶机:Holynix: v1

下载 下载地址&#xff1a;https://www.vulnhub.com/entry/holynix-v1,20/ 打开虚拟机 选择下载解压之后的文件打开 新添加一张 NAT 网卡&#xff0c;mac 地址修改如下 00:0c:29:bc:05:de 给原来的桥接网卡&#xff0c;随机生成一个 mac 地址 然后重启虚拟机 信息收集 主…

C++多态讲解

多态 多态的概念 通俗来说&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运行时多态(动态多态)这里重点讲运行时多态。 运行时多态 运行时多态&#xff0c;具体点就是去完成某个行为(函数)&#xff0c;可以传不同的对象就会完成不同的行为&#xff0c;就达到多种形…

在VMware上怎么安装Windows11?看这个教程就足够了

前言 Windows11与Windows10或以下版本有个最大的不同&#xff0c;就是有配置要求。 它就是TPM 2.0。 TPM的全称是Trusted Platform Module&#xff0c;中文名称为&#xff1a;可信赖平台模块。 其中TPM 2.0与上一代的版本&#xff08;TPM 1.2&#xff09;有什么区别&#xf…