八股总结----计算机网络

news2024/11/26 20:26:42

0.OSI七层模型

自己的理解:应用层:生成HTTP请求报文-----表示层:将请求报文转换成适合网络传输的数据格式,加密压缩编码等-----会话层:管理两个应用程序之间的会话,包括连接中断等------传输层:实现端到端通信(主机到主机),但它的职责不仅仅是主机到主机之间的通信,还需要确保数据能够被正确的应用程序接收。所以将数据分成更小的数据段(

  • 适应MTU限制:分段可以确保数据能够在网络中传输,而不会因为过大而被拒绝传输。
  • 提高可靠性:分段减少了重传的开销,提高了错误处理的效率。
  • 流量与拥塞控制:分段有助于动态调整传输速度,避免网络拥塞。
  • 网络兼容性:分段提高了数据在不同类型网络中的传输兼容性。)

,并分别加上端口号,以使其到达正确的应用程序------网络层:给数据段加上网络IP地址,并且选择最佳路由------数据链路层:可靠传输、差错检测、封装成帧-----物理层:将数据转换成适合在网线中传输的电信号。

另外,数据链路层也会和传输层一样进行校验、流量控制,但是针对的对象、作用是不一样的。传输层实现的是端到端的通信,数据链路层实现的则是点对点的通信。点对点一般指设备相连,是局部的,而端到端则可能是跨越了全局网络,中间会经历多次路由器和交换机。

另外,物理层是用什么传输介质、什么物理接口、什么信号表示0和1,解决了两台计算机可以通过信号来传输比特0或1。数据链路层是如何标识MAC地址,如何从比特流中区分地址、数据,如何协调主机争用主线,实现了分组在一个网络上传输。网络层如何标识IP地址,如何路由选择,解决了在多个网络上传输的问题。传输层确定哪个进程通信,解决传输错误问题。应用层制定网络协议,编写网络应用,来实现特定的网络功能。

通过IP地址确定目标主机所在的局域网,然后通过ARP协议把IP地址对应的MAC地址找到,然后在同一片网络中找到目标主机。IP地址的前三个数标识网络,后一个数标识主机。

OSI七层模型的功能概述

  1. 物理层:负责物理设备之间的原始比特流的传输,包括电缆、网卡等硬件。它定义了接口类型、电压、电流等物理特性。

  2. 数据链路层:负责节点之间的可靠传输,包括错误检测与纠正、帧的创建与识别、流量控制等。数据链路层将数据封装成帧并通过物理层传输。

  3. 网络层:负责数据包的路由与转发,决定数据如何从源节点到达目标节点。典型的协议如IP(Internet Protocol)。

  4. 传输层:提供端到端的通信服务,确保数据的完整性和可靠性。主要协议包括TCP(传输控制协议)和UDP(用户数据报协议)。

  5. 会话层:管理会话,建立、维持和终止通信会话,确保数据交换的有序性。

  6. 表示层:处理数据格式的转换,确保发送端和接收端能够理解数据的格式。它涉及数据的加密解密、压缩解压等。

  7. 应用层:直接为用户或应用程序提供网络服务,如电子邮件、文件传输等。应用层是用户与网络的接口。

通过例子说明七层模型的作用

假设你在计算机上使用浏览器访问一个网站(比如打开一个网页),从输入网址到网页显示在屏幕上的过程,可以说明OSI模型各层的作用:

  1. 应用层:你在浏览器中输入网址并点击“回车”,浏览器(作为应用层)生成一个HTTP请求,这个请求包含你想要访问的网页地址。

  2. 表示层:在发送HTTP请求之前,表示层负责将请求数据转换为可以被网络传输的格式,可能还会进行数据的压缩和加密。

  3. 会话层:表示层之后,会话层建立一个通信会话,这个会话保证请求和响应之间的数据交换有序且同步。

  4. 传输层:会话层之后,传输层将数据分成更小的数据段(如TCP段),并为每个数据段加上端口号,以确保数据能够传输到正确的应用程序。

  5. 网络层:传输层之后,网络层根据目标网址的IP地址(通过DNS解析获取)为每个数据段加上源和目标IP地址,并选择最优路径将数据段发送到目标服务器。

  6. 数据链路层:网络层之后,数据链路层将数据段封装成帧,并通过物理介质(如网线)传输。数据链路层还负责检测和纠正物理层传输中可能出现的错误。

  7. 物理层:最终,物理层将数据帧转化为电信号,通过网络电缆或无线信号发送到目标服务器的物理设备。

