【网络原理】TCP/IP四层模型中的重点网络协议

news2024/11/28 4:40:36

目录

🌟一、应用层协议

🌈1、XML协议 

🌈 2、JSON

🌈 3、其他协议

🌟二、传输层协议(UDP与TCP重点)

🌈1、UDP协议格式

🌈 2、TCP协议格式

🎉TCP的10条机制(必会)

1、确认应答机制(可靠机制)

2、超时重传机制(可靠机制)

3、连接管理机制(三次握手,四次挥手)(可靠机制)

4、滑动窗口机制(效率机制)

5、流量控制(可靠机制)

6、拥塞控制 (可靠机制)

7、延迟应答(效率机制)

8、捎带应答(效率机制)

9、面向字节流

10、TCP异常情况

🌟三、网络层重点协议

🌈1、IP协议格式​编辑

🌈2、IP地址:IPv4与IPv6

🌈3、路由选择 

🌟四、数据链路层重点协议

🌈1、以太网格式

🌈2、MTU(最大传输单元)


🌟一、应用层协议

        在开发应用程序时,一个很重要的工作就是进行协议的确定。协议就是组织数据的格式。

        确定应用层协议:在前文中我们实现的TCP服务器与客户端,发送双方确定的应用层协议就是以换行符作为每条消息的结尾,双方在发送的时候按照换行符进行编码,接收的时候按照换行符再进行解码。

        实际上,每个程序对协议的数据格式进行自定义,但是如果每个程序都定义的不一样没那么就不太灵活,双方都要按照不太的方式去解析和编码请求和响应内容,于是大佬们对一些常用的应用场景做了一些特殊协议并确定下来,形成了标准常见的应用层协议,HTTP,FTP,XML,JSON...

🌈1、XML协议 

xml主要是一种组织数据的格式。

🌈 2、JSON

JSON也是组织数据的一种方式。

🌈 3、其他协议


🌟二、传输层协议(UDP与TCP重点)

传输层的协议主要有两个:UDP与TCP

🌈1、UDP协议格式

在解析UDP数据报文件的时候,先截取16位表示源端口,再截取16位表示目标端口号,再截取16位表示UDP长度...

🌈 2、TCP协议格式

 TCP对数据传输提供的管控机制,主要体现在两个方面:安全和效率。

🎉TCP的10条机制(必会)

1、确认应答机制(可靠机制)

(1)分析现象:由于网络错乱导致消息到达的时间不同,会造成消息的乱序。

(2)解决办法:

TCP为了解决收发乱序的问题,对每个字节进行编号。

 

 2、超时重传机制(可靠机制)

原因:消息在网络传输的过程中:操作系统->网卡->交换机->路由器->其他的网络设备,每个设置都有自己的负载能力,如果超出了范围,当前的数据包就可能阻塞或者丢弃。

         不过在情况2中,主机其实已经接收到了数据,只是A没有收到ACK。因此A重发消息,但是存在B会重复接收的一个问题。因此B会在自己的缓冲区中利用32位的序列号过滤到重复数据。 

了解:

 3、连接管理机制(三次握手,四次挥手)(可靠机制)

        主机之间:发送方与接收方之间要进行网络通信,必须要确认双方收发数据的能力。其中涉及到建立连接与断开连接的协商过程。

三次握手:正常通信之前确认双方能力


面试题1: 三次握手的过程? 三次握手的过程能不能简化为两次?四次又是怎么实现的?

 两次不可以的,因为没有完整的校验双方的收发能力;四次是可以的,不过三次就足够了。

参考资料1

参考资料2


三次握手还有一个重要的功能就是协商序列号是从哪里开始。

 四次挥手:断开连接的过程

4、滑动窗口机制(效率机制)

        (1)针对的问题:之前说到确认应答机制,对于每一发送的数据段,都要给一个ACK应答,接收到ACK应答之后再发送下一个数据段。这种数据一发一收的过程虽然可以保证正常通信,但是效率并不高。

        (2)滑动窗口:既然一发一收的性能比较低,那么我们一次发送多条数据,就可以大大提高性能。

 (3)预见可能会遇见的丢包问题

情况1:ACK丢了

情况2:发送的请求包丢包 


问题:滑动窗口与效率大小?

(1)效率的高低与窗口大小有关;

(2)窗口越大效率越高;

(3)窗口越小,效率越低;

