网络编程(计算机网络基础)

认识网络

1.网络发展史

ARPnetA(阿帕网)->internet(因特网)->移动互联网->物联网

2.局域网与广域网

局域网

概念:的缩写是LAN(local area network),顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互相通信。

广域网

概念:广域网是相对于局域网来讲的,局域网传输距离比较近,只能是一个小范围的,如果需要长距离的传输,局域网是无法架设的。比如你在的公司总部在北京,三个分部分别在上海,深圳,成都,局域网明显是无法实现的。

实现方式:通过因特网(宽带连接,便宜)

                  通过广域专线(安全,使用一条自己的专用线路来传输数据,不允许别的设备接入)

3.光猫(了解)

概念:光猫是一种类似于基带modem(数字调制解调器)的设备,和基带modem不同的是接入的是光纤专线,是光信号。用于广域网中光电信号的转换和接口协议的转换,接入路由器,是广域网接入。

光猫的作用:将光(模拟)信号转化为数字信号

早期应用:电话线

现在应用:光纤

4.路由器 

概念(作用):用于连接局域网和外网

前面说了你的设备可以连接路由器来通信,你在你家这个区域设备之间连接在一起,但是你还要和外界通信,路由器就是把你家庭这个区域的网络和外部网络连接,你就能通过路由器提供的网络和外部联系。

路由器需要区分WAN口和LAN口,WAN口是接外网的(从Modem出来的或者从上一级路由器出来的),LAN口是接内网的,现在路由器都带无线功能,本质上无线接入就是LAN。

5.交换机与路由器