目标服务器接收到这些信号后,会逆向处理这些层,从物理层到应用层,将最终的HTTP响应发送回你的浏览器,浏览器再将网页显示在屏幕上。

1.UDP头部格式

UDP的头部比较简单,只有8个字节,这也是为什么UDP不能像TCP那样实现可靠传输的原因。源端口和目标端口表示数据传输的来源和去向,包长度表示数据报文的总长度(包含了头部和数据部分),方便接收方正确地处理数据。检验和则是用于验证UDP数据报在传输过程中是否发生了错误。它帮助确保数据的完整性。

2.TCP头部格式

TCP的头部一般是20个字节,复杂的头部决定了它的可靠传输。校验和保证了数据的完整性和错误检测;序列号进行了数据的顺序控制;ACK实现了重传机制,确认和重传;滑动窗口进行流量控制;拥塞控制;三次挥手和四次握手进行连接管理。

3.IP地址

IPV4地址,四位,主机号全为0的是网络地址,全为1的是广播地址。A类,第一位范围1-126,127是本地环回测试地址。后三位范围是1-2^24-1,全1表示广播地址。

网络号是IP地址中的一部分,用于标识某个特定的网络。相同网络号的设备处于同一网络中。主机号是IP地址中的另一部分,用于标识网络内的具体设备(主机)。网络地址是指IP地址中主机号部分全为0的地址,它标识的是整个网络,而不是网络中的具体设备。广播地址是指IP地址中主机号部分全为1的地址,用于向网络中的所有设备发送信息。

4.流量控制

滑动窗口机制中的流量控制主要依赖接收方的接收窗口大小来调节数据传输速率。

  1. 接收窗口大小的动态调整

    • 接收方在接收到数据包后,会根据当前缓冲区的可用空间和处理能力来决定是否调整接收窗口的大小。如果接收方的缓冲区空间充足且处理能力良好,它可能会增大接收窗口的大小,允许发送方发送更多的数据包。反之,如果接收方的缓冲区接近满载,它会缩小接收窗口,以减缓发送方的数据传输速度。
  2. 通过ACK通知窗口大小的变化

    • 每当接收方收到数据包并处理完毕后,它会发送一个ACK(Acknowledgment,确认)消息回给发送方。这个ACK消息不仅确认了已成功接收的数据包,还携带了一个重要的字段:接收窗口大小(Receive Window Size)
    • 这个字段明确告知发送方,接收方当前还能接收的数据量是多少。比如,如果接收窗口大小是500字节,发送方就知道它最多还能发送500字节的数据而不必等待进一步的ACK。
    • 如果接收方的缓冲区快要满了,它会在ACK消息中报告一个较小的接收窗口大小,通知发送方降低数据传输速率,避免缓冲区溢出。

5.拥塞控制

慢开始、拥塞避免、快重传、快恢复。

TCP发送方一开始使用慢开始算法,让拥塞窗口值从1开始按指数规律增大,当拥塞窗口值增大到慢开始门限值时,执行拥塞避免算法,让拥塞窗口值按线性加1的规律增大,当发生超时重传时,就判断网络很可能出现了拥塞,这时将慢开始门限值更新为发生拥塞时拥塞窗口值的一半,并将拥塞窗口值减少为1,并重新执行慢开始算法,拥塞窗口值又从1开始按指数规律增大,当增大到了新的慢开始门限值时,停止使用慢开始算法,执行拥塞避免算法。

