Linux:网络编程基础

Linux:网络编程基础

目录

1.基础知识

1.1网络干的事

1.2协议

1.3国际通用协议模型

        1.OSI模型:理想模型(7层——物数网传会表应,最全,每一层功能不一样)

        2.TCP/IP模型(实用模型-OSI 模型的简化版):

1.3国际通用模型协议

        1.3.1.应用层:

        1.3.2.传输层(网络编程主要处理的就是它)

        1.3.3 网络层

        1.3.4 网络接口层

2.网络的配置及相关命令

2.1虚拟机网络的两种工作模式:

2.2相关命令


1.基础知识

1.1网络干的事

        传递信息。(IT:Information Technology)

1.2协议

        通信双方约定的一套通信标准(只有有协议才能破译对方发的是啥)。接下来我将学习的协议是国际通用标准,在国际上通用。(私有协议使用范围更小。)

1.3国际通用协议模型

        1.3.1 OSI模型:理想模型(7层——物数网传会表应,最全,每一层功能不一样)

应用层:要传递的数据和信息

表示层:是否对数据加密、以何种形式表示(只要通过设备,就会有信息安全问题)

会话层:是否需要建立会话链接(如看直播,进行连续收发,避免发一次收一次)

传输层:传递数据的方式【①数据包传输:一包一包地法  ②流式传输:先建立一个通道,传输是连续的】(类似快递:空运,陆运...)

网络层:数据的路由(数据从A到达B)(跨局域网的通信)

数据连接层:局域网内部的通信

物理层:物理介质的连接

搞懂理想模型推荐书目:

        1.3.2 TCP/IP模型(实用模型/工业模型-OSI 模型的简化版):

应用层:(由应用层,表示层,会话层合并)传输的数据——为用户提供所需要的各种服务

传输层:传输的方式(TCP还是UDP)

网络(际)层:如何发送数据——主要解决主机到主机的通信(端到端)问题。

网络接口层:(由数据链路层,物理层合并)用于屏蔽硬件差异,负责监视数据在主机和网络之间的交换。







注意:每一层完成的功能和OSI模型是一样的

1.4国际通用模型协议

        1.4.1.应用层:

                HTTP协议:超文本传输协议——用于网页(超文本:一个文本里既包含字又包含图,视频等等,如网页)(网页-存于服务器->性能很强大的电脑->作用:为网络中的主机提供服务。  每次查看网页,本质上是从服务器下载网页到本地,每次下载网页这种功能就具象成了一种HPTTP这种协议)

                HTTPS协议:加密后的HTTP协议——用于银行。加密传输,收到后解密,更安全(传输超文本携带密码,防止钓鱼网站)【所以 HTTPS协议用得比HTTP协议更多】

                DNS协议:域名解析协议(将域名转换成IP地址)【∵①域名更容易记忆②不同地域的服务器可以设置相同的域名,输入域名可以方便访问最近的那个服务器】

                TELNET协议:远程登陆协议

                SMTP协议:邮件传输协议

                MQTT协议:物联网传输协议——本质上是向服务器发送链接,可以向服务器发消息或者订阅服务器的消息,广泛用于物联网,∵通信量特别小

嵌入式相关协议

MTP:网络时钟协议——智能手机自动网络校准时间

SNMP(光懂它就能找到不错的工作):简单网络管理协议(实现对网络设备集中式管理)

RTP/RTSP:用传输音视频的协议(安防监控)

                ...

        1.4.2.传输层(网络编程主要处理的就是它)

1.4.2.1 端口号

概念:是一个16位数字,介于1-65535

作用:区分一台主机接收到的数据包应该转交给哪个任务(进程、线程)来进行处理,使用端口号来区别

端口分类:端口号一般由IANA(Internet Assigned Numbers Authority)管理


众所周知端口:1~1023(如:FTP:21,SSH:22,HTTP:80,HTTPS:469)

保留端口:1024-5000(不建议使用)

可以使用端口:5000~65535 



TCP端口号与UDP端口号独立

应用:

        网络里面的通信是由 IP地址+端口号 来唯一决定

1.4.2.3 字节序

字节序是指不同的CPU访问内存中的多字节数据时候,存在大小端问题

应用:网络传输的时候采用大端模式-网络字节序(进行网络通信时需进行本地字节序和网络字节序的转换,不管本地是小端存储还是大端存储,进入网络都转换成大端)
//主机字节序到网络字节序 u_long htonl(u_long hostlong): u_short htons(u_short short): //网络字节序到主机字节序 u_long ntohl (u_long hostlong); u_short ntohs(u_short short);

1.4.2.3 协议

TCP(Transfer Control protocol,传输控制协议):提供面向连接的,一对一的可靠数据传输的协说
UDP (user Datagram Protocol,用户数据报协议):提供不可靠(发太快会丢包),无连接的尽力传输协议,适合音视频这类对实时性要求高的场景。
SCTP(Stream Control Transmission Protocol,流控制传输协议):TCP的增强版,提供面向连接的,多对一或多对多的可靠数据传输协议【军方使用】

 UDP协议:用户数据报协议(数据报:一包一包地传递        问题:易丢包,对方有没有收到,这个地址对不对,都无反馈)

