网络编程预备知识

  • 一、网络协议模型

协议:事先约定好的一组规则。

  • 1、OSI七层协议模型(理性化模型,未完全实现)

上层->底层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

  • 2、TCP/IP四层协议模型

TCP/IP:指一个协议族,TCP、IP为其中最具有代表性的两个协议。

应用层、传输层、网络层、物理网络接口层

1、应用层:应用层、表示层、会话层;

              HTTP(超文本传输协议)、FTP(文件传输协议)、Telnet(远程登录协议)。

2、传输层:TCP协议、UDP协议。

3、网络层:IP协议、ICMP(报文控制协议)、IGMP。

4、物理网络接口层:数据链路层、物理层;

                                  以太网协议、令牌环网、PPP协议。

  • 二、TCP、UDP

TCP(传输控制协议):面向连接,可靠;适用于对数据可靠性要求较高的场景。

应用场景:登录程序、传输重要文件。

UDP(用户数据报协议):无连接、不可靠;适用于对实时性要求较高的场景。

应用场景:流媒体、投屏软件、广播软件。

  • 三、IP地址

IP地址:用于标识网络中的一台主机。

IPV4:32位(4字节),存在大小端问题。

IPV6:128位

IPV4:

一个IPv4地址可以被表示为X.X.X.X,其中每个X代表0到255之间的一个数字。

点分十进制:192.168.17.93

二进制:11000000   10101000   00010001   01011101

转为16进制(高->低):C0   A8    11    5D

大端:低地址存高位

0x001:C0   0x002:A8    0x003:11    0x004:5D

小端:低地址存低位

0x001:5D   0x002:11    0x003:A8    0x004:C0

  • 四、端口号

端口号:用于标识主机当中的一个进程。

unsigned short:0~65535(无符号短整型数据)

1~1024:系统保留端口

1025~5000:常用应用端口

5001~65535:用户端口

  • 五、字节序

字节序:指在存储和传输多字节数据时,字节的排列顺序。

       大端序和小端序是针对数据在内存中的存储顺序,而主机字节序和网络字节序则是针对数据在不同计算机体系结构和网络传输中的字节顺序。

主机字节序:大端、小端

网络字节序:大端

由于主机字节序不确定,在通信中将主机字节序转为网络字节序(大端)。

大端:数据高字节存放到低地址空间

小端:数据低字节存放到低地址空间

  • 六、套接字

套接字:网络中两个通信的进程所抽象出来的两个端点。

linux中的套接字(socket):是linux提供给用户使用其内核集成网络协议的接口。

套接字是一个文件描述符:系统能够分配的最小的非负整数。

       套接字是一种用于在网络上进行通信的文件描述符。它可以像文件描述符一样被用于读取和写入数据,因此也被认为是一种文件描述符。套接字和其他文件描述符一样,可以通过系统调用来进行操作,如读取、写入、关闭等。因此,可以说套接字是一种特殊的文件描述符,用于网络通信。

套接字的类型:

                       SOCK_STREAM(流式套接字):唯一对应传输层TCP协议。

                       SOCK_DGRAM(数据报套接字):唯一对应传输层UDP协议。

                       SOCK_RAW(原始套接字):本机通信。

  • 七、转化

IP地址

1、将点分十进制的IP地址转化为对应的网络字节序(用于通信)

      inet_addr("192.168.17.93");

2、将网络字节序的IP地址转化为对应的点分十进制(用于打印地址):

      inet_ntoa("caddr.sin_addr");

端口

1、将主机字节序的端口号转换为网络字节序的端口号(用于通信)host to network short:

      htons(6666);

2、将网络字节序的端口号转换为主机字节序的端口号(用于打印端口号)network to host short:

      ntohs(caddr.sin_port);

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

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

相关文章

算法学习——LeetCode力扣贪心篇4

算法学习——LeetCode力扣贪心篇4 763. 划分字母区间 763. 划分字母区间 - 力扣(LeetCode) 描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足&#xf…

【C++】---类和对象(中)默认成员函数 和 操作符重载

前言: 假如一个类中既没有成员变量也没有成员函数,那么这个类就是空类,空类并不是什么都没有,因为所有类都会生成如下6个默认成员函数: 一、构造函数 1、构造函数的定义及其特性 对于日期类对象,我们可…

基于matlab的密度散点图绘制

1. 什么是密度散点图? 密度散点图就是在普通散点图的基础上,基于样本点一定范围的样本数计算该样本点的密度,以不同的颜色来显示样本点密度的大小,这样能够直观的显示出数据的空间聚集情况,如下图分别是二维和三维密度…

【教程】C++语言基础学习笔记(六)——String字符串

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

MySQL 数据库安装教程详解(linux系统和windows系统)

MySQL 数据库是一种广泛使用的开源关系数据库管理系统。在 Linux 和 Windows 系统上安装 MySQL 数据库的步骤略有不同。以下是详细的安装教程。 Linux 系统安装教程 1. **安装前提**:确保你的 Linux 系统已经安装了 wget、unzip、tar 等必要的工具。 2. **下…

[word] word保存了但是再打开就没有了怎么办 #职场发展#其他

word保存了但是再打开就没有了怎么办 word保存了但是再打开就没有了怎么办? 一些朋友反映常常找不到自己保存在电脑中的Word的文档,不知道是怎么回事。如果是突然消失的,其实情况还是有很多种,相信大家也有一定的了解。在这里&a…

