8.8网络编程

news2024/11/24 15:46:58

笔记

网络基础

一.网络通信的引入

IPC通信方式,只能完成同一台主机之间多个进程间的通信,在实现跨主机的多个进程间通信时,就显得力不从心了。所以我们引入了网络通信,基于套接字socket的通信方式,能够完成同一主机之间的多个进程间的通信和跨主机的多个进程间的通信。

任何一种通信方式都需要一个通信载体:管道通信需要使用管道文件进行数据缓冲;消息队列、共享内存、信号灯集需要使用IPC对象来进行数据的缓冲;网络通信通过套接字文件实现数据的缓冲

二.网络发展历史

发展阶段:

        1.APRAne阶段---冷战产物

        2.TCP/IP协议阶段---只有TCP和IP两个协议

        3.osi开放系统互联模型

        4.TCP/IP协议族

2.1APRAnet阶段

阿帕网,是inteme的最早雏形

不能互联不同类型的计算机和不同类型的操作系统

没有纠错功能

2.2TCP/IP两个协议阶段

在计算机网络中,要做到有条不紊的交换数据,需要遵循一些事先约定好的规则。这些规则明确规定了所交换的数据的格式以及有关的同步问题。为了进行数据中的数据交换而建立的规则、标准和约定称为网络协议

联网协议:定义如何在一个网络上传输信息的一组规则

TCP/IP协议分成了两个不同的协议:

        用来检测网络传输中差错的传输控制协议TCP

        专门负责对不同网络进行互联的互联网协议IP

2.3网络体系结构及OSI开放系统系统互联模型
2.3.1​网络体系结构概念

        每一层都有自己独立的功能,当每一层都不可获取

        通常把功能相近的协议组织在一起放在一层,协议栈。所以每一层中其实有多个协议

分层的好处:

1、各层之间独立,每一层不需要知道下一层如何实现,而仅仅只需要知道该层通过层间的接口所提供的服务

2、稳定,灵活性好,当任意一层发生变化时,只需要层间接口关系保持不变,而​​​​​​这层以上或以下层不受影响

3、易于实现和维护(知道是什么功能,就到指定层去查找)

4、促进标准化工作:每一层的功能及所提供的服务都有了精确的说明

5、结构上不可分割开:各层都可以采用最合适的技术来实现

2.3.2OSI开放系统互联模型

OSI是ISO(国际标准化组织)提出的一个理想化模型

OSI共有七层

2.3.3TCP/IP协议族的体系结构

TCP/IP协议族是Internet事实上的工业标准

TCP/IP网络体系结构四层:

应用层

传输层

网络层

链路层(网络接口和物理层)

虽然TCP/IP体系结构只有四层,但是做的事儿和OSI的七层是一样的

TCP/IP四层结构和OSI开放系统互联模型七层的对应关系

linux内核五大功能:

内存管理:内存的分配和回收

进程管理:时间片轮转,上下文切换、

文件管理:将一堆0和1转换成人类好识别的字符

设备管理:linux下一切皆文件

网络管理:网络协议栈的管理

        协议:发送方和接收方都遵循的:数据发送及数据解析的一组准则

2.3.4数据封包和拆包的过程

一帧数据的说明

        大小为64-1518(包含以太网的头部14字节、尾部4字节)

        如果数据大于MTU(最大传输单元,linux默认是1500),需要分成多次进行传输

        可以使用指令lfconfig查看MTU最大传输单元

3.3.5TCP/IP四层结构中常见的协议

应用层:

        HTTP(Hypertext Transfer Protocol)超文本传输协议

                万维网的数据通信的基础

        FTP(File Transfer Protocol)文件传输协议

                是用于在网络上进行文件传输的一套标准协议,使用TCP传输

        TFTP(Trivial File Transfer Protocol)间的文件传输协议

                是用于在网络上进行文件传输的一套标准协议,使用UDP传输

        SMtP(Simple Mail Transfer Protocol)简单邮件传输协议

                一种提供可靠且有效的电子邮件传输的协议

