网络基础入门

认识协议

        协议其实是一种约定

网络协议初识:

1.内核上以结构体形式呈现

2.操作系统要进行协议管理--先描述,在管理

3.协议的本质是软件,软件是可以分层的,(联系C++继承多态的知识 )

可以参考 : C++ 继承_秋秋爱代码的博客-CSDN博客

                    ​​C++多态​​_秋秋爱代码的博客-CSDN博客

4.协议在设计时候都是分层的,那为什么要设计成层状结构嘞?

(1)因为使用场景很复杂;(2)层状结构有利于解耦

5.复杂体现在什么地方?--协议栈要解决的问题

通信的复杂本质适合距离成正比的。

OSI七层模型(蓝图)            <====>              TCP/IP五层模型(实现)

 TCP/IP通信过程

引入问题:同一个局域网内两个主机能否之际通信?  答案:能!!

 内核上,相同层不能直接通信,但是这样理解可能比较直观,但是实际上两层的通信就好比你和你的朋友住在同一个小区的不同栋楼,他要给你送礼物,只能先从当前楼下楼梯再从你所在的楼上楼梯,但是你只需要关注的是他把礼物送到你手上了。

 

什么是报头?

每层都有自己的协议指定方案,每层协议也都有自己的协议报头,从上到下交付数据的过程叫做添加报头,从下到上递交数据的过程叫做去掉报头。

如果不好理解,这么来说,报头就是快递通过不同地方,如发货商,快递站(对应不同层),发货商会对商品做包装,快递站也会对商品进行再次包装,这个包装就和报头是等价的。

 回溯通信过程:

当用户要将文件传输给另一台主机前,该文件数据需要先通过网络协议栈进行封装:

        文件数据先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据交给传输层
        传输层收到数据后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
        网络层收到数据后,再添加上对应网络层协议的报头信息,接着将数据再交给链路层。
        链路层收到数据后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕。

        数据封装完毕后就可以通过局域网将其发送给对端主机了,而当对端主机收到数据后,对应也需要通过网络协议栈对该数据进行解包与分用:

        链路层收到数据后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下的数据交            给网络层。
        网络层收到该数据后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下的数据            继续向上进行交付。
        传输层收到该数据后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据            再交付给应用层。
        应用层收到数据后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据            的解包与分用。

也就是说,任何一台主机在发送数据之前,该数据都要先自顶向下贯穿协议栈来完成数据的封装,在这个过程中,每一层协议都会添加上对应的报头信息;而任何一台主机收到数据后,都要先自底向上贯穿协议栈来完成数据的解包和分用,在这个过程中,每一层协议都会将对应的报头信息提取出来。
 

局域网中表示主机唯一性--MAC地址

大家应该都看过《西游记》吧,里面唐三藏的经典台词“贫僧自东土大唐而来,要往西天拜佛取经去”。这里的“东土大唐”就相当于源IP地址,“西天”就相当于 目的IP地址,这也就好理解源IP和目的IP地址都有且只有一个的原因啦。

话说西行路上,唐僧路经车迟国,下一站去黑风岭,这里的 “车迟国”就好比 源MAC地址,“黑风岭”就是下一站MAC地址

udp代码详见 :udp/Multithreaded_version · fortianyang/StudyForLinux - 码云 - 开源中国 (gitee.com)

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

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

相关文章

2023/8/17总结

项目完善&#xff1a; 算法推荐 item-CF 算法推荐我主要写的是协同过滤算法&#xff0c;然后协同过滤算法分成俩种—— 基于用户的 user-CF 基于物品的 item-CF 因为害怕用户冷启动&#xff0c;和数据量的原因 我选择了 item-CF 主要思路是——根据用户的点赞列表&…

什么是JVM ?

目录 一、JVM 简介 1.1 JVM 发展史 1.Sun Classic VM 2.Exact VM 3.HotSpot VM 4.JRockit 5.J9 JVM 6.Taobao JVM&#xff08;国产研发&#xff09; 1.2 JVM 和《Java虚拟机规范》 二、 JVM 运行流程 JVM 执行流程 三、JVM 运行时数据区 3.1 堆&#xff08;线程共享…

86. 分隔链表(中等系列)

给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1&#xff1a; 输入&#xff1a;head [1,4,3,2,5,2], x 3 输出&…

wireshark 流量抓包例题重现