特点:①UDP资源开销比较小

           ②UDP传输机制简单

           ③UDP传输不安全、不可靠

     
     ④UDP是无连接的

TCP协议:传输控制协议 

特点:①TCP资源开销比较大(因为包头长)

           ②TCP机制复杂

                ——通信前: 通过 “三次握手” 机制建立通信(SYN:请求应答信号“听到请回答”)(ACK:应答信号)



                ——通信过程中:确认机制(以对方收到多少字节为准而不是我发了多少字节)

                ——流量控制、拥塞控制【可以调节发送窗口和接收窗口进行流量控制】(如百度网盘下载的很慢-通过调节流量控制)

                ——通信结束后: ”四次挥手“ 结束连接(FIN:结束连接)



           ③TCP传输安全、可靠

           ④TCP有链接(只要没手动断开就一直连)

        1.4.3 网络层

协议:

IP: Intemet protocol(分为IPv4和IPv6)

ICMP: Internet控制管理协议,ping命令属于ICMP【ping为网络层的命令,用于检测端到端是否接通】

IGMP: Intermet分组管理协议,广播、组播

IPv4协议(IP地第4个版本version4)

1.IP地址(如:192.168.0.107)

        1.1        IP地址 == 网络位(192.168.0) + 主机位(107号主机)

        1.2 IP地址分类

            IPV4:采用32位的整数来表示(上世纪网络设备不多所以用的32位)(如:192.168.0.107)

            IPV6:采用了128位整数来表示(本世纪网络设备大增,IPv4不够用,才有的 IPV6。夸张地说:地球上每一粒沙子都能分配一个IP地址)(如:fe80::20c:29ff:fec1:7619)

        1.3 IP地址形式

             点分形式:192.168.0.107

             二进制形式:11000000.10101000.00000000.01101011

             域名形式:www.baidu.com

        1.4 特殊的IP地址