交换机:用于局域网内网的数据转发(就是处理数据,像一个物流中心,管理货物(数据)运输

路由器:用于连接局域网和外网,也能进行数据转发

注:现在大部分路由器都有有交换机的功能;

       但是交换机没有IP分配和IP寻址的功能,所以交换机没有路由器的功能。

6.网线

网线就是数据传输的通路(就像道路一样)

IP地址

1.基本概念

什么是IP地址

(1)IP地址是Internet中主机的标识(主机的身份证,如果有人要我给你送一个苹果(数据),你没有身份证,你怎么证明你是我要找的人)

(2)Internet中的主机要与别的机器通信必须具有一个IP地址

(3)IP地址为32位(IPv4)或者128位(IPv6)

(4)IPV4表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。

补充知识:

NAT设备(网络地址转换)

功能NAT设备的主要功能是将内部私有IP地址转换为公共IP地址,或反向操作,以便在局域网和外部网络(如互联网)之间进行通信。

工作原理:

当局域网内的设备访问互联网时,NAT设备记录设备的内部IP地址和源端口,并用公共IP地址替换。

响应的流量也会经过NAT设备,NAT通过记录的映射关系将数据包发送回正确的内部设备。

作用对象:NAT设备用于管理与外部网络(如互联网)的通信,通常作为路由器的一部分。

DHCP服务器(动态主机配置协议)

功能DHCP服务器的主要任务是自动分配IP地址、子网掩码、默认网关和DNS服务器ip等网络配置给网络中的设备(客户端),简化网络管理。

工作原理

当一个设备(如电脑或手机)首次连接到网络时,它会发送一个DHCP请求。

DHCP服务器接收到请求后,从预设的IP地址池中分配一个可用的IP地址,并返回给客户端。

作用对象:DHCP服务器专注于局域网内部的IP地址管理。

2.网络号/主机号(二级划分)

IP地址的组成:网络号+主机号

网络号:是一个局域网的标志,表示这个主机所属的网段(局域网)

主机号:标识在本网段内的ID,同一局域网不能重复(相当于你的主机在这个局域网范围内的编号)

不同的局域网网络号是不一样的,主机号可能和别的局域网内的主机一样但是组合在一起的IP地址就不会一样,就像你的身份证,你的所属地编号可能有很多人和你一样,但是后面哈有出生年日期和男女标识以及分配顺序,这就决定了你的身份唯一性,但是又能找出很多同一性(所属地等等)。

3.IP地址分类

IP地址分类

各个类的范围:

A类:1.0.0.1~126.255.255.254

B类:128.0.0.1~~191.255.255.254

C类:192.0.0.1~~223.255.255.254

D类(组播地址):224.0.0.1~~239.255.255.254

E类:240.0.0.1~~247.255.255.254

特殊的IP地址

0.0.0.0:在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务

127.0.0.1:回环地址/环路地址,所有发往该类地址的数据包都应该被loop back(Loopback通常指网络或系统中的一种自我测试机制,允许信号或数据从输出端返回到输入端而不经过外部设备。常见于网络协议、音频接口、软件开发等领域)。

网络地址: 每一个网段主机号为0的地址; 如:192.168.50.222-->192.168.50.0 它是网络中的一个特殊地址,不能被分配给任何具体的主机(主机号为0)

广播地址: 主机号最大的地址是该网段的广播地址 如:192.168.50.222的广播地址是192.168.50.255

全网广播地址:255.255.255.255

终端输入ifconfig可以查看自己当前设备的网络配置信息(包含IPV4,子网掩码,广播地址等)

4 子网掩码

子网掩码:(1)是一个32位的整数,作用是将某一个IP划分成网络地址和主机地址

                  (2)子网掩码长度是和IP地址长度完全一样;

特点:网络号全为1,主机号全为0;

公式:网络地址=IP & MASK(子网掩码)

           主机地址= IP& ~MASK(子网掩码取反)

5.三级划分

作用: 重新划分网络号和主机号 , 也就是重新组网 , 从而提高资源利用率

二级划分 IP :IP地址= 网络号 + 主机号(把IP地址分为两个部分)

三级划分 IP :IP地址= 网络号 + 子网号 + 主机号(把IP地址分为三个部分,把主机号分为子网号和主机号)

练习:

1.B类地址的子网掩码怎么写?                                        255.255.0.0

2.一个IP地址为192.168.3.183,计算其网络号与主机号

子网掩码:255.255.255.0 网络号:192.168.3.0 主机号:0.0.0.183

3.B类地址,同一网段最多可以连接多少个主机?            2^16-2(去掉网络地址和广播地址)

4.如果有800台电脑, 在不浪费ip情况下, 选用哪个网段?   B

5.某公司有四个部门:行政、研发1、研发2、营销,每个部门各50台计算机接入公司局域网,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?

分析:首先确定使用第几类IP地址合适,要求能表示两百台计算机,资源利用率越高越好;这里还要求我们把主机号分为子网号和主机号,子网号来表示部门,主机号才表示各个电脑;再确定子网号应该使用几位,两位就够了,00,01,10,11,这个时候我们就确定了IP地址应该是网络号(已有)+子网号(四个部门)+主机号;A类主机号十六位,十六位减去两位子网号是14位,太多了,资源浪费,能不能再少点,B类八位主机号减去两位子网号是六位,2的六次方是64,可以容下一部门五十个人,所以选择B类IP地址。

确定格式:网络号(16位)+子网号(2位)+主机号(6位)

答案:

行政:   192.168.1.00 00 0000~00 11 1111  = 192.168.1.0~~192.168.1.63

研发一:192.168.1.01 00 0000~01 11 1111 = 192.168.1.64~~192.168.1.127

研发二:192.168.1.10 00 0000~10 11 1111 = 192.168.1.128~~192.168.1.191

营销:    192.168.1.11 00 0000~11 11 1111 = 192.168.1.192~~192.168.1.255

子网掩码:255.255.255.11 00 0000 = 255.255.255.192

网络模型

1.网络的体系结构

网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务

网络体系结构即指网络的层次结构和每层所使用协议的集合

两类非常重要的体系结构:OSI与TCP/IP

2.OSI模型(ISO国际标准化组织)

OSI模型是最理想的模型,适用于教学和理解,一般不使用这种但是要记住。

应用层:指定特定应用的协议,文件传输,文件管理,电子邮件等。

表示层:确保一个系统应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解 析,管理数据加密,解密;

会话层:通信管理,负责建立或者断开通信连接

传输层:端口号,数据传输到具体那个进程程序(端到端)

网络层:路由器中是有算法的,ip,(主机到主机)(路由的转发)

链路层:格式变为帧(把数据分成包,一帧一帧的数据进行发送)

物理层:传输的是bit流(0与1一样的数据),物理信号,没有格式

3.TCP/IP模型(规范)

应用层:应用协议和应用程序的集合

传输层:决定数据交给机器的哪个任务(进程)去处理,通过端口寻址

(进程一定有进程号,不一定有端口号,端口号只有在进行网络通信才有)

网络层:提供设备到设备的传输,可以理解为通过IP寻址机器。

网络接口和物理层:屏蔽硬件差异(驱动),向上层提供统一的操作接口

OSI和TCP/IP模型对应关系图

 4.常见协议

应用层:

SSH:加密协议

telnet:远程登录协议

FTP:文件传输协议

HTTP:超文本传输协议

DNS:域名解析协议 (将人类易于记忆的域名(如www.baidu.com)转换为计算机使用的IP地址(如192.0.2.1))

SMTP/POP3:邮件传输协议

传输层:

TCP:传输控制协议

UDP:用户数据报协议

网络层:

IP(IPV4/IPV6):网间互连的协议

ICMP:网络控制管理协议,ping命令使用

IGMP:网络分组管理协议,广播和组播使用

ARP:地址解析协议 IP-->MAC

RARP:反向地址转换协议 MAC-->IP

网络接口和物理层:

ppp:点对点协议

Ethernet:是一种常见的局域网技术,使用MAC地址进行帧的传输和接收

Wi-Fi:用于无线局域网的数据传输,通常基于IEEE 802.11标准

1.DNS

由于使用IP地址来指定计算机不方便人们记忆,且输入时候容易出错,用字符标识网络中计算机名称方法。

这种命名方法就像每个人的名字,这就是域名(Domian Name )

域名服务器(Domain Name server):用来处理IP地址和域名之间的转换。

域名系统(Domain Name System,DNS):域名翻译成IP地址的软件DNS

域名结构:

例如域名 www.baidu.com.cn 从右向左看:

1.cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国

2.com为网络名,属于二级域名,它通常表示组织或部门

中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,军队mil等等

3.baidu为机构名,在此为三级域名,表示百度

4.www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。

DNS工作流程:

DNS黑客技术:

2.TPC与UDP:

相同点:

UDP TCP 协议都存在于传输层,全双工通信

不同点:

TPC(传输控制协议)

1.全双工通信、面向连接、可靠

2.是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

3.适用场景:

(1)发送小尺寸数据(如对DNS服务器进行IP地址查询时)

(2)适合于广播/组播式通信中。

(3)MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

4.高可靠原因:

(1) 三次握手、四次挥手                      

(2)序列号和应答机制                

(3)超时,错误重传机制                  

(4)拥塞控制、流量控制(滑动窗口)

UDP(用户数据报协议)

1.全双工通信、面向无连接、不可靠;因为在数据发送前不需要进行连接,所以可以进行高效率的数据传输,但是容易丢失数据。

2.适用场景:

(1)发送小尺寸数据(如对DNS服务器进行IP地址查询时)

(2)适合于广播/组播式通信中。

(3)MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5.常用网络调试命令

1.ping:用来网络联通测试(使用多)

作用:

(1)用来检测网络的连通情况和分析网络速度;

(2)根据域名得到服务器IP;

(3)根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。

参数:

字节:数据包大小

时间:响应时间,时间越小证明你链接这个地址的速度越快

TTL:Time To Live,从源到目的,每经过一个路由器,TTL减一,当TTL=0,包丢失

2.ifconfig:查看网络接口信息

参数:

ens33:网卡名称

        en:Ethernet

        s:表示热插拔插槽上的设备

        33:插槽编号

lo:回环网卡

其他命令:

格式

含义

ifconfig 具体网卡名称

只显示具体网卡的详细信息(无论是否启用)

ifconfig -a

表示显示所有网卡包括没有启动的网卡

ifconfig 网卡名称 up/down

表示开启或关闭网卡

ifconfig 网络接口 IP地址[/子网掩码长度]

新建临时IP地址(添加 一块虚拟网卡)

ifconfig -s

查看通讯情况

手机调试工具

应用市场搜全能调试

套接字:socket

1.什么是套接字

1.是一个编程接口

2.是一种特殊的文件描述符 (everything in Unix is a file)

3.socket是一种通信机制,并不仅限于TCP/IP协议

4.面向连接 (Transmission Control Protocol - TCP/IP)

5.无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)