传输层:

        TCP(Transport Control Protocol)传输控制协议

                是一种面向连接的、可靠的、基于字节流的传输层通信协议

        UDP(User Datagram Protocol)用户数据报协议

                是一种无连接、不可靠、快速传输的传输层通信协议

网络层:

        IP(Internetworking Protocol)网络互连协议

                是指能够在多个不同网络间实现信息传输的协议

        ICMP(Internet Control Message Protocol)互联网控制信息协议

                用于在IP主机、路由器之间传递控制消息、ping命令使用的协议

        IGMP(Internet Group Management Protocol)互联网组管理

                是一个组播协议,用于主机和组播路由器之间的通信

链路层:

        ARP(Address Resolution Protocol)地址解析协议

                通过IP地址获取对方mac地址

        RARP(Reverse Address Resolution Protocol)逆向地址解析协议

                通过mac地址获取IP地址

注意:

每层使用的协议,有下层决定,不能乱用

三.TCP和UDP异同

共同点:同属于传输层的协议,都用于网络传输

TCP ————> 稳定

        1>提供面向连接的,可靠的数据传输服务

        2>传输过程中,数据无误、数据无丢失、数据无失序、数据无重复

                1.TCP会给每个数据包编上编号,该编号称之为序列号

                2.每个序列号都需要应答包应答,如果没有应答,则会将上面的包重复发送直到正确为止

        3>数据传输效率低,消耗资源多

        4>数据收发是不同步的

                1.为了提高效率,TCP会将多个较小,并且发送间隔短的数据包,沾成一个包发送,该现象称为沾包现象

                2.该沾包算法称之为Nagle算法

        5> TCP的使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的传输场合,一般使用TCP协议

                列如:账号登陆,大型文间下载的时候

UDP————>快速

        1>面向无连接的,不保证数据的可靠的,尽最大努力传输的协议

        2>数据传输过程中,可能出现数据丢失、重复、失序现象

        3>数据传输效率高,实时性高

        4>限制每次传输的数据大小,多出部分直接忽略删除

        5>收发是同步的,不会沾包

        6>适用场景:发送小尺寸的,在接收数据给出应答比较困难的情况下

                列如:广播、通讯软件的音视频

四.网络编程基础相关的概念

4.1字节序

1>不同主机在存储多字节整数时(short、int、long),由于cpu架构的不同,存储方式也不同,大致分为两类:

        大端存储:地址地位存储数据的高位

        小端存储:地址地位存储数据的低位

2>验证方式:使用指针、共用体

4.2IP地址

1>ip地址的相关概念

        1、ip地址全称为(Internet Protocol Address):是主机在网络中的唯一标识。

        2、当数据在网络中传输时,需要要携带源ip地址和目的ip地址,路由器就是依靠该地址进行路由选择,以便于确定对端主机的

2> ip地址的分类

        1、ipV4:采用的是4字节无符号整数表示,取值范围【0, 2^32-1】

                LAN(local area network): 局域网

                WAN(Wide Area Network):广域网

        2、ipV6:采用16字节无符号整数表示,取值范围【0, 2^128-1】

3> ip地址的分类:ip地址一共分为五类:A、B、C、D、E类网络

4> 一个局域网下的特殊的IP地址

        1、网络号 + 0:表示该网络,不分配给任何主机使用

        2、网络号 + 255:广播地址,不分配给任何主机使用

        3、网络号 + 1:默认为网关地址

        4、127.0.0.1:本地环回地址,用于主机内部自测使用

        5、0.0.0.0:表示当前局域网的任意一个主机号

        6、255.255.255.255:一般表示广播

5> 点分十进制

由于ip地址是一个4字节无符号整数,如果真用整数表示,是一个非常难记忆的数据。为了解决这个问题,我们引入了点分十进制,将4字节的每一个字节为单位转变成十进制数,中间用点隔开。在C语言中,使用字符串存储