2.网络位:指在哪个网段之内,网段都有编号,一个网段就是一个局域网编号(192.168.0

   网段号:网络位不变 ,主机位全为0。如(192.168.0.0

3.子网掩码:用来区分IP地址的网络位和主机位,子网掩码是1的部分表示网络位,子网掩码是0的部分表示主机位【∵有可能前三部分是网络位,第四部分是主机位;也可能前两部分是网络位,后两部分是主机位】

        应用:网络位相同的IP地址可以直接通信,网络位不同(则局域网不同)不能直接通信,不同局域网通信需要借助路由器完成数据的转发

                

4.一个局域网内能容纳主机的个数 :2^主机位-2 (减去网段号和广播地址)
网段号:(网络位不变,主机位全为0)   【用于标识局域网】       不能使用

广播地址:(网络位不变,主机位全为1)  【只要发一条信息,局域网内都所有主机能收到】                           不能使用

5.IP地址的分类

6.公有地址和私有地址

        公有地址:能够直接上互联网的地址,如服务器IP地址(需向移动电信连通运营商申请)
        私有地址:只有局域网内能直接访问,不能直接上互联网的地址,需通过地址转换协议转换成公有IP地址上网。谁都先还要公有IP地址,但是因为IP地址有限,所以需私有IP地址来节省共有IP地址。局域网内大家的私有IP地址通过路由器后会转换成一个公有IP地址实现上网(可能一个小区,一个省份就那么几个公有IP地址)

        

        A类私有IP地址:10.0.0.0-10.255.255.255

        B类私有IP地址:172.16.0.0-172.31.255.255

        C类私有IP地址:192.168.0.0-192.168.255.255

        

应用:

同一网段内的IP地址能够直接通信——插上网线直接通信(不同网段也能通信,但是是间接,且必须是公有网段)②  交换机不能跨局域网通信,只有路由器可以跨局域网通信,现在把交换机和路由器做一起了
发送数据:逐层加包头接收数据:逐层拆包头

IPv6协议(IP地第6个版本version6)(不过多讲解)               

        1.4.4 网络接口层

MAC地址:48位全球唯一,网络设备的身份标识



协议:

ARP协议:根据IP地址(IP地址不唯一)获取MAC地址(网卡地址,唯一)

RARP协议:根据MAC地址获取IP地址 
应用:跨局域网通信使用IP地址(因为需要用到网络层),局域网内部通信使用MAC地址

2.网络的配置及相关命令

2.1虚拟机网络的两种工作模式:

2.1.1桥接模式:

Ubuntu与Windows网络相互独立,每个系统会单独分配一个IP地址

可以作为局域网的服务器(因为IP地址独立)

作为服务器端使用必须使用桥接模式,因为Ubuntu必须有一个真实的独立的IP地址

2.1.2NAT模式

1.Ubuntu与Windows网络关联,Ubuntu相当于Windows一个软件,Ubuntu lP地址是虚拟出来的,无法作为服务器

2.无法作为局域网服务器

作为客户端所用优先选择NAT模式,因为Windows有网,Ubuntu就有网

2.2相关命令

ifconfig命令:

ifconfig

功能:查看本机网卡的IP地址



ifconfig 网卡名 IP地址/24 up

功能:用 ifconfig 临时设 IP(重启失效):


#示例:将ens33网卡设置为192.168.0.108,子网掩码设置为255.255.255.0启动网卡

sudo ifconfig ens33 192.168.0.108/24 up


#关闭/开启网卡(开启需加sudo)

ifconfig 网卡名 down/up



示例:

ping命令

发送连接请求,测试与某个IP地址是否能够连通
ping www.baidu.com



只要能ping通,就能通信

netstat -anp命令

查网络连接

Read more

SpringBoot+Vue web药店管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

SpringBoot+Vue web药店管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

系统架构设计### 摘要 随着信息技术的飞速发展,传统药店管理模式逐渐暴露出效率低下、数据管理混乱等问题。药店在日常运营中涉及药品库存管理、销售记录、客户信息等多方面数据,传统的人工记录方式不仅耗时耗力,还容易出现错误。为了提高药店的管理效率和服务质量,开发一套基于现代Web技术的药店管理系统显得尤为重要。该系统能够实现药品信息的数字化管理,优化库存流转,提升销售效率,并为用户提供便捷的查询和购买体验。关键词:药店管理、数字化、效率提升、SpringBoot、Vue。 本系统采用前后端分离架构,后端基于SpringBoot框架实现,提供RESTful API接口,前端使用Vue.js框架构建用户界面,确保系统的高效性和可扩展性。系统主要功能包括药品信息管理、库存监控、销售记录统计、会员管理以及数据报表生成等。通过Spring Security实现用户权限控制,确保数据安全性;利用MyBatis作为持久层框架,优化数据库操作效率。系统还提供了完善的接口文档,便于后续功能扩展和维护。关键词:SpringBoot、Vue.js、RESTful API、权限控制、MyBatis。 数据表

By Ne0inhk
JAVA 异常处理:从原理到实战最佳实践

JAVA 异常处理:从原理到实战最佳实践

JAVA 异常处理:从原理到实战最佳实践 1.1 本章学习目标与重点 💡 掌握异常的分类与核心概念,理解异常处理的设计思想。 💡 熟练运用 try-catch-finally、throws、throw 处理异常。 💡 掌握自定义异常的编写与使用场景,规范异常处理流程。 ⚠️ 本章重点是 异常处理的最佳实践 和 避免常见误区,这是提升代码健壮性的核心技能。 1.2 异常的核心概念与分类 1.2.1 什么是异常 💡 异常是指程序运行过程中出现的非正常情况,它会中断程序的正常执行流程。 比如文件找不到、数组下标越界、空指针访问等,这些情况都会触发异常。 Java 中所有异常都是 Throwable 类的子类,异常处理的本质是捕获并处理这些非正常情况,保证程序可以继续运行或优雅退出。 1.2.2 异常的分类 Java 中的异常体系分为三大类,它们的父类都是 Throwable: * 是 JVM 内部的严重错误,

By Ne0inhk
Java中的char、String、StringBuilder与StringBuffer 深度详解

Java中的char、String、StringBuilder与StringBuffer 深度详解

文章目录 * 第一章:一切的基础——char原始类型 * 1.1 定义与本质 * 1.2 字符编码的演变:从char到byte * 1.3 char的初始化与赋值 * 1.4 char的运算 * 第二章:不可变的字符串——String类 * 2.1 类的定义与不可变性 * 2.2 不可变性的优势 * 2.3 创建String对象的两种方式 * 2.4 操作的真相:总是生成新对象 * 2.5 字符串拼接的陷阱与优化 * 第三章:可变的字符序列——StringBuilder与StringBuffer * 3.1 AbstractStringBuilder:共同的祖先 * 3.2 StringBuilder:非线程安全的“快枪手” * 3.3

By Ne0inhk
本地 AI 模型管理新选择:OpenWebUI+cpolar 让远程使用更自由

本地 AI 模型管理新选择:OpenWebUI+cpolar 让远程使用更自由

OpenWebUI 是一款能将本地 AI 模型操作可视化的工具,支持管理 Ollama 本地模型和接入 OpenAI 兼容 API,还有私人知识库、多用户管理等功能,不管是设计师、小团队成员还是学生党都能用。它把命令行操作变成类似微信聊天的界面,操作简单,数据存在本地,隐私有保障。 用下来发现,OpenWebUI 的交互体验很流畅,打字机效果、Markdown 渲染这些细节做得不错,新手也能快速上手管理模型。不过要注意,运行大模型时对电脑内存要求不低,至少得 8GB 以上,不然可能卡顿。 但它有个局限,默认只能在局域网内使用。比如设计师在家调好的模型,上班想继续用就得远程操控电脑,很不方便;小团队成员不在同一局域网,就没法共用模型协作。 这时候搭配 cpolar 就不一样了。cpolar 能实现内网穿透,让 OpenWebUI 突破局域网限制,出门在外用手机浏览器输入网址就能访问,还能轻松分享给朋友体验,数据传输加密也更安全,不用额外买服务器,

By Ne0inhk