网络基础【Linux网络编程】

目录

一、网络发展

二、协议和协议分层

OSI七层网络模型

TCP/IP协议栈

三、网络和OS的关系

四、网络传输基本流程

五、数据包封装和分用 

六、IP地址和MAC地址

MAC地址

局域网通信原理

IP地址 


一、网络发展

详细参考此篇博文:网络发展史

独立模式

计算机之间相互独立;

网络互联

多台计算机连接在一起, 完成数据共享;

局域网LAN

计算机数量更多了, 通过交换机和路由器连接在一起;

广域网WAN

将远隔千里的计算机都连在一起;

局域网和广域网只是一个相对的概念,没有明显的界限划分。

最早的网络:

1969年,美国国防高级研究项目署建立了ARPANET(阿帕网)。

二、协议和协议分层

协议是一种约定,计算机之间要想传递各种不同的信息,就要约定好双方的数据格式。

在收快递时,我们收到的不仅仅是我们购买的物品,还会有一个盒子和一个快递单(发件人信息和收件人信息等)。同理,我们在网络通信时,收发的不仅仅是消息,还要多收发一些东西,多出来的一部分就叫协议(报头)

在C语言里描述协议,就是描述协议的各种信息,就是定义一个结构体对象

为什么网络要分层?

1、规模太大

2、问题是分层的

OSI七层网络模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

把网络从逻辑上分为了7层(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层). 每一层都有相关、相对应的物理设备,比如路由器,交换机;


OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

在工程实践中,会话和表示层一般是交给应用层做的,也就是3层压缩成一层,后面我们谈的都是TCP/IP五层模型。

TCP/IP协议栈

因为最重要的是传输层和网络层,而传输层最重要的协议是TCP,网络层最重要的协议是IP,所以就叫TCP/IP协议簇。

三、网络和OS的关系

四、网络传输基本流程

 网络通信的本质就是贯穿协议栈的过程。

局域网中,任意两台主机可以直接通信,其通信保障就是局域网协议,局域网协议有很多种,典型的有以太网(主流)、令牌环网、无线LAN(手机)等。

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

五、数据包封装和分用 

应用层的数据通过协议栈发到网上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”,将数据交给对应的上层协议处理。

报文 = 报头(每层协议加的数据首部)+有效载荷(你好) 

不同的协议层对“报文”有不同的称谓,传输层叫段,网络层叫数据报,链路层叫帧。 

令牌环网:持有令牌数据的主机才能进行消息发送,类似系统里锁的思想。

C主机和路由器在同一个局域网内,同一个局域网内可以直接通信,所以C主机可以根据路由器的MAC地址将数据发给路由器,路由器再根据S主机的IP地址将数据发给S主机。

IP协议屏蔽了底层网络的差异化,靠的就是工作在IP层的路由器。

IP实现了全球主机的软件虚拟层,一切皆是IP报文。

六、IP地址和MAC地址

MAC地址

每张网卡在出厂时都会有一个48位(6字节)一般用16进制数字加上冒号的形式来表示序列号(全球唯一),这个就是MAC地址。只要保证局域网内的唯一性就行。

用来识别数据链路层中相连的节点。

局域网通信原理

在局域网中,一台主机给另一台主机发送信息时,物理上每台主机都是可以接收到的,只是该主机知道该信息不是发给我的,它忽略了不主动交给上层。

网卡的工作模式不仅有正常模式,还有混杂模式,在该模式下,可以接收不是发送给自己的消息,并交给上层用户,这就是大多数抓包软件的工作原理。

安全问题可以在应用层就对数据进行加密,这样即使数据被别人抓到了,也没啥关系。

同时,以太网中存在数据碰撞问题,同一时刻,一个局域网内只能有,所以发送主机要执行碰撞避免的算法(延迟等待)一个局域网叫一个碰撞域。

如果局域网中的主机很多,那么碰撞的概率就会变大,交换机就可以解决这个问题。

如,H1要将它的数据发给H7,因为两台主机都在交换机左侧,所以该数据就不必让交互机右侧的主机收到,这样就可以降低碰撞的概率。交换机的功能就是划分碰撞域。

IP地址 

IPv4:32位,4字节

简单理解:标识特定一台主机在全网的唯一性。

ifconfig指令可以查看inet(ip地址)和ether(mac地址)

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

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

相关文章

第三百零三回

文章目录 1. 概念介绍2. 实现方法2.1 文字信息2.2 红色边框 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现密码输入框"相关的内容,本章回中将介绍如何在在输入框中提示错误.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们…

Qt加载网页崩溃 ASSERT:“m_adapterClient“ in file ...

1、软件启动后加载网页无异常,点击按钮,加载新网页时崩溃 崩溃代码: QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) { Q_UNUSED(type); return this; } 2、原因 Qt只是调用谷歌的浏览器引擎&#xff…

构建用于预警大型语言模型辅助生物威胁创建的系统

深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 。 Op…

vivado jesd204核综合错误

