计算机网络八股总结

这里写目录标题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/875877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记 - 知识图谱的符号表示方法

学习笔记 - 知识图谱的符号表示方法 说明&#xff1a; 首次发表日期&#xff1a;2024-09-13个人阅读学习并摘录成笔记 知识表示的相关名词定义 以下内容摘录自 Knowledge Graphs Applied 2.3小节&#xff0c;然后AI翻译人工润色。 实体&#xff08;Entities&#xff09;—表…

共享单车轨迹数据分析:以厦门市共享单车数据为例(四)

副标题&#xff1a;共享单车与地铁接驳距离探究——以厦门市为例 关于轨道交通站点接驳范围的研究早已屡见不鲜&#xff0c;通常认为以站点为圆心、800米作为地铁站直接的服务范围是合理的。近年来&#xff0c;随着轨道、公交和慢行交通三网融合概念的提出&#xff0c;慢行交通…

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

目录 一、引言 二、文本分类&#xff08;text-classification&#xff09; 2.1 概述 2.2 DistilBERT—BERT 的精简版&#xff1a;更小、更快、更便宜、更轻便 2.3 应用场景​​​​​​​ 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 …

探索2B法则—趋势反转的高效策略

在之前&#xff0c;我们曾讲过123法则&#xff0c;这是一种基于道氏理论的分析方法&#xff0c;用于确认趋势反转和识别开仓信号。而今日我们就再来聊聊与之相似的2B法则&#xff0c;这是123法则的一种变形&#xff0c;用途和123法则一样&#xff0c;但比之成功率会更高&#x…

白盒测试与黑盒测试

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

GIS在线监测SF6密度微水定量检漏仪传感器专用波纹管免焊接格兰头

SF6密度微水在线监测装置配套M12母头5孔格兰头穿波纹管连接器&#xff0c;该传感器能够监测SF6气体的露点&#xff0c;从而实现对SF6气体在线监测。 原理 SF6露点在线监测传感器是一种可以监测SF6气体露点的传感器它的工作原理是通过吸收SF6气体中的水分子来测量SF6气体的露点。…

k8s 资源管理

文章目录 ResourceQuota什么是资源配额定义一个ResourceQuotaResourceQuota的使用 LimitRangeLimitRange的用途示例1&#xff1a;配置默认的requests和limits示例2&#xff1a;配置requests和limits的范围 QoS什么是服务质量保证示例1&#xff1a;实现QoS为Guaranteed的Pod示例…

git的快速合并fast-forward merge详解

文章目录 1. 什么是快进合并&#xff1f;2. 快进合并的前提条件3. 快进合并的工作原理3.1 示例场景&#xff1a;3.2 使用命令&#xff1a;3.3 快进合并的视觉效果&#xff1a; 4. 快进合并的优点5. 快进合并的缺点6. 快进合并 vs 非快进合并6.1 非快进合并&#xff1a;6.2 非快…

splice用法

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Google推出Data Commons解决AI“幻觉”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

使用LDAP登录GitLab

使用LDAP登录GitLab gitlab.rb 配置如下 gitlab_rails[ldap_enabled] true #gitlab_rails[prevent_ldap_sign_in] false###! **remember to close this block with EOS below** gitlab_rails[ldap_servers] YAML.load <<-EOSmain:label: LDAPhost: 172.16.10.180port:…

C++ | Leetcode C++题解之第398题随机数索引

题目&#xff1a; 题解&#xff1a; class Solution {vector<int> &nums; public:Solution(vector<int> &nums) : nums(nums) {}int pick(int target) {int ans;for (int i 0, cnt 0; i < nums.size(); i) {if (nums[i] target) {cnt; // 第 cnt 次…

c++中的继承和多态

目录 Linux中的管道通信 ​编辑派生类的默认成员函数 继承 派生类的构造 隐藏 如何设计一个不能被继承的类 菱形继承 virtual virtual是如何解决的 内存对象模型 继承和组合 继承 组合 多态 概念 多态的构成条件 虚函数的重写 Linux中的管道通信 派生类的默认成…

ESKF学习笔记

参考资料 https://zhuanlan.zhihu.com/p/441182819 惯性导航(三)-基于流型的ESKF及代码实现_eskf和ekf-CSDN博客 用ESKF实现IMU/GNSS组合导航&#xff08;学习记录&#xff09;_eskf imu-CSDN博客 0.ESKF与KF的区别以及总体流程 0.1卡尔曼滤波过程 卡尔曼滤波的流程按照1…

unity安装配置和vs2022联动教程

目录 1.选择vs2022配置 2.安装unity 2.1安装unity hub 2.2注册个人账号 2.3安装编辑器 2.4修改为简体中文 2.5添加许可证 2.6安装位置修改 3.项目的创建 3.1如何创建 3.2如何选择 3.3配置语言 3.4去哪里找语言包 4.unity编辑器窗口的介绍 4.1游戏的运行和停止 4…

Leetcode面试经典150题-162.寻找峰值

解法都在代码里&#xff0c;不懂就留言或者私信 想清楚的话会特别简单&#xff0c;你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题&#xff0c;这显然就是让二分嘛而题目给的数组本身是无需&#xff0c;怎么二分呢其实我…

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息传输协议&#xff0c;它被设计用来提供一对多的消息分发和应用之间的通讯&#xff0c;尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构&…

5.安卓逆向-java面向对象

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;4.安卓逆向-常用数据结构java语言中的集合 之前的内容写了java语言常用的数据结构&#xff08…

海外云服务器安装 Redis 6.2.x (Ubuntu 18.04 记录篇三)

本文已首发于 秋码记录 通过前两篇的实践&#xff0c;我们已然在海外云服务器/VPS安装了JDK和MariaDB数据库&#xff0c;一个能够运行Java项目的海外云服务器/VPS算是告一段落了。 然而&#xff0c;在这请求量与日俱增的情况下&#xff0c;MariaDB数据库显然是在超负债的工作…

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76&#xff1a;tar命令——快照 & 备份&#xff08;上&#xff09;-CSDN博客 Linux shell编程学习笔记77&#xff1a;tar命令——快照 & 备份&#xff08;下&#xff09;_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…