(4)假设窗口无穷大,此时发送方就完全不需要等待ACK,此时的效率就和UDP一样,不需要响应就可以直接发送。 

新的问题:滑动窗口的大小到底取多少合适呢?——>因此提出了接下来的 流量控制机制。

5、流量控制(可靠机制)

主要目标:流量控制机制主要是用来确定滑动窗口的大小,通过发送方与接收方动态协商来确认的。

6、拥塞控制 (可靠机制)

解决的问题:

        虽然TCP有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据。但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题。
        因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起雪上加霜的。
        TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;

实际上就是在每次通信过程中试探网络的拥堵状态,从而调整窗口大小。

因此动态调整窗口大小,与接收方的缓冲区大小有关,也与网络大小有关。

问题:窗口大小的取值,以哪个值为准?

(1)接收方缓冲区大小

(2)拥塞控制中跟开网络的状态确定下来的窗口大小

以这两个值中较小的那个为准。

7、延迟应答(效率机制)

8、捎带应答(效率机制)

9、面向字节流

(1)存在的问题:粘包问题

 (2)解决粘包问题

  • 来回往复的读取:长度+消息体
  • 在消息末尾加特殊字符表示消息结束。

10、TCP异常情况


问题1

 问题2


🌟三、网络层重点协议

🌈1、IP协议格式

理解16位标识,3位标志字段与13位分片偏移。         

        对于较长的消息,TCP报文中可能无法承载。就将过长的消息分割成很多小消息体。这一整个大的消息用16位标识表示,三位标志字段如果表示的是“更多分片”,就表示若干个小的消息体。假设TCP报文中一次只能承载10M,分成10份,每个小的消息分片只是1M,13位偏移表示小的消息体从哪个位置开始。

  

 🌈2、IP地址:IPv4与IPv6

1、IPv4

总长是32位,最多可以表示42亿个地址。

问题1:怎么分配这些IP地址让计算机之间可以相互访问呢?

(1)动态分配

设置上网的时候才获取一个IP(一个IP只能同时表示一台主机),下线的时候就会被收回。

(2)NET机制

一个子网中的所有机器,共用一个公网IP地址(不能重复),子网中的机器分配内网IP(不同子网中是可以重复的)。

 


2、IPv6

IPv6的范围 可以为地球上的每一粒沙子分配一个IP。

🌈3、路由选择 

 举个例子



🌟四、数据链路层重点协议

🌈1、以太网格式

🌈2、MTU(最大传输单元)

面试题


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

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

相关文章

字母钥匙圈

