linux篇【11】:计算机网络—网络基础

news2024/11/23 15:05:05

目录

一.网络基础

1.认识 "协议"

2.协议分层

(1)软件分层

(2)协议分层

3.OSI七层模型

4.TCP/IP五层(或四层)模型

5.网络和操作系统之间的关系

6.数据包的封装(封包)和解包,分用

(1)下图为数据封装,解包的过程

 (2)分用

7.局域网(以太网)通信的原理

(1)局城网中两台主机可以互相通信

(2)局域网通信原理

(3)MAC地址和IP地址

(4)数据包传输通过路由器转发

二.网络编程套接字

1.源IP地址和目的IP地址

2.端口号

3.理解 "端口号" 和 "进程ID"(端口号的意义)


一.网络基础

1.认识 "协议"

"协议 " 是一种约定
计算机之间的传输媒介是光信号和电信号 . 通过 " 频率 " " 强弱 " 来表示 0 1 这样的信息 . 要想传递各种不同的信息 , 就需要约定好双方的数据格式 .
        计算机生产厂商有很多;
        计算机操作系统, 也有很多 ;
        计算机网络硬件设备, 还是有很多 ;
        如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来 , 约定一个共同的标准 , 大家都来遵守, 这就是 网络协议 ;
计算机技术通信协议是计算机网络产生于发展的两个最基本的因素
协议——计算机的视角,如何看待协议:① 体现在代码逻辑上 ② 体现在数据上
以寄快递为例:你和卖家沟通好,买一个鼠标,实际上快递员给你的是 一个包裹,里面有鼠标,
实际上多给了我一些东西,多了一张 快递单快递单是一块数据=>快递公司和快递点,快递小哥之间的协议。 为了维护协议,一定要在被传输的数据上,新增其他数据(协议数据

举例:

HTTP协议是超文本传输协议;DNS协议为域名解析协议;FTP协议为文件传输协议;SMTP协议为电子邮件传输协议

2.协议分层

(1)软件分层

软件是可以分层的,为什么要分层?
1.软件在分层的同时,也把问题归类的
2.分层的本质:软件上解耦
3.便于工程师进行软件维护
网络本身的代码,就是层状结构!

(2)协议分层

层状结构下的网络协议,我们认为,同层协议 都可以认为自已在和对方直接通信,忽略底层细节
同层之间一定都要有自己的协议。
在下面这个例子中, 我们的协议只有两层(汉语协议和电话机协议); 但是实际的网络通信会更加复杂, 需要分更多的层次。分层最大的好处在于 "封装",面向对象例子。

3.OSI七层模型

OSI Open System Interconnection ,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
        把网络从逻辑上分为了7 . 每一层都有相关、相对应的物理设备,比如路由器,交换机 ;
        OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输 ;
        它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
        但是, 它既复杂又不实用 ; 所以我们按照 TCP/IP 四层模型来讲解
在OSI模型网络分层当中,自下而上,下层为上层提供服务,下层将从上层接的信息增加一个头部

4.TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wififi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传输 和识别,完成帧同步, 差错控制,流量管理,链路管理。  例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准。交换机(Switch)工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
一般而言
对于一台主机 , 它的操作系统内核实现了从传输层到物理层的内容 ;
对于一台路由器 , 它实现了从网络层到物理层 ;
对于一台交换机 , 它实现了从数据链路层到物理层 ;
对于集线器 , 它只实现了物理层

5.网络和操作系统之间的关系

(1)体系结构直接决定, 数据包在主机内进行流动的时候,一定是要进行自顶向下(封包)或者自底向上(解包)进行流动的。以前的所有的IO都是这样的。

(2)tcp/ip协议和操作系统之间的关系是:操作系统内部,有一个模块,就叫做tcp/ip协议(传输层和网络层),网络协议栈是隶属于OS的。
(3)同层协议都认为自已在和对方直接通信——所以每一层都要有自己的协议
(4)重谈协议——计算机的视角,如何看待协议:① 体现在代码逻辑上 ② 体现在数据上
以寄快递为例:你和卖家沟通好,买一个鼠标,实际上快递员给你的是一个包裹,里面有鼠标,
实际上多给了我一些东西,多了一张快递单快递单是一块数据=>快递公司和快递点,快递小哥之间的协议。为了维护协议,一定要在被传输的数据上,新增其他数据(协议数据

6.数据包的封装(封包)和解包,分用

        不同的协议层对数据包有不同的称谓, 在传输层叫做段 (segment), 在网络层叫做数据报 (datagram), 在链路层叫做帧(frame).
        应用层数据通过协议栈发到网络上时, 每层协议都要加上一个数据首部 (header), 称为封装
(Encapsulation).
        首部信息中包含了一些类似于首部有多长, 载荷 (payload) 有多长 , 上层协议是什么等信息 .
        数据封装成帧后发到传输介质上, 到达目的主机后每层协议再剥掉相应的首部 , 根据首部中的 " 上层协议字段" 将数据交给对应的上层协议处理
网络传输数据的本质就是数据不断的封装和解包

(1)下图为数据封装,解包的过程

我们把每一层要交付给下一层的数据,给他添加上本层的”多出来的协议数据”(报头)拼接在原始数据的开头

 (2)分用

有效载荷的分用过程:数据包添加报头的时候,也要考虑未来解包的时候,将自己的有效载荷交付给上层的哪一个协议!

下图为数据分用的过程:

两个结论:(大部分协议的公共属性)
1.一般而言,任何报头属性里面,一定要存在的一些字段支持,我们进行封装和解包,即:报头中一定要存着用于 区分报头和有效载荷 的数据
2.一般而言,任何报头属性里面,一定要存在的一些字段支持我们进行分用。即:报头中一定要存着用于 得知报文的有效载荷要给上层哪个协议 的数据

7.局域网(以太网)通信的原理

(1)局城网中两台主机可以互相通信

如果两台主机,处于同一个局城网。这两台主机可以直接通信——以太网,一种局域网的标准(以太——物理学界太空中不存在的物质叫以太,为了致敬命名以太网)以太网:站在系统的角度 就是 两台主机之间的临界资源。

(2)局域网通信原理

1.每一台主机都要有唯一的标识:该主机对应的MAC地址!
2.任何一台主机,在任何时刻,都可以随时发消息——碰撞域——无法准确的听到对应的消息——识别发生了碰撞(碰撞检测)——碰撞避免——等不碰撞了过一会儿再发消息

(3)MAC地址和IP地址

举例:从北京往云南去旅游:常识告诉我们,一般我们在进行路线选择的时候,我们一般有两套地址:
1.从哪里来<源IP>,到哪里去<目的IP>——IP地址:源IP,目的IP
2.上一站从哪里来<源mac地址>,下一站要去哪里<目标mac地址>(由“到哪里去”决定)——MAC地址: 源mac地址,目标mac地址
MAC地址:用来在局域网中,标定主机的唯一性。
IP地址:用来在广域网(公网),标定主机的唯一性。

示例:

路由器可看做一个主机同时横跨了两个局域网

所有的IP向上的协议,发送和接受主机看到的数据是一模一样的
网络 -> IP网络 屏蔽了底层网络的差异! ! !

数据“你好”从客户发出,不断封装,到以太网驱动程序完成最后封装,再通过以太网传输给路由器下的以太网驱动程序,路由器下的以太网驱动程序解包数据,传给路由器,路由器发现这个数据是要传给IPB的,再通过路由器下的以太网驱动程序封装,通过令牌环传输给目标主机所在网络,自底向上解包传输

 

认识 IP 地址
IP 协议有两个版本 , IPv4 IPv6. 我们整个的课程 , 凡是提到 IP 协议 , 没有特殊说明的 , 默认都是指 IPv4
IP 地址是在 IP 协议中 , 用来标识网络中不同主机的地址 ;
对于 IPv4 来说 , IP 地址是一个 4 字节 , 32 位的整数 ;
我们通常也使用 " 点分十进制 " 的字符串表示 IP 地址 , 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
MAC 地址用来识别数据链路层中相连的节点 ;
长度为 48 , 6 个字节 . 一般用 16 进制数字加上冒号的形式来表示 ( 例如 : 08:00:27:03:fb:19)
在网卡出厂时就确定了 , 不能修改 . mac 地址通常是唯一的 ( 虚拟机中的 mac 地址不是真实的 mac 地址 , 可能会冲突; 也有些网卡支持用户配置 mac 地址 ).

(4)数据包传输通过路由器转发

网络传输数据的本质就是数据不断的封装和解包。路由器可看做一个主机同时横跨了两个局域网

所有的数据,必须在”网线”上跑!

二.网络编程套接字

1.源IP地址和目的IP地址

IP 地址:通信主机的源主机

目的IP地址:通信主机目的主机

两主机可以在同一个局域网也可以不在。

2.端口号

我们在网络通信的时候,不止是让两台主机通信。实际上,在进行通信的时候,不仅仅要考虑两台主机间互相交互数据。本质上讲,进行数据交互的时候是用户和用户在进行交互。用户的身份,通常是用程序体现的。程序一定是在运行中——进程!
主机间在通信的本质是:在各自的主机上的两个进程在互相交互数据!
IP地址可以完成主机和主机的通信,而主机上各自的通信进程,才是发送和接受数据的一方

IP :确保主机的唯一性
端口号(port):确保该主机上某一个进程的唯一性(则一个进程只能占用一个端口号)
IP+PORT = 标识互联网中唯一的一个进程!——>socket
网络通信的本质:就是进程间通信! ! !

一个进程可以有多个端口号,但一个端口号不可以对应多个进程

3.理解 "端口号" "进程ID"(端口号的意义)

pid 表示唯一一个进程,端口号也是表示唯一一个进程的。
区别
端口号是网络通信的概念,pid是进程管理的概念。如果我们非要用进程pid在网络通信中标识唯一一个进程,又在进程管理中标识唯一一个进程,让进程pid两用,本质上是可以的。但是这增加了网络通信和进程管理的强耦合性。端口号更侧重于表示这个进程是需要进行网络通信的,没有端口号就表示这个进程只在本地运行。(类似于学号和身份证号,要用学号表示一个学生在学校的唯一性)
总结: 端口号的意义:①使网络模块和进程管理模块解耦。② 有端口号就表示这个进程是网络进程,没有端口号可以不考虑该进程的网络功能。


 

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

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

相关文章

四、文件管理(一)文件系统基础

目录 1.1文件的基本概念 1.2文件控制块和索引结点 1.3文件的操作 1.4文件保护 1.5文件的逻辑结构 1.5.1无结构文件&#xff08;流式文件&#xff09; 1.5.2有结构文件&#xff08;记录式文件&#xff09; 1.5.2.1顺序文件 1.5.2.2索引文件 1.5.2.3索引顺序文件 1.5…

数据库之架构

一、数据库架构原则 高可用 高性能 一致性 扩展性 二、常见的架构方案 方案一&#xff1a;主备架构&#xff0c;只有主库提供读写服务&#xff0c;备库冗余作故障转移用 jdbc:mysql://vip:3306/xxdb 1、高可用分析&#xff1a;高可用&#xff0c;主库挂了&#xff0c;kee…

[ vulhub漏洞复现篇 ] Apache Solr RemoteStreaming 文件读取与SSRF漏洞 (CVE-2021-27905)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

C++11特性-易用性改进

1.字符串的原始字面量 表达式&#xff1a;R"xxx&#xff08;原始字符串&#xff09;xxx"或者R"(原始字符串)"&#xff0c;xxx要写的话&#xff0c;必须一样 //两种申明形式string a "aaa";//没有转义的时候就是原始字面量string b R"aaa(…

总体设计阶段复习

总体设计总体设计(概要设计/初步设计):确定系统模块及相互关系,划分程序,文件,数据库,文档等物理元素设计原理:启发规则图形工具:面向数据流设计方法(SD)总体设计(概要设计/初步设计):确定系统模块及相互关系,划分程序,文件,数据库,文档等物理元素 系统设计阶段 数据流图分析方…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(六)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

FineReport智能数据图表- 文本域控件

1. 概述 1.1 版本 报表服务器版本 11.0 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件输入多行文本信息&#xff0c;录入填报的数据&#xff0c;如下图所示&#xff1a; 1.2.2 参数控件 参数面板处可以通过该控件输入多行文本信息&#xff0c;键入查询参数&#…

【车载开发系列】UDS诊断---安全访问服务($0x27)

【车载开发系列】UDS诊断—安全访问服务($0x27) UDS诊断---安全访问服务($0x27【车载开发系列】UDS诊断---安全访问服务($0x27)一.概念定义二.安全控制过程三.报文格式1&#xff09;请求种子2&#xff09;发送密钥3&#xff09;否定响应四.否定响应码列表五.参数定义六.注意事项…

JavaScript基础学习

文章目录什么是JavaScriptJavaScript 运行过程JvaScript 的组成JavaScript的三种书写模式行内式内嵌式外部式JavaScript的输出输出方式输入: prompt输出: alert输出: console.logJavaScript的一些基础语法变量的使用如何理解JS的动态类型&#xff08;弱类型&#xff09;基本数据…

SSM整合:mybatis层-P17

首先构建新的项目。 MYSQL&#xff1a; 在mysql中创建我们需要的表 CREATE DATABASE ssmbuild;USE ssmbuild;DROP TABLE IF EXISTS books;CREATE TABLE books ( bookID INT(10) NOT NULL AUTO_INCREMENT COMMENT 书id, bookName VARCHAR(100) NOT NULL COMMENT 书名, bookCo…

【深入浅出Spring原理及实战】「IOC容器初始化」彻底让你明白和理解运行原理和源码流程

前言介绍 本篇文章篇幅较大&#xff0c;希望读者可以慢慢阅读&#xff0c;建议收藏&#xff0c;分多次阅读学习。 学习源码的过程当中&#xff0c;有几点建议&#xff1a; 一定要学会抓重点&#xff0c;归纳核心类、核心方法、核心步骤&#xff1b; 分析源码我们不需要太过于纠…

MongoDB 存储引擎

简单回顾 上次我们说到了关于 mongodb 的集群&#xff0c;分为主从集群和分片集群&#xff0c;对于分片集群中的分片这里需要注意如下几点&#xff0c;一起来回顾一下&#xff1a; 对于热点数据某些分片键&#xff08;分片键是集合中每个文档中存在的索引字段或复合索引字段&a…

qt历史数据管理模块(模块化程序)功能块复制直接使用不冲突

一、前言 qt对历史数据管理部分个人总结的模块化程序&#xff0c;直接按照步骤复制粘贴程序&#xff0c;直接实现历史数据管理功能&#xff0c;无需花费脑筋在理清各个思路&#xff0c;适合快速编写组装程序 二、环境 windows qt5.7 sqlite3 三、正文 建议参照前文&…

【uni-app】uni-app之云开发uniCloud跨全栈开发笔记总结,包括一个 schema自动生成代码小案例(附详细截图)

1- 前言 本文主要讲解如何使用uni-app 和 uniCloud 云开发&#xff0c;实现小案例&#xff0c;不需要后端&#xff0c;来实现全栈开发。 2- 概念 2.1 什么是uni-app uni-app 是一个使用Vue.js开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、…

对信息系统生命周期各阶段进行风险评估的要点汇总

概述 风险评估应贯穿于评估对象生命周期 各阶段中。评估对象生命周期各阶段中涉及的风险评估原则和方法昆一致的&#xff0c;但由干各阶段实施内容对象、安全需求不同.使得风险评估的对象、目的、要求等各方面也有所不同。在规划设计阶段&#xff0c;通过风险评估以确定评估对…

pytorch笔记(九)转置卷积、膨胀卷积

Transposed Convolution (转置卷积) 别名:Fractionally Strided Convolution (小数步长的卷积)、Deconvolution(逆/反卷积) 作用:upsampling(上采样) 模拟: PS:不是恢复原始值(因为一般情况下矩阵不可逆,无法等式左右两边同乘矩阵的逆得到原始矩阵) 转置卷积的…

为什么分布式系统这么火?

做Java的升职空间有限&#xff0c;可以说如果不想一辈子做程序员&#xff0c;只能往其他方向进行拓展&#xff0c;比如做到产品经理之类的或者技术总监。 可如果还是想做和技术相关的职业&#xff0c;那么架构师是很好的一步。 可是要如何做一名优秀的架构师呢&#xff1f; …

每天五分钟机器学习:经典的机器学习PCA的核心——特征分解技术

本节重点 本节我们将学习特征分解,特征分解是矩阵分析中非常重要的概念,它也可以应用到PCA算法中,本节先讲解什么是特征分解,然后讲解特征分解在PCA算法中的应用。 数学知识准备 如上所示是方差的定义,方差是度量一组数据的分散程度 如上所示是方差的定义,协方差是…

BSP板机支持包、linux启动分析、ARM裸机编程

文章目录一、BSP二、驱动驱动的基本要素三、启动分析1.uboot2.uboot的作用3.uboot相关命令关键的内容&#xff1a;1&#xff09;bootargs&#xff0c;启动参数2&#xff09;启动命令3&#xff09;修改启动延时时间4&#xff09;复位开发板5&#xff09;修改本地IP地址6&#xf…

Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

Giant Trevally Optimizer : A Novel Metaheuristic Algorithm for Global Optimization and Challenging 一、灵感来源二、算法的初始化三、GTO的数学模型  Phase1&#xff1a;广泛搜索  Phase2&#xff1a;选择区域  Phase3&#xff1a;攻击四、流程图五、伪代码六、实…