后来又加入了快重传和快恢复,快重传是指收到三个重复确认。快恢复是指快重传之后门限值更新发生拥塞时拥塞窗口值的一半,并将拥塞窗口值也更新为发生拥塞时拥塞窗口值的一半,而不是更新为1。

6.三次握手

第一次握手发送端向接收端发送请求连接SYN,接收端收到,并且得知发送端具有发送能力。第二次握手接收端向发送端发送确认连接ACK,发送端得知接收端具有接受能力,并且向发送端发送请求连接,发送端收到,得知接收端具有发送能力。第三次握手,发送端向接收端发送确认连接,接收端得知发送端具有接收能力。这样一来,两端都知道对方具有发送和接收能力,两端建立连接可以正常的传送数据。三次握手才能确认双方的接收和发送能力是否正常。

如果是两次握手,如果某次发送的报文因为网络延误了,又重新发送了一次连接,延误的发送在重新的连接释放之后才到达服务端,这时候服务端会认为发送端又发送了一次连接请求,于是向发送端发送确认请求,同意建立连接,但客户端实际并未发送,所以忽略请求,于是服务端一直等待,浪费资源。

7.四次挥手

通过四次挥手的过程,TCP协议确保了双方都能够正常地关闭连接,并且所有未完成的数据传输都能顺利结束。第一次挥手:客户端发送FIN,表示没有数据要发送了。第二次挥手:服务器发送ACK,确认收到FIN请求。第三次挥手:服务器发送FIN,表示没有数据要发送了。第四次挥手:客户端发送ACK,确认收到服务器的FIN请求,连接关闭。

8.HTTP请求方法

应用层产生的请求报文里面会含有请求行、请求头、请求体(post会有,get没有),

  • 请求行:包括请求方法、请求 URI 和 HTTP 版本。
  • 请求头:提供关于请求的附加信息,例如主机名、用户代理、接受的内容类型等。
  • 请求体:包含要发送给服务器的数据,适用于需要提交数据的请求方法如 POSTPUT

GET  POST  PUT  PATCH  TRACE  OPTIONS  CONNECT  HEAD  DELETE 

9.HTTP状态码

1XX  信息性状态码  接收的请求正在处理,正常,继续;

2XX  成功状态码  请求正常处理完毕; 200   204   206

3XX  重定向状态码   资源位置发生变化,需要新的URL; 301   302  304

4XX  客户端错误状态码  服务端无法处理客户端的请求;400   403   404 

5XX  服务端错误状态码  服务端在处理请求时自身错误; 500  501  502  503

10.HTTP协议的几个版本

HTTP1.0  短连接,请求响应模型,多媒体 (支持文本、音视频等),简单易用,扩展性,但是短连接导致效率低、延迟高、浪费资源,无持久连接导致没法在同一个连接中处理多个请求;

HTTP1.1  持久连接,请求管道化,缓存控制,性能提升,带宽利用率高,更灵活的请求处理,但是管道化局限,队头阻塞;

HTTP2  二进制格式,头部压缩,多路复用(流),服务器推送,但复杂性增加,基于TCP(仍受到握手、丢包重传等限制);

HTTP3  基于QUIC协议,更快的连接建立,改进的流量控制,内建的加密,性能卓越,但是依赖基础设施,实现复杂。QUIC允许对每个流单独进行流量控制,而不仅仅是针对整个连接进行流量控制。这样可以更好地适应不同流的数据传输需求,提高传输效率。

11.GET和POST的区别

1. 用途:GET用来请求数据,POST修改/提交数据;

2. 数据传输方式:URL传递,请求体传递;

3. 安全性:URL上数据可见,请求体内稍微安全一些,但是都不安全,HTTP明文;

4. 幂等性:GET每次请求都会得到相同的数据,POST每次创建则会产生不同的资源;

5. 数据大小限制:URL长度限制,请求体可以大数据;