由于网络通信中依然使用的是4字节无符号整数,那就需要引入点分十进制与4字节无符号整数转变函数

4.3端口号

1> 为了区分同一主机上的多个进程,使用端口号来进行处理

2> 端口号是一个2字节的无符号整数存储,取值范围【0,65535】

3> 网络通信中两个决定性因素:IP + 端口号

4> 端口号的分类:

众所周知的端口号:

0~1023端口我们编程时候不要使用,是那些”VIP“应用程序占了

TCP 21端口:FTP文件传输服务

TCP 23端口:TELNET终端仿真服务

TCP 25端口:SMTP简单邮件传输服务

TCP 110端口:POP3邮局协议版本3

TCP 80端口:HTTP超文本传输服务

TCP 443端口:HTTPS加密超文本传输服务

UDP 53端口:DNS域名解析服务

UDP 69端口:TFTP文件传输服务

特殊的端口函数,存储在linux中的 /etc/services文件中

TCP和UDP的端口号是相互独立的

可以使用的:1024~49151,就是我们平时编写服务器使用的端口号

临时端口号:49152~65535,这部分是客户端运行时候动态选择的

思维导图

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

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

相关文章

AI Agent工程师认证-学习笔记(2)——【多Agent】AgentScope

基础学习链接:【多Agent】AgentScope学习指南 速通攻略:零基础做个多智能体游戏 Agentscope入门文档:AgentScope 初探 应用开发进阶:AgentScope应用开发入门 AgentScope官方文档:AgentScope官方文档 AgentScope开…

Ghidra:开源软件逆向工程框架