钥匙圈,字母! 项目概况: 在这个项目中,您将学习使用字母制作钥匙圈! 放置字母 是时候发挥创意了。为您的朋友或您自己设计一个。 指示 首先将字母拖到红色底座上(位于“设计入门”>“字母和数字”下…

RESTful Python

RESTful Python是一种使用Python编程语言实现RESTful API的方法。下面是一些常用的Python库和框架,可以用来创建RESTful API: Flask: Flask是一个轻量级的Python Web框架,可以用来创建RESTful API。它具有灵活、易于使用和快速开发的特点。 …

[数据库]关于数据库设计的原则

数据表设计原则: 自动编号的ID应该设计为bigint,因为int可能不够用,并且,为了便于统一管理,写的舒心不出错,建议所有表的自增ID全部使用bigint 。(缺点是占空间,如果有20亿条数据,浪…

地震勘探基础(二)之地震分辨率

地震分辨率 分辨率(resolution)表示分离出两个十分靠近的物体的能力,一般用距离表示。如果两个物体之间的距离大于某个特定距离时可以分辨出是两个分离的物体,小于这个特定距离时就不再能分辨出是两个物体,那么这个特…

电压放大器在超声波测距仪中的应用实例研究

超声波测距仪是一种用于测量距离的设备,其原理是利用超声波在空气中传播的速度和反射特性来计算距离。而电压放大器则是超声波测距仪中的一个重要组成部分,它可以将超声波信号放大到足够强的水平,以便于后续处理和显示。本安泰电子将为大家介…

【学习日记2023.6.1】数据库隔离级别

1. 数据库隔离级别 1.1 事务 事务只是一个改变,是一些操作的集合;用专业的术语讲,他就是一个程序的执行单元;事务本身其实并不包含这4个特性,只是我们需要通过某些手段,尽可能的让这个执行单元满足这四个特…

【C语言进阶笔记】

文章目录 1. const(常量指针、指针常量)2. static3. extern4. 指针数组和数组指针5. 结构体对齐6. int / uint取值范围、二进制形式与转换、负数表示7. \0,0,"0",0之间的区别8. 类型自动转换9. 内存结构10. …

【前端之旅】nvm-Node版本管理工具

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【HttpRunnerManager】搭建接口自动化测试平台操作流程

一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和配置、mysql 安装和配置 2. python: django 配置、uwsgi 配置 二、我搭建的环境 1. Centos7 (配置 rabbitmq、mysql 、Supervisord) 2. python 3.6.8 (配置 django、uwsgi&am…

自然语言处理实战9-大语言模型的训练与文本生成过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战9-大语言模型的训练与文本生成过程,以下是本文的目录结构: 文章目录 1.引言 2.大语言模型概述 3.大语言模型的应用项目 3.1 语言生成 3.2 机器翻译 3.3 问答系统 3.4 自动…

Express框架从入门到如土

目录 前言一,初体验二,路由2.1 什么是路由2.2. 路由的使用2.3 获取请求报文参数2.4 id的通配2.5 响应的设置 三,中间件3.1 中间件概述3.2 全局中间件与路由中间件的比对3.3 全局中间件的使用3.4 局部中间件的使用3.5 静态资源中间件&#xff…

“邮件营销新趋势,这个平台让你收获颇丰!

随着各媒体平台的迅速发展,2023年大家更专注于视频营销、网红营销、直播营销等营销方式。可以见得,数字媒介手段的发展,对于营销方式也产生了巨大的影响。但是,企业在拥抱新兴的营销方式的同时,也不要忽视传统的营销方…

好用的Chrome浏览器插件推荐(不定期更新)

好用的Chrome浏览器插件推荐 1.1 CSDN-浏览器助手1.2 Google 翻译1.3 JSON Viewer1.4 ModHeader - Modify HTTP headers1.5 Octotree - GitHub code tree 1.1 CSDN-浏览器助手 CSDN-浏览器助手 是一款集成本地书签、历史记录与 CSDN搜索(so.csdn.net) 的搜索工具 推荐&#x…

碳中和背景下我国空调系统发展趋势2022(李先庭)

碳中和背景下我国空调系统发展趋势 摘要 我国建筑空调系统在运行阶段的年碳排放量约为9.9亿t二氧化碳,降低其碳排放是实现碳达峰碳中和目标的重要挑战之一。本文对我国当前空调系统碳排放量进行了拆解,分…

node-exporter,prometheus,grafana三者之间的联系

一、node-exporter与节点机 用于收集节点机器的数据信息,那么node-exporter与节点机器的连接在哪里? node-exporter.yaml apiVersion: apps/v1 kind: DaemonSet metadata:name: node-exporternamespace: kube-systemlabels:k8s-app: node-exporter spe…

调整直线导轨间隙有什么方法?

直线导轨作为机械行业中非常重要的传动部件,应用范围当然相当广泛,尤其是自动化设备,基本上我们都能看到它的作用。 在机械行业待得久的人都知道,直线导轨在使用的过程中,为了保证直线导轨的正常工作,直线导…

C++ string类-2

at at 函数是在C还没有支持运算符重载的时候提供的。 他可以像 [] 重载运算符一样&#xff0c;找到某个位置的字符&#xff1a; string s1("hello world");s1.at(0) x;cout << s1 << endl; 输出&#xff1a; [] 重载运算符和 at&#xff08;&#x…

GIT常见报错以及解决方法

GIT常见报错以及解决方法 Changes not staged for commit问题复现原理解决 warning: adding embedded git repository问题复现原理解决 error: src refspec master does not match any问题复现 Changes not staged for commit问题复现&#xff1a;解决 Changes not staged for …

软考A计划-电子商务设计师-电子商务基础知识

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

chatgpt赋能python:Python为什么成为不可或缺的编程语言?

Python为什么成为不可或缺的编程语言&#xff1f; Python语言在过去的十年间&#xff0c;已经成为编程领域中不可或缺的一种语言。Python语言是一种高级、通用、面向对象语言&#xff0c;并且在数据科学、机器学习、网站开发等众多领域中广泛应用。本文将探讨为什么Python成为…