6. 缓存:GET每次请求可以缓存下来,方便下次请求,POST每次创建不同,不缓存;

7. 语义安全:GET修改服务器数据,POST不修改。

12.HTTP缓存方式

1. 强制缓存(HTTP1.0  Expires 头部字段,绝对时间,HTTP1.1 Cache-Control 头部字段,更灵活)

优点是在缓存有效期内,浏览器无需与服务器通信,直接使用本地缓存资源,提升加载速度。缺点是如果资源在缓存期间发生了变化,用户可能无法及时获取到最新的内容。

2. 协商缓存是指浏览器每次请求资源时,都会先向服务器询问资源是否已经更新,如果没有更新,则继续使用缓存。如果更新了,则下载新的资源。

优点是既能减少不必要的数据传输,又能保证获取最新的资源。缺点是相比强制缓存,每次请求都需要与服务器进行验证,带来了一定的延迟。

13.HTTP和HTTPS

区别:安全、连接、端口、证书

1. HTTP超文本传输协议,明文,不安全。HTTPS在TCP和HTTP之间加入了SSL/TLS安全协议,使得报文能够加密安全传输。

2. HTTP只需要三次握手就能建立连接,HTTPS则还需要SSL/TLS握手。

3. 端口号80与443。

4. HTTPS需要向CA申请身份证书,来保证服务器是安全可靠的。

14.HTTPS能解决什么问题

信息加密解决安全机密,校验机制解决篡改信息,身份证书解决不可信服务器。

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

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

相关文章

HAProxy 效能飞跃先锋队

目录 一 负载均衡 1.1 四层负载 1.2 七层负载 1.3 四层负载和七层负载的区别 二 Haproxy简介 2.1 概念和内容 2.2 haproxy的基本配置信息 2.2.1 global 配置 2.2.2 proxies 配置 三 Haproxy的算法 3.1 静态算法 3.2 动态算法 3.3 其他算法 四 高级功能及配置 4.…

进程编程及其函数的使用

1. 创建进程 创建进程的核心操作是使用 fork() 系统调用。 1.1 fork() 系统调用 fork() 创建一个新进程(子进程),新进程几乎是父进程的完整拷贝。fork() 返回两次: 在父进程中,返回子进程的 PID。在子进程中&#…

Typescript在AI产品中应用越来越广泛

AI产品中的应用 TypeScript 在 AI 产品中的应用逐渐增多,主要得益于其提供的类型安全、面向对象编程和模块化等特性,这些特性使得开发者能够构建可维护、可扩展和高性能的应用程序。 首先,TypeScript 作为 JavaScript 的超集,通…

C++类和对象(2)——取地址运算符重载

一、const成员函数 const放在成员函数参数列表后面进行修饰,那么这个成员函数就是const成员函数;const实际修饰的是成员函数形参中包含的this指针的形参,表明在这个成员函数内部不能对成员进行修改。 例如日期类里面的Print成员函数&#x…

【HarmonyOS NEXT星河版开发学习】综合测试案例-拼夕夕首页

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面(暂未发布) 前言 该实战案例并没有用到太多的知识点,只不过用到的一些新东西,要多花时间去熟悉手机app的一些页面,对…

【Python】Python单元测试基础

文章目录 01-单元测试基础什么是单元测试常用的文件结构运行单元测试 01-单元测试基础 什么是单元测试常用的文件结构编写第一个单元测试运行单元测试 什么是单元测试 单元测试是指一个自动化的测试: 用来验证一小段代码(单元)的正确性&#…

【LLM】医疗大语言模型:CareGPT

向AI转型的程序员都关注公众号 机器学习AI算法工程 CareGPT (关怀GPT)是一个医疗大语言模型,同时它集合了数十个公开可用的医疗微调数据集和开放可用的医疗大语言模型,包含LLM的训练、测评、部署等以促进医疗LLM快速发展。 特性: 添加ChatG…