[TOC](这里写目录标题 wireshark抓包方法wireshark组成 wireshark例题 wireshark抓包方法 wireshark组成 wireshark的抓包组成为&#xff1a;分组列表、分组详情以及分组字节流。 上面这一栏想要显示&#xff0c;使用&#xff1a;CtrlF 我们先看一下最上侧的搜索栏可以使用的…

IDEA快速设置Services窗口

现在微服务下面会有很多SpringBoot服务&#xff0c;Services窗口方便我们管理各个SpringBoot服务&#xff0c;但有时IDEA打开项目后无法的看到Services窗口&#xff0c;以下步骤可以解决&#xff01;

系统架构设计高级技能 · 安全架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

图床项目进度(二)——动态酷炫首页

前言&#xff1a; 前面的文章我不是说我简单copy了站友的一个登录页吗&#xff0c;我感觉还是太单调了&#xff0c;想加一个好看的背景。 但是我前端的水平哪里够啊&#xff0c;于是在网上找了找制作动态背景的插件。 效果如下图。 如何使用 这个插件是particles.js 安装…

[NLP]深入理解 Megatron-LM

一. 导读 NVIDIA Megatron-LM 是一个基于 PyTorch 的分布式训练框架&#xff0c;用来训练基于Transformer的大型语言模型。Megatron-LM 综合应用了数据并行&#xff08;Data Parallelism&#xff09;&#xff0c;张量并行&#xff08;Tensor Parallelism&#xff09;和流水线并…

使用代理突破浏览器IP限制

一、实验目的: 主要时了解代理服务器的概念&#xff0c;同时如何突破浏览器IP限制 二、预备知识&#xff1a; 代理服务器英文全称是Proxy Server&#xff0c;其功能就是代理网络用户去取得网络信息。形象的说&#xff1a;它是网络信息的中转站&#xff0c;特别是它具有一个cac…

4.15 TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?

目录 HTTP 的 Keep-Alive TCP 的 Keepalive 总结&#xff1a; HTTP的Keep-Alive&#xff0c;是应用层&#xff08;用户态&#xff09;实现的&#xff0c;称为HTTP长连接&#xff1b; TCP的Keepalive&#xff0c;是由TCP层&#xff08;内核态&#xff09;实现的&#xff0c;…

常见的移动端布局

流式布局&#xff08;百分比布局&#xff09; 使用百分比、相对单位&#xff08;如 em、rem&#xff09;等来设置元素的宽度&#xff0c;使页面元素根据视口大小的变化进行调整。这种方法可以实现基本的自适应效果&#xff0c;但可能在不同设备上显示不一致。 <!DOCTYPE ht…

深度学习5:长短期记忆网络 – Long short-term memory | LSTM

目录 什么是 LSTM&#xff1f; LSTM的核心思路 什么是 LSTM&#xff1f; 长短期记忆网络——通常被称为 LSTM&#xff0c;是一种特殊的RNN&#xff0c;能够学习长期依赖性。由 Hochreiter 和 Schmidhuber&#xff08;1997&#xff09;提出的&#xff0c;并且在接下来的工作中…

多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测。 模型描…

python编程环境使用技巧-任务1-pip包管理工具

概要 任务1-pip包管理工具 pip是Python的包管理工具&#xff0c;它用于安装、升级和管理Python的第三方库以及它们的依赖关系。 在命令提示符或终端窗口中&#xff0c;可以使用以下常用的pip命令&#xff1a; 安装包&#xff1a;pip install package_name。它会自动下载并安…

OpenCV使用CMake和MinGW-w64的编译安装

OpenCV使用CMake和MinGW-w64的编译安装中的问题 问题&#xff1a;gcc: error: long: No such file or directory** C:\PROGRA~2\Dev-Cpp\MinGW64\bin\windres.exe: preprocessing failed. modules\core\CMakeFiles\opencv_core.dir\build.make:1420: recipe for target ‘modul…

个人记录:划分

原始数据展示 每五个大图移动一次所有的大图名称的小图片。 读取指定图片格式的图片名称&#xff0c;内置函数map执行,文件移动 图片01-17[:27] 图片17-70要改27为25 import os import shutil # source dataset/sat_train/ source_path "/mnt/sdb1/fenghaixia/dsm/da…

JDK1.8 安装教程(linux)

一、 检查当前系统是否已安装JDK 通过命令java –version 如果有出现如下图提示表示有安装&#xff0c;则无需再安装 二、 安装JDK 通过JDK官网https://www.oracle.com/上下载需要的JDK 版本&#xff0c;下载完成后上传到linux 系统上指定的文件夹下。&#xff08;可以用宝…

基于大语言模型知识问答应用落地实践 – 知识库构建(上)

01 背景介绍 随着大语言模型效果明显提升&#xff0c;其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型&#xff08;LLM&#xff09;知识召回&#xff08;Knowledge Retrieval&#xff09;的方式&#xff0c;在私域知识问答方面可以…

自然语言处理学习笔记(七)————字典树效率改进

目录 1. 首字散列其余二分的字典树 2.双数组字典树 3.AC自动机(多模式匹配) &#xff08;1&#xff09;goto表 &#xff08;2&#xff09;output表 &#xff08;3&#xff09;fail表 4.基于双数组字典树的AC自动机 字典树的数据结构在以上的切分算法中已经很快了&#x…

Nginx详解 第一部分:编译安装Nginx+Nginx模块

Part 1 一 、HTTP 和 Nginx1.1 套接字Socket1.2 URL1.2.1 定义1.2.1 URL和URN的区别1.2.3 URL组成 1.3 请求访问完整过程详解 二、I/O模型 处理高并发的时候用2.1 I/O模型简介2.2 多路复用I/O型2.3 异步I/O模型2.4 事件模型 select poll epoll 三、NGINX概述3.1 简介3.2 NGINX和…
最新文章