《3.linux应用编程和网络编程-第8部分-3.8.网络基础》 3.8.1.网络通信概述 3.8.3.网络通信基础知识2

news2024/11/26 18:45:25

    进程间通信: 管道 、 信号量、 共享内存, 技术多,操作麻烦

    线程就是解决 进程间 通信 麻烦的事情,这是线程的 优势

3.8.1.网络通信概述
3.8.1.1、从进程间通信说起:网络域套接字socket网络通信其实就是位于网络中不同主机上面                   的  2个 进程之间的通信。
   
3.8.1.2、网络通信的层次
(1)硬件部分:网卡 : 驱动硬件
(2)操作系统底层:网卡驱动
(3)操作系统API:socket接口
(4)应用层:低级(直接基于socket接口编程)
(5)应用层:高级(基于网络通信应用框架库)
(6)应用层:更高级(http、网络控件等)
3.8.1.3、本部分学习方法
(1)重点1:掌握网络通信的架构层次和基本原理
(2)重点2:掌握socket及其相关函数的使用
(3)重点3:掌握服务器和客户端程序通信的方法

3.8.2.网络通信基础知识1
3.8.2.1、网络通信的发展历程
(1)单机阶段
(2)局域网阶段
(3)广域网internet阶段
(4)移动互联网阶段
(5)物联网阶段
3.8.2.2、三大网络
(1)电信网、电视网络、互联网
3.8.2.3、网络通信的传输媒介
(1)无线传输:WIFI、蓝牙、zigbee、4G/5G/GPRS等
(2)有线通信:双绞线、同轴电缆、光纤等

3.8.3.网络通信基础知识2
3.8.3.1、OSI 7层网络模型(详见百度介绍)
(1)7层名字和顺序要记住,有时候笔试题目经常遇到。
(2)网络搜索资料,自己看自学,逐步去理解。

3.8.3.2、网卡
(1)计算机上网必备硬件设备,CPU靠网卡来连接外部网络
(2)串转并设备
(3)数据帧封包和拆包: 数据包: 包头、有限数据data、 包尾、CRC校验
(4)网络数据缓存和速率适配
3.8.3.3、集线器(HUB)
(1)信号中继放大,相当于中继器:中继器:信号放大,组  局域网
(2)组成局域网络,用广播方式工作。
(3)注意集线器是不能用来连接外网的


3.8.3.4、交换机
(1)包含集线器功能,但更高级: ,效率更高!有一个表,代码通过学习就知道那个 口,对应       拿台电脑对应的IP地址,第一次需要广播,知道那个口 ,对应的那个电脑的IP地址后,就不需要   广播了
(2)交换机中有地址表,数据包查表后直达目的通信口而不是广播
(3)找不到目的口时广播并学习

 3.8.4.网络通信基础知识3
3.8.4.1、路由器
(1)路由器是局域网和外部网络通信的出入口