【Datawhale AI 夏令营】动手学大模型应用开发Task1 Baseline 精读

【Datawhale AI 夏令营】动手学大模型应用开发Task1 Baseline 精读 开源大模型文件预览 Baseline 1.导入库 # 导入所需的库 from transformers import AutoTokenizer, AutoModelForCausalLM import torch import streamlit as st2.模型下载 # 源大模型下载 from modelscope…

将电脑打造成私人网盘,支持外网访问之详细操作教程

你想过把自己电脑打造成随时随地访问的网盘吗?就是那种拥有一个属于自己的影音库,不用担心被和谐,随时可以登录访问电脑上的各种文件,相比传统网盘省心又安全。 使用Everything和节点小宝将电脑搭建成私人网盘,可以实现…

嵌入式面经篇三——数据类型

文章目录 前言一、数据类型1、用变量 a 给出下面的定义2、下面的代码输出是什么,为什么?3、写出 float x 与“零值”比较的 if 语句。4、下面代码有什么错误?5、下面代码输出是什么?6、下面代码运行后会是什么现象?7、…

24年日语能力(JLPT)考试报名流程图解

报名方式 搜索JLPT中国教育考试网,在线报名,一般学生党从教育网入口登录,社会人士从公网入口登录 报名时间 N1-N5 8月20日 7:00 - 8月27日14:00 注册时间 8月13日7:00 - 8月27日14:00 报名步骤 阅读报考提示,注册个人信息→…

此处不允许使用 ‘空‘ 类型

说明:受最近看的书《设计模式之美》(小争哥)的影响,最近编码有意将一些业务逻辑写在对象里面,增强封装性。在此记录一次项目启动时的报错,如下: 原因:当你在实体类对象中&#xff0c…

UniApp开发的开源工厂设备管理维护系统

本文来自:UniApp开发的开源工厂设备管理维护系统 - 源码1688 前端小程序演示地址: 后台测试网址: https://shebeiguanli.azheteng.cn/pyswkAWtig.php/addon?refaddtabs 测试账户: admin 测试密码: admin888 前端…

【Python】python泰坦尼克号生存预测 (源码+数据集+PPT+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

黑神话悟空游戏攻略大全 黑神话悟空内存占用多少 国产3A级游戏《黑神话:悟空》评测代码已发 黑神话悟空测试画质130g MacBook可以玩黑神话悟空吗

《黑神话:悟空》的评测代码已向媒体与测评人员发放,评测解禁日期定在8月16日。目前发放的评测代码仅限于PC版,并未涉及PS5版。《黑神话:悟空》将于8月20日发售,登陆PC(Steam/Epic/WeGame)和PS5。玩家将扮演一位“天命人…

Mybatis原理分析

一、总结 MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。 1. JDBC有四个核心对象: (1)DriverManager,用于注册数据库连接。 &#xf…

基于单片机的智能楼道灯光控制系统设计

摘要:基于单片机的智能楼道灯光控制系统设计由人体感应模块、光照强度检测模块、灯光控制模块、声音传感器模块、声光报警模块等组成。以单片机为核心,通过检测光照强度和红外人体感应相结合,实现了对楼道内灯光的控制,从而达到节…

vue-cli 中 配置 productionSourceMap 为 false 失效?

背景 最近 发现 vuecli 构建的 项目中配置的 productionSourceMap 为 false 后 ,生产代码 还是能够看到 sourceMap 文件 。 原因 生效前提条件 得设置 NODE_ENV 为 production 才会生效! 解决 直接修改生产环境的配置 NODE_ENV 为 production 直接覆…

二.PhotoKit - 相册权限(彻底读懂权限管理)

引言 用户的照片和视频算是用户最私密的数据之一,由于内置的隐私保护功能,APP只有在用户明确授权的前提下才能访问用户的照片库。从iOS14 开始,PhotoKit进一步增强了用户的隐私控制,用户可以选择指定的照片或者视频资源的访问权限…