Ghidra 是一个软件逆向工程 (SRE) 框架 Ghidra 是一种尖端的开源软件逆向工程 (SRE) 框架,是美国国家安全局 (NSA) 研究局的产品。 Ghidra 该框架具有高端软件分析工具,使用户能够分析跨各种平台(包括 Windows、macOS 和 Linux&#xff09…

【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例

中国证监会在 2020 年启动了区块链建设试点工作,提出建设基于区块链的场外市场登记系统和交易报告库,利 用区块链去中心化、不易篡改、安全稳定等技术特点,构建区域性股权市场数字化信任机制,为区域性股权市场 提供基础支撑设施。…

【网编】——UDP编程

宏观操作 服务器:socket创套接字—bind绑定连接—recvfrom接收数据/sendto发送数据 客户端:socket创套接字—sendto发送数/recvfrom接收数据—close关闭套接字 函数 recv ssize_t recvfrom ( int sockfd , void * buf , size_t len , int flags , str…

【秋招笔试】8.11大疆秋招(第三套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

实时推荐算法的架构

1. 实时推荐算法的架构设计 偷得浮生半日闲,跟大家一起聊一聊大家最喜欢的实时推荐算法架构,具体如图1.1,架构的详解则见下一章节《2. 实时推荐算法架构设计详解》。 图 1.1 实时推荐算法的架构设计 2. 实时推荐算法架构设计详解 2.1 数据源…

MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。 1.MySQL 数据类型 SQL语言是不区分大…

C++ 126类和对象_ 运算符重载_仿函数调用

126类和对象_ 运算符重载_仿函数调用 学习内容 仿函数调用 结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错 #include<string>//126类和对象_ 运算符重载_仿函数调用 //学习内容 //仿函数调用class MyPrint { …

【在线+sdwebui】在线免费运行stable-diffusion-webui (无需配置环境)

在线运行平台: https://platform.virtaicloud.com/gemini_web/auth/register 一、进入项目页面启动环境 项目&#xff1a;https://open.virtaicloud.com/web/project/detail/460841914028511232 1.1 点击运行 1.2 克隆环境到注册后的平台 1.3 自动适配项目最低配置的显卡 &…

Java面试题--JVM大厂篇之高并发Java应用的秘密武器:深入剖析GC优化实战案例

引言: 晚上好,Java开发者们!在高并发的现代应用中,垃圾回收器(GC)是Java性能优化的重要环节。尤其在CMS(Concurrent Mark-Sweep)GC曾经担任主角的日子里,适当的调优和优化措施至关重要。本篇文章将通过三个实际案例,探讨如何在不同场景中优化CMS GC,为你揭示Java性能…

前端如何使用Nginx代理dist网页,代理websocket,代理后端

本文将指导您如何配置Nginx以代理前后端分离的项目&#xff0c;并特别说明了对WebSocket的代理设置。通过本教程&#xff0c;您将能够实现一次性配置&#xff0c;进而使项目能够在任意局域网服务器上部署&#xff0c;并可通过IP地址或域名访问服务。 笔者建议 先速览本文了解大…

再见Figma!!新的设计,代码协作神器!【送源码】

软件介绍 Penpot 是一款专门用来帮助设计师和开发者更好地合作的软件。它可以让设计师轻松地做出漂亮的设计稿&#xff0c;还能让这些设计稿变成真正的网站或者应用的一部分。这样&#xff0c;设计师和开发者之间就不会因为沟通不畅而产生麻烦了。 Penpot 专为设计师与开发者之…

Android 下载安装配置

文章目录 Android Studio 下载安装配置1. 下载JDK2. JDK环境配置&#xff1a;3. 测试JDK是否安装成功&#xff1a;4. 下载Android Studio:5. 配置Android Studio:6. android studio提速方法1&#xff08;不行&#xff09;方法2&#xff1a;(很行&#xff09; Android Studio 下…

OpenDDS集中发现服务DCPSInfoRepo联邦机制

OpenDDS在提供DCPSInfoRepo集中发现服务的基础上&#xff0c;又提供了集中发现服务DCPSInfoRepo的联邦功能&#xff0c;实际上就是集群功能。 联邦Federation间的通信主题&#xff0c;用于Federation联邦节点间DDS对象的资源库一致性迁移&#xff0c;包括 1&#xff09;OwnerUp…

力扣热题100_图论_994_腐烂的橘子

文章目录 题目链接解题思路解题代码 题目链接 994. 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周…

数据可视化实用干货分享

在当今的数字化时代&#xff0c;数据已成为企业决策的重要基石。然而&#xff0c;面对海量的数据&#xff0c;如何高效地理解、分析和应用这些数据&#xff0c;成为企业面临的一大挑战。数据可视化作为一种将数据转化为图形或图表的技术&#xff0c;为企业提供了强有力的支持。…

第八季完美童模全球人气总冠军【杜姗珊】至高加冕 见证星芒风采!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕&#xff0c;在盛大的颁奖典礼上&#xff0c; 全球观众网友通过现场参与和网络直播的方式&#xff0c;共同见证了新一代“模”王诞生&#xff01;在众多优秀的小超模中&#xff0c;来自上海的女孩杜姗珊从本次…

SRGAN:使用生成对抗网络对图像进行超分辨率重构

SRGAN&#xff1a;使用生成对抗网络对图像进行超分辨率重构 前言相关介绍SRGAN 的工作原理核心思想主要组件训练目标 优点缺点总结 实验环境项目地址LinuxWindows 项目结构具体用法准备数据集进行训练进行测试测试基准数据集测试单张图像测试单个视频 参考文献 前言 由于本人水…

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

20240814使用串口控制MC-105Q的机芯确认变焦

20240814使用串口控制MC-105Q的机芯确认变焦 2024/8/14 20:44 缘起&#xff1a;使用的是LVDS OUT的MC-105Q的机芯&#xff0c;最近需要查看光学/电子变焦。 打开电子变焦&#xff1a;81 01 04 06 02 ff 放大&#xff1a;81 01 04 07 02 FF 缩小&#xff1a;81 01 04 07 03 FF 串…