(2)路由器将整个internet划分成一个个的局域网,却又互相联通。
(3)路由器对内管理子网(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的。


(4)路由器对外实现联网,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。
(5)所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。
(6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。
(7)路由器技术是网络中最重要技术,决定了网络的稳定性和速度。
3.8.5.1、DNS(Domain Name Service 域名服务)
(1)网络世界的门牌号:IP地址
(2)IP地址的缺点:难记、不直观
(3)IP地址的替代品:域名,譬如www.zhulaoshi.org
(4)DNS服务器就是专门提供域名IP地址之间的转换的服务的,因此域名要购买的
(5)我们访问一个网站的流程是:先使用IP地址(譬如谷歌的DNS服务器IP地址为8.8.8.8)访问DNS服务器(DNS服务器不能是域名,只能是直接的IP地址),查询我们要访问的域名的IP地址,然后再使用该IP地址访问我们真正要访问的网站。这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。
(6)浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器)

 3.8.5.网络通信基础知识4
3.8.5.1、DHCP(dynamic host configuration protocl,动态主机配置协议)
(1)每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。
(2)计算机的IP地址可以静态设定,也可以动态分配
(3)动态分配是局域网内的DHCP服务器来协调的,很多设备都能提供DHCP功能,譬如路由器。
(4)动态分配的优势:方便接入和断开、有限的IP地址得到充分利用
3.8.5.2、NAT(network address translation,网络地址转换协议)
(1)IP地址分为(外网)公网IP(internet范围内唯一的IP地址)和私网IP(内网IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1.xx)
(2)网络通信的数据包中包含有目的地址的IP地址

    类似于:快递,有发件人(源  IP地址),有收件人(目标 IP地址)
(3)当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对外外网IP。这个过程就叫NAT。
(4)NAT的作用是缓解IPv4的IP地址不够用问题,但只是类似于打补丁的形式,最终的解决方案还是要靠IPv6。
(5)NAT穿透简介:P2P下载

 

3.8.6.网络通信基础知识5
3.8.6.1、IP地址分类(IPv4)
(1)IP地址实际是一个32位二进制构成,在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示。


(2)IP地址中32位实际包含2部分,分别为:网络地址和主机地址。子网掩码,用来说明网络地址和主机地址各自占多少位。


(3)由网络地址和主机地址分别占多少位的不同,将IP地址分为5类,最常用的有3类
3.8.6.2、三类IP地址
(1)A类。
(2)B类
(3)C类
(4)127.0.0.0用来做回环测试loopback:网卡自己发  网卡自己收
3.8.6.3、如何判断2个IP地址是否在同一子网内
(1)网络标识 = IP地址 & 子网掩码
(2)2个IP地址的网络标识一样,那么就处于同一网络。

192.168.1.102 & 255.255.255.0 = 192.168.1.0
192.168.1.253 & 255.255.255.0 = 192.168.1.0


192.168.1.4和192.168.12.5,如果子网掩码是255.255.255.0那么不在同一网段,

192.168.1.4和192.168.12.5    如果子网掩码是255.255.0.0那么就在同一个网段

 

以下随手笔记:

源IP地址:发出数据包的网络的IP地址
目标IP地址:要接收数据包的计算机的IP地址


二进制方式            0xffffffff            0xC0A80166/0x6601A8C0        本质
点分十进制方式        255.255.255.255        192.168.1.102                方便人看的

IP地址 = 网络地址 + 主机地址
网络地址用来表示子网
主机地址是用来表示子网中的具体某一台主机的。


譬如可以8位表示网络,24位表示主机
也可以16位表示网络,16位表示主机
14为表示网络,18位表示主机

子网掩码为255.255.255.0时表示前24位为网络地址,后8位为主机地址
子网掩码为255.255.0.0时表示前16位为网络地址,后16位为主机地址

网络地址决定了这种网络中一定可以有多少个网络,譬如子网掩码为255.255.255.0时表示我们这一种网络一共最多可以有2^24个,每个这种网络中可以有2^8个主机(256个电脑)。
如果子网掩码为255.255.0.0时,表示我们这种网络可以有2^16个网络,每个这种网络中最多可以有2^16个主机。


192.168.1.102 & 255.255.255.0 = 192.168.1.0
192.168.1.253 & 255.255.255.0 = 192.168.1.0


192.168.1.4和192.168.12.5,如果子网掩码是255.255.255.0那么不在同一网段,如果子网掩码是255.255.0.0那么就在同一个网段

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

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

相关文章

2023.7月最新版idea安装Jrebel实现热部署,可解决后端启动等待时间过长问题

2023.7最新版idea热部署配置 一 下载jrebel插件二 激活我使用的方法 三 配置方式1 设置自动编译2 设置 compiler.automake.allow.when.app.running3 勾选项目,然后以Rebel方式启动 4 Settings查看Activation情况四 报错解决1 启动失败 2 端口被占用 五 总结 一 下载…

JS 的 new 到底是干什么的?

大部分讲 new 的文章会从面向对象的思路讲起,但是我始终认为,在解释一个事物的时候,不应该引入另一个更复杂的事物。 今天我从「省代码」的角度来讲 new。 --------------------------- 想象我们在制作一个策略类战争游戏,玩家…

网络编程【网络编程基本概念、 网络通信协议、IP地址 、 TCP协议和UDP协议】(一)-全面详解(学习总结---从入门到深化)

目录 网络编程基本概念 网络通信协议 IP地址 TCP协议和UDP协议 网络编程基本概念 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其 外部设备,通过通信线路连接起来,在网络操作系统,网络管理软 件及网络通信协议的…

echarts图表进度条类型图

1、实现效果 左边是类别、数量,中间类似于进度条,右边是所占百分比 2、实现思路 x轴不显示,y轴的axisLabel用富文本,显示机器与台数;图表有两个数据组,分别用蓝色和灰色表示,两个柱子重合&…

Jmeter beanshell编程实例

目录 1、引言 2、需求 3、BeanShell实现 3.1、原始单元测试的java代码: 3.2、调用的RSAUtil原始方法: 3.3、使用BeanShell预处理器实现报文加密: 库导入部分: JSON报文组装: RSA加密: 3.4、取样器…

【C语言】指针进化:传参与函数(2)

莫道君行早,更有早行人。— 出自《增广贤文上集》 解释:别说你出发的早,还有比你更早的人。 这篇博客我们将会深入的理解数组传参和函数指针等指针,是非常重要的内容,学好这部分才能算真正学懂C语言。 目录 一维数组传…

【网络】socket——预备知识 | 套接字 | UDP网络通信

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 在前面本喵对网络的整体轮廓做了一个大概的介绍,比如分层,协议等等内容&#x…

UFS 14 - UFS RPMB安全读写命令

UFS 14 - UFS RPMB安全读写命令 1 SECURITY PROTOCOL IN/OUT Commands1.1 CDB format of SECURITY PROTOCOL IN/OUT commands1.2 Supported security protocols list description1.3 Certificate data description 2 CDB format of SECURITY PROTOCOL IN/OUT commands demo2.1 …

Spring Boot原理分析(一):项目启动流程、自动装配

文章目录 一、项目启动流程二、SpringBootApplication.java源码解析1.准备工作2.源码3.自定义注解4.组合注解5.注解ComponentScan过滤器 6.注解SpringBootConfigurationConfiguration 7.注解EnableAutoConfiguration(1)Spring手动装配使用XML配置文件使用…

Nerf论文阅读笔记Neuralangelo: High-Fidelity Neural Surface Reconstruction

Neuralangelo:高保真神经表面重建 公众号:AI知识物语;B站暂定;知乎同名 视频入门介绍可以参考 B站——CVPR 2023最新工作!Neuralangelo:高保真Nerf表面重建 https://www.bilibili.com/video/BV1Ju411W7…

杨氏矩阵,字符串左旋,字符串旋转结果题目解析

杨氏矩阵 题目要求:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 示例 分析:我们仔细分析,不难发现,对于杨氏矩阵老说,右上角和左下…

leetcode1020. 飞地的数量

https://leetcode.cn/classic/problems/number-of-enclaves/description/ 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的…

哈希的应用->位图

ps:左移位并不是向左移动位,而是低数据位向高数据位挪动 位图(主要接口,set(size_t)标识、reset(size_t)取消、test(size_t) 查看 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一…

做软件测试到底要不要学编程?

乔布斯曾经说过“每个人都应该学习编程,因为它会教你如何思考”,看,乔帮主都觉得所有人都应该学编程,那你说做测试的要不要学?当然要。 作为测试人员,除了上面这个原因,我觉得如果会编程&#x…

Android架构之MVC,MVP,MVVM解析

MVC架构 View:Acitivity(View)、Fragment(View)视图,在android里xml布局转成View后,加载到了Activity/Fragment里了。 Controller:Controller对应着Activity/Fragment,绑定UI,处理各种业务。 Model&#xf…

python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)

简介 上一篇,我们虽然已经将生成的最新的测试报告发出去了,但是MIMEText 只能发送正文,无法带附件,因此我还需要继续改造我们的代码,实现可以发送带有附件的邮件。发送带附件的需要导入另外一个模块 MIMEMultipart。还…

java版电子招标采购系统源码之电子招标采购实践与展望-招标采购管理系统

统一供应商门户 便捷动态、呈现丰富 供应商门户具备内外协同的能力,为外部供应商集中推送展示与其相关的所有采购业务信息(历史合作、考察整改,绩效评价等),支持供应商信息的自助维护,实时风险自动提示。…

springboot+MySQL实现4S店车辆管理系统

本系统为了数据库结构的灵活性所以打算采用MySQL来设计数据库,而java技术,B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景,所要完成的功能和开发的过程,主要说明了系统设计的重点、设计思想。

计算机体系结构基础知识介绍之使用多问题和静态调度来利用 流水线

为了提高处理器的性能,我们需要让每个时钟周期内发出多条指令,而不是只发出一条。这种多发射处理器有三种主要类型: 1. 静态调度的超标量处理器 2. VLIW(非常长指令字)处理器 3. 动态调度的超标量处理器。 这三种类型的…

lua 请求ftp服务器数据,下载文件

1、装入ftp库 2、调用ftp的get()方法 3、get()方法参数格式: 4、将返回到的数据写入文件中 例如,本次获取专利数据系统 http://patdata1.cnipa.gov.cn/ 的ftp站点数据 local ftp require("socket.ftp")--此处我没填端口号 file,err ftp.g…