阿里云幻兽帕鲁Linux 服务器下载游戏存档的方法

阿里云幻兽帕鲁Linux 服务器下载游戏存档的方法也非常简单。 远程连接到阿里云的 linux服务器后,可以在 ECS 远程连接命令行界面,点击左上角的文件,打开文件树。通过一行命令打包。 在打包后的 Saved.tar 文件上右键,选择 下载文…

【python】python入门(输出)

本篇文章将会介绍关于python的常见输出,希望对您有帮助! 输出 用到print函数 print(oh mygod)##或者 print("oh mygod")##或者 print("oh"" ""mygod") 输出结果: 用单引号、双引号都可以 ,引号中可…

下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO

下一代Windows操作系统提前曝光了?? 微软首个为Windows而设的智能体(Agent) 亮相: 基于GPT-4V,一句话就可以在多个应用中无缝切换,完成复杂任务。整个过程无需人为干预,其执行成功…

OpenMMlab导出DETR模型并用onnxruntime推理

使用mmlab导出onnx模型: from mmdeploy.apis import torch2onnx from mmdeploy.backend.sdk.export_info import export2SDKimg demo.JPEG work_dir ./work_dir/onnx/detr save_file ./end2end.onnx deploy_cfg mmdeploy/configs/mmdet/detection/detection_on…

【Qt】qt常用控件之QIcon 以及 qrc机制设置图片路径(QtCreator)

文章目录 1. QIcon / windowIcon2. setIcon() 与 setwindowIcon()2.1 setIcon() 介绍与使用2.2 setWindowIcon 介绍与使用 3. 路径问题 & qrc机制的引入3.1 绝对路径 / 相对路径 的问题3.2 qrc机制3.3 在QtCreator下利用qrc机制引入图片 1. QIcon / windowIcon QIcon QIco…

nextjs use client 和use server区别

在Next.js中,use client和use server是用于在服务器端和客户端渲染时分别执行特定逻辑的自定义钩子。虽然具体的实现方式可能会因项目而异,但一般来说,这两个钩子有如下的区别: 执行环境:use server主要用于服务器端渲…

VUE 字段为空时,一个class搞定,适用多种情形

我抄的,我抄的,我抄的,我抄的,我抄的 但真香 在写表格时&#xff0c;当某字段为空&#xff0c;你是否是这样写的&#xff1a; <el-table-column label"更新时间" align"center" prop"updateTime"><template slot-scope"scope&qu…

黄东旭:“向量数据库”还是“向量搜索插件 + SQL 数据库”?丨我对 2024 年数据库发展趋势的思考

本文由 PingCAP 黄东旭撰写&#xff0c;讨论了数据库技术在 2023 年的快速变革&#xff0c;并对 2024 年的数据库发展趋势进行了预测。文章重点关注了 GenAI 时代对数据库的影响&#xff0c;提出了在数据库选择上的两种路径&#xff1a;“向量数据库”和“向量搜索插件 SQL 数…

PR:时间重映射

做一个变换视频速度的效果 原片如下&#xff1a; 现在将跑步的人中间一段加速&#xff0c;后面一段减速 操作如下&#xff1a; 此处点击关键帧时&#xff0c;可以用钢笔工具&#xff0c;也可以按住Ctrl键点击 操作后效果如下&#xff1a;

Write operation failed: computed value is readonly问题解决

源代码&#xff1a; // 封装倒计时逻辑函数 import { computed, ref } from vue import dayjs from dayjs export const useCountDown () > {// 1.响应式数据const time ref(0)// 格式化时间const formatTime computed(()>dayjs.unix(time.value).format(mm分ss秒))/…

XGBoost模型部署与在线预测的完整指南

导言 XGBoost是一种强大的机器学习算法&#xff0c;但训练好的模型要想在实际应用中发挥作用&#xff0c;需要进行部署并实现在线预测功能。本指南将详细介绍如何在Python中部署XGBoost模型&#xff0c;并实现在线预测功能&#xff0c;同时提供相应的代码示例。 导出模型 首…

最短路径与关键路径

目录 文章目录 前言 一.最短路径 1.基本概念 1.1什么是源点&#xff1f; 1.2什么是最短路径 2.作用 3.迪杰斯特拉算法 4. 弗洛伊德算法 4.1过程演示 二.拓扑排序 1.基本概念 1.1什么是有向无环图 1.2什么是活动 1.3什么是AOV网 1.4什么是拓扑序列 1.5什么是拓扑…

Ubuntu 23.10通过APT安装Open vSwitch

正文共&#xff1a;888 字 8 图&#xff0c;预估阅读时间&#xff1a;1 分钟 先拜年&#xff01;祝各位龙年行大运&#xff0c;腾跃展宏图&#xff01; 之前在介绍OpenStack的时候介绍过&#xff08;什么是OpenStack&#xff1f;&#xff09;&#xff0c;OpenStack是一个开源的…

Python slice函数

在Python编程中&#xff0c;slice&#xff08;切片&#xff09;操作是一种强大且灵活的方式&#xff0c;用于从序列&#xff08;如列表、元组、字符串等&#xff09;中获取子序列。通过切片操作&#xff0c;可以轻松地提取序列中的一部分&#xff0c;进行遍历、修改、复制等操作…