用204核的时候老是报如下错误。 [Opt 31-67] Problem: A LUT2 cell in the design is missing a connection on input pin I0, which is used by the LUT equation. This pin has either been left unconnected in the design or the connection was removed due to the trimm…

ubuntu 上安装和配置Apache2+Subversion

目录 一、安装Apache2和SVN 二、Apache2设置 三、subversion配置 四、创建仓库和设置权限 五、仓库备份和恢复 系统环境 Ubuntu Linux (20.04) apache2 Subversion(1.13.0) 一、安装Apache2和SVN 通过命令在线安装apache2和subversion apt-get install apache2 libap…

Maven高级知识——分模块开发、继承与聚合

目录 一、分模块设计与开发 1.1 不分模块的问题 1.2 分模块设计 二、 继承与聚合 2.1 继承 2.1.1 继承关系 2.1.2 版本锁定 2.1.2.1 场景 2.1.2.2 介绍 2.1.2.3 实现 2.1.2.4 属性配置 2.2 聚合 2.2.1 介绍 2.2.2 实现 2.3 继承与聚合对比 三、Maven打包方式(jar、w…

数据结构—动态查找

动态查找介绍 1. 动态查找的引入:当查找表以线性表的形式组织时,若对查找表进行插入、删除或排序操作,就必须移动大量的记录,当记录数很多时,这种移动的代价很大。 2. 动态查找表的设计思想:表结构本身是…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具:安装宝塔面板服务器至少一台、域名一个 前端:生成dist文件(前端运行build命令) 后端:生成jar包(maven运行package命令) 准备: 打开宝塔面板,点击进入软…

element-ui link 组件源码分享

link 组件的 api 涉及的内容不是很多,源码部分的内容也相对较简单,下面从以下这三个方面来讲解: 一、组件结构 1.1 组件结构如下图: 二、组件属性 2.1 组件主要有 type、underline、disabled、href、icon 这些属性,…

OpenCV+ moviepy + tkinter 视频车道线智能识别项目源码

项目完整源代码,使用 OpenCV 的Hough 直线检测算法,提取出道路车道线并绘制出来。通过tkinter 提供GUI界面展示效果。 1、导入相关模块 import matplotlib.pyplot as plt import numpy as np import cv2 import os import matplotlib.image as mpimg …

虚幻UE 特效-Niagara特效实战-魔法阵

回顾Niagara特效基础知识:虚幻UE 特效-Niagara特效初识 其他四篇实战:UE 特效-Niagara特效实战-烟雾、喷泉、 虚幻UE 特效-Niagara特效实战-火焰、烛火、 虚幻UE 特效-Niagara特效实战-雨天、 虚幻UE 特效-Niagara特效实战-眩晕。 本篇笔记记录了使用空模…

Scrum敏捷开发企业培训-敏捷研发管理

课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程,面向研发管理者、项目经理、产品经理、研发团队等,旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

【循环结构·js】

变量命名原则 变量名由字母、下划线、$ 或数字组成,并且必须由字母、下划线、$ 开头。 变量名不能命名为系统关键字和保留字。 JS代码在sourse里面调试 document.write(str); /*在页面上输出变量 str 的值*/数据类型的分类 为什么要标识数据类型: 不…

【Java开发岗面试】八股文—微服务、消息中间件

声明: 背景:本人为24届双非硕校招生,已经完整经历了一次秋招,拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验(主要是校招),包括我自己总结的八股文、算法、项目介绍、HR面和面试…

IT部门规划:构建高效、创新的技术引擎

序言 在当今这个信息化、数字化的时代,IT部门的重要性日益凸显。一个高效、创新的IT部门,不仅是企业稳定运营的保障,更是推动企业持续发展的核心动力。那么,如何规划一个优秀的IT部门呢? 一、明确IT部门的战略定位 …

window 安装 jenkins 编写脚本

set JAVA_HOMED:\RuanJianKaiFa\jdk\jdk11 set CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Path%JAVA_HOME%\bin; java -jar jenkins.war 下载jenkins.war包,编写一个txt文档,把脚本复制进去,修改文件后缀为.bat文件…

SpringCloud服务通信

目录 Ribbon实现服务通信 创建工程product-basic-provider(提供者) 创建工程product-img-provider(提供者) 创建工程product-detail-api(消费者) OpenFeign实现服务通信 创建工程product-detail-api-…

Linux 磁盘空间占用率100%的排查

📑前言 使用 Linux 操作系统时,可能会遇到磁盘空间不足的错误,这种错误通常会导致系统运行缓慢或崩溃。本文将介绍磁盘排查的方法。⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页&#xff1…

Redis进阶(一):持久化

持久化 何为持久化? MySQL的事务有四个比较核心的特征:原子性、一致性、持久性和隔离性,这里的持久性和持久化说的是一个事,简单来说,数据存储在硬盘上就是持久,存在内存上那就是不持久(重启之后…

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式?

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式? 如下图所示,开机后按下MENU菜单键时,发现原来的列表形式变成了菜单图标的形式,同时在按F1-F5键时,提示:HMI模式-键不可用, …
最新文章