2.为什么需要socket?

1.普通的I/O操作过程 :打开文件->读/写操作->关闭文件

2.TCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”操作 ----->进行网络通信的两个进程在不同的机器上,如何连接? 网络协议具有多样性,如何进行统一的操作 ?

需要一种通用的网络编程接口:Socket(像一个插排线,将两个进程连接)

3. socket类型

1.流式套接字(SOCK_STREAM) ---> TCP

提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流。

2.数据报套接字(SOCK_DGRAM) --> UDP

提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送可能乱序接收。

3.原始套接字(SOCK_RAW)

可以对较低层次协议如IP、ICMP直接访问,还有一些ping命令

4. 位置

在应用层和数字链路层与物理层之间

端口号

概念:

1.为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分

2.TCP端口号与UDP端口号独立(UDP port为8888,TCP port也可为8888 )

3.端口号一般由IANA (Internet Assigned Numbers Authority) 管理

4.端口用两个字节表示

分类:

(1)众所周知端口:(被占用:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用))

(2)已登记端口:1024~49151(可用来建立与其它主机的会话)

(3)动态或私有端口:49152~65535 (固定某些服务使用)

字节序

1.字节序: 不同类型的cpu主机,内存存储大于一个字节类型的数据在内存中的存放顺序

2.浮点类型,字符类型,字符串没有字节序

3.分类

        小端序(little-endian) - 低序字节存储在低地址 (主机字节序)

        大端序(big-endian)- 高序字节存储在低地址 (网络字节序)

网络中传输的数据必须使用网络字节序,即大端字节序

终端显示的数据必须是主机字节序,即小端字节序

大小端口转换

主机字节序转换为网络字节序 (小端序->大端序)

u_long htonl (u_long hostlong); //host to network long

u_short htons (u_short short); //掌握这个

网络字节序转换为主机字节序(大端序->小端序)

u_long ntohl (u_long hostlong);

u_short ntohs (u_short short);

主机字节序转换为网络字节序 (小端序->大端序)

in_addr_t inet_addr(const char *strptr); //该参数是字符串 typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; };

功能: 主机字节序转为网络字节序

参数: const char *strptr: 字符串

返回值: 返回一个无符号长整型数(无符号32位整数用十六进制表示), 否则NULL

网络字节序转换为主机字节序(大端序->小端序)

char *inet_ntoa(stuct in_addr inaddr);

功能: 将网络字节序二进制地址转换成主机字节序。

参数: stuct in_addr in addr : 只需传入一个结构体变量

返回值: 返回一个字符指针, 否则NULL;

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

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

相关文章

Windows Server部署Vue3+Spring Boot项目

在Windows Server 上部署Vue3 Spring Boot前后端分离项目的详细步骤如下: 一、环境准备 安装JDK 17 下载JDK MSI安装包(如Oracle JDK 或 OpenJDK) 双击安装,配置环境变量: JAVA_HOME:JDK安装路径&#xf…

CCF CSP 第37次(2025.03)(3_模板展开_C++)(哈希表+stringstream)

CCF CSP 第37次(2025.03)(3_模板展开_C) 解题思路:思路一(哈希表stringstream): 代码实现代码实现(思路一(哈希表stringstream))&…

数据安全管理进阶:81页 2024数据安全典型场景案例集【附全文阅读】

《2024 数据安全典型场景案例集》聚焦政务数据安全,覆盖数据细粒度治理、授权运营、接口安全、系统接入、批量数据共享、使用侧监管、风险监测、账号管控、第三方人员管理、密码应用等十大典型场景,剖析各场景风险并提供技术方案,如基于 AI 的…

Leetcode 261. 以图判树

1.题目基本信息 1.1.题目描述 给定编号从 0 到 n - 1 的 n 个结点。给定一个整数 n 和一个 edges 列表,其中 edges[i] [ai, bi] 表示图中节点 ai 和 bi 之间存在一条无向边。 如果这些边能够形成一个合法有效的树结构,则返回 true ,否则返…

【ISAQB大纲解读】LG 1-8:区分显性陈述和隐性假设(R1)

软件架构师: 应明确提出假设或先决条件,从而防止隐性假设 知道隐性假设可能会导致利益相关方之间的潜在误解 1. 应明确提出假设或先决条件,防止隐性假设 为什么重要? 隐性假设是架构风险的温床 例如:假设“所有服务都…

IT运维工具的选择标准有哪些?

选择IT运维工具时,可参考以下标准,确保工具适配业务需求且高效易用: 1. 明确业务需求与场景 • 核心目标:根据运维场景(如监控、自动化、安全等)匹配工具功能。例如,监控大规模集群选Promethe…

MySQL 核心知识整理【一】

一、MySQL存储引擎对比:InnoDB vs MyISAM 在使用MySQL时,选择合适的存储引擎对性能影响很大。最常见的两个引擎是 InnoDB 和 MyISAM,它们各自的设计目标不同,适用场景也不一样。 事务与数据安全性方面,InnoDB 支持事…

人工智能在智能制造业中的创新应用与未来趋势

随着工业4.0和智能制造的快速发展,人工智能(AI)技术正在深刻改变制造业的各个环节。从生产自动化到质量检测,从供应链优化到设备维护,AI的应用不仅提高了生产效率,还提升了产品质量和企业竞争力。本文将探讨…

arc3.2语言sort的时候报错:(sort < `(2 9 3 7 5 1)) 需要写成这种:(sort > (pair (list 3 2)))

arc语言sort的时候报错&#xff1a;(sort < (2 9 3 7 5 1)) arc> (sort < (2 9 3 7 5 1)) Error: "set-car!: expected argument of type <pair>; given: 9609216" arc> (sort < (2 9 3 )) Error: "Function call on inappropriate object…

Ubuntu 24.04 LTS Chrome 中文输入法(搜狗等)失效?一行命令解决

Ubuntu 24.04 LTS Chrome 中文输入法&#xff08;搜狗等&#xff09;失效&#xff1f;一行命令解决 在 Ubuntu 24.04 LTS 中&#xff0c;如果你发现 Chrome 浏览器用不了搜狗输入法或其他 Fcitx5 中文输入法&#xff0c;可以试试下面的方法。 直接上解决方案&#xff1a; 打…

大模型前处理-CPU

前处理包含哪些流程 分词 tokenizationembedding CPU可以做哪些优化 分词 分词在做什么&#xff1f; 什么是词元化&#xff1f; 词元化&#xff08;Tokenization&#xff09;是把一段自然语言文本拆分成更小的单元&#xff08;称为“词元”&#xff0c;即 Token&#xff0…

Kafka数据怎么保障不丢失

在分布式消息系统中&#xff0c;数据不丢失是核心可靠性需求之一。Apache Kafka 通过生产者配置、副本机制、持久化策略、消费者偏移量管理等多层机制保障数据可靠性。以下从不同维度解析 Kafka 数据不丢失的核心策略&#xff0c;并附示意图辅助理解。 一、生产者端&#xff1a…

图像处理篇---face_recognition库实现人脸检测

以下是使用face_recognition库实现人脸检测的详细步骤、实例代码及解释&#xff1a; 一、环境准备 1. 安装依赖库 pip install face_recognition opencv-python # 核心库 pip install matplotlib # 用于显示图像&#xff08;可选&#xff09;2. 依赖说明 face_recognitio…

vb.net oledb-Access 数据库本身不支持命名参数,赋值必须和参数顺序一致才行

参数顺序问题&#xff1a;OleDb 通常依赖参数添加的顺序而非名称,为什么顺序要一样? OleDbParameter 顺序依赖性的原因 OleDb 数据提供程序依赖参数添加顺序而非名称&#xff0c;这是由 OLE DB 规范和 Access 数据库的工作机制共同决定的。理解这个问题需要从数据库底层通信…

Syslog 全面介绍及在 C 语言中的应用

Syslog 概述 Syslog 是一种工业标准的日志记录协议&#xff0c;用于在网络设备之间传递日志消息。它最早由 Eric Allman 在 1980 年代为 BSD Unix 开发&#xff0c;现在已成为系统和网络管理的重要组成部分。Syslog 协议允许设备将事件消息发送到中央服务器&#xff08;称为 sy…

HackMyVM-Art

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-31 03:00 EDT Nmap scan report for 192.168.43.1 Host is up (0.0047s latency). MAC Address: C6:45:66:05:91:88 (Unknown) Nmap scan rep…

[paddle]paddle2onnx无法转换Paddle3.0.0的json格式paddle inference模型

使用PDX 3.0rc1 训练时序缺陷检测后导出的模型无法转换 Informations (please complete the following information): Inference engine for deployment: PD INFERENCE 3.0-->onnxruntime Why convert to onnx&#xff1a;在端侧设备上部署 Paddle2ONNX Version: 1.3.1 解…

DOCKER使用记录

1、拉取镜像 直接使用docker pull <image>&#xff0c;大概率会出现下面的报错信息&#xff1a; (base) jetsonyahboom:~$ docker pull ubuntu:18.04 Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while …

Java实习面试题

一、理想汽车一面 1、总结你这个人擅长什么&#xff0c;你的优势是什么&#xff1f; 2、挑一个项目详细讲讲&#xff0c;重点讲下你怎么设计的&#xff0c;你的思路是什么&#xff0c;你做的过程中遇到什么难点&#xff0c;怎么克服这些难点&#xff1f; 3、使用RabbitMQ处理…

单元测试报错

报错信息如下所示&#xff1a; 五月 30, 2025 5:35:44 下午 org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner 警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on class redis.demo.RedisTemplateTest) does not…