(一)CSharp-网络编程

news2024/12/28 20:05:57

一、OSI 参考模型

(1)物理层
作为原始的位流或电气处理。

(2)数据链路层
负责建立、维持和释放数据链路的连接。

(3)网络层
选择合适的网间路由和交换结点,以确保数据及时传送。网络层将数据链路层提供的帧组织成数据包,包中封装有网络层包头、其中含有逻辑地址信息(源站点和目的站点地址的网络地址)

(4)传输层
,为两个端系统(也就是源站和目的站)的会话层之间,提供建立、维护和取消传输连接的功能,并负责可靠地传输数据。

(5)会话层
提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。

(6)表示层
提供格式化的表示和转换数据服务。

(7)应用层
提供网络与用户应用软件之间的接口服务。

请添加图片描述

二、TCP/IP 模型

(1)链路层
负责接收 IP 数据报并通过网络发送到网络传输媒体上。

(2)网络层
把分组发往目标网络或主机。

(3)传输层
TCP 和 UDP 协议。

(4)应用层
超文本传输协议(HTTP)、简单网络管理协议(SNMP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)、域名系统(DNS)、远程登录协议(Telnet)。

请添加图片描述

请添加图片描述

三、IP 地址

A 类: 0 ******* xxxxxxxx xxxxxxxx xxxxxxxx
B 类:10 ****** ******** xxxxxxxx xxxxxxxx
C 类:110 ***** ******** ******** xxxxxxxx
D 类:1110 xxxx xxxxxxxx xxxxxxxx xxxxxxxx
E 类:1111 xxxx xxxxxxxx xxxxxxxx xxxxxxxx

A 类地址: 第一个字节为网络地址,后三个字节为主机地址。
B 类地址: 前两个字节为网络地址,后两个字i节为主机地址。
C 类地址: 前三个字节为网络地址,最后一个字节为主机地址。
D 类地址: 多播地址,用于多播通信。只能作为目的地址,不能作为源地址。
E 类地址: 实验性地址,一般不会用到。

网路地址: 主机地址为0。例如,B类IP 地址为 175.22.10.48,则网络地址为175.22.0.0。
广播地址: 在 A、B、C 类地址中,主机号全为 1 的地址为广播地址。
回送地址: 首字节数值为127的地址是一个保留地址。用于网络测试或本机进程间通信,数据报不输出线路上。

1、子网与掩码

主机地址分为若干个子网,分为子网地址和主机地址。对于网路地址和子网地址的地址掩码位为1。对于主机地址的地址掩码位为0.

2、端口号

(1)全局分配。
(2)本地分配。

TCP/IP 端口号分为:

(1)服务器端使用的端口号。
服务端的端口号又分为:公认端口号和系统端口号。端口号范围:0~1023
注册端口号,范围:1024~49151。

(2)客户端使用的端口号
动态和或私有端口。端口号范围:49152~65535

四、数据封装与解封装

数据封装: 主机通过网络向其他设备传输数据时,首先要对数据进行打包。
每一层都有各自的协议数据单元(Protocol Data Units,PDU)。

请添加图片描述

解封装: 目的主机收到一个以太网数据帧时,数据就开始从协议栈中有底向上升,同时去掉各层协议加上的报文首部。每层协议都要去检查报文首部中的协议标识,以确定接收数据的上层协议。

五、.NET 中的网络组件

提供两个命名空间:System.NET 和 System.Web。

表-网络组件命名空间及其功能

命名空间功能概述
System.Net为当前网络上流行的多种协议提供一个统一、简单的编程接口。
System.Net.Cache定义类型和枚举,用于使用 WebRequest 和 HttpWebRequest 类获取的资源定义缓存策略
System.Net.Configuration所含类提供以编程方式访问和更新 System.Net 命名空间的配置设置的功能
System.Net.Mail用于将电子邮件发送到简单邮件传输协议(SMTP)服务器进行传送的类
System.Net.Mime包含用于表示多用途 Internet 邮件交换(MINE)标头的类型。这些类型与 System.Net.Mail 命名空间中的类型一起使用,用于在使用 SmtpClient 类发送电子邮件时指定 Content-Type、Content-Disposition 和 Content-transfer-Encoding 标头
System.Net.NetworkInformation提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问。该命名空间还包含实现 Ping 实用工具的类。您可以使用 Ping 和相关的类检查是否可通过网络访问某台计算机
System.Net.Security为网络流在主机间的传输提供了安全机制
System.Net.Sockets为需要严格控制网络访问的开发人员提供 Window 套接字(Windsock)接口的托管实现
System.Web包含启用浏览器/服务器通信的类和接口。这些命令空间类用于管理到客户端的 HTTP 输出(HttpResponse)和读取 HTTP 请求(HttpRequest)。附加的类则提供了一些功能,用于服务器端的实用程序以及进程、cookie 管理、文件传输、异常信息和输出缓存控制
System.Web.UI包含创建 Web 窗体页的类,包括 Page 类和用于创建 Web 用户界面的其他标准类
System.Web.UI.HtmlControls包含创建 ASP.NET Web 服务器控件的类。当添加到 Web 窗体时,这些控件将呈现浏览器特定的 HTML 和脚本,用以创建与设备无关的 Web 用户界面
System.Web.Mobile包含生成 ASP.NET 移动 Web 应用程序所需的核心功能,包括身份验证和错误处理
System.Web.UI.MobileControls包含一组 ASP.NET 服务器控件,这些控件可以针对不同的移动设备呈现应用程序
System.Web.Services包含能够生成和实用 XML Web services 的类,这些服务是驻留在 Web 服务器中的可编程实体,并通过标准 Internet 协议公开

表- System.NET 命名空间的主要类组成及功能

类名功能概述
DNS提供简单域名解析功能
DnsPermission控制对网络 DNS 服务器的访问
EndPoint用于标识网络地址
FileWebRequest为 WebRequest 类提供了一个文件系统实现
FileWebResponse为 WebResponse 类提供了一个文件系统实现
Http Version定义了由 HttpWebRequest 和 HttpWebResponse 类支持的 HTTP 版本号
HttpWebRequest为 WebRequest 类提供了特定于 HTTP 的实现
HttpWebReponse为 WebResponse 类提供了特定于 HTTP 的实现
IPAddress提供了 IP 地址
IPEndPoint以 IP 地址和端口号的形式代表一个网络终端
IPHostEntry为 Internet 主机地址信息提供了容器类
ProtocolViolationException当实用网络协议时出现错误,则将抛出由该类所代表的异常
SocketAddress代表一个套接字地址
SocketPermission控制在传输地址上生成或接收连接的权限
SocketPermissionAttribute允许将 SocketPermission 的安全动作,施用于实用声明安全性的代码
WebClient为客户与 Internet 资源间的数据发送和接收提供了通用方法
WebException当通过可插入协议访问网络时出现错误,则将抛出由该类代表的异常
WebProxy包含 WebRequset 类的 HTTP 代理
WebRequest代表一个到 URI 的请求
WebResponse代表来自 URI 的响应

表-System.Net.Sockets 命名空间的主要类组成功能

类名功能概述
LingerOption包含套接字延迟时间的信息,即当数据仍在发送时,套接字应在关闭后保持的时间
MulticastOption包含了 IP 多点传送数据包的选项值
NetworkStream为网络访问提供了基础数据流
Socket实现了 Berkeley 套接字接口
SocketException当出现套接字错误时,将抛出由该类所代表的异常
TCPClient为 TCP 网路服务提供了客户链接
TCPListener用以监听 TCP 客户连接
UDPClient用于提供 UDP 网络服务

表-System.Web 命名空间的主要类组成及功能

类名功能概述
HttpApplication定义了 ASP.NET 应用程序中所有应用程序对象的通用方法、属性和事件
HttpApplicationState允许 ASP.NET 应用程序中的多个会话和请求共享全局信息
HttpBrowserCapabilities允许服务器收集客户端浏览器的性能信息
HttpContext封装了所有关于 HTTP 请求的特定信息
HttpException提供了生成 HTTP 异常的手段
HttpFileCollection为由用户上传的文件提供访问和组织手段
HttpParseException为生成 HTTP 解析异常提供了手段
HttpPostedFile提供了访问由客户上传的文件的方式
HttpRequest允许 ASP.NET 读取在 Web 请求中由客户发送的 HTTP 值
HttpResponse封装了来自一个 ASP.NET 操作的 HTTP 响应信息
HttpUtility为处理 Web 请求时的 URL 编码和解码提供了方法
ProcessInfo提供了当前运行的进程信息

六、网络编程中的常用类

1、IP 地址类

表- IPAddress 类属性和方法

属性、方法名说明
Any只读属性,提供了一个 IP 地址,标识服务器应该监听所有网络接口上的客户活动
Broadcast只读属性,提供 IP 广播地址,等价于 255.255.255.255
Loopback只读属性,提供 IP 回送地址,等价于 127.0.0.1
None只读属性,提供一个 IP 地址,标识不应使用网络接口
Address获取或设置一个 IP 地址
AddFamily指定 IP 地址的地址族
Equals()比较两个 IP 地址
GetHashCode()获取 IP 地址哈希值
HostToNetworkOrder()将主机字节顺序值转换为网络字节顺序值
Parse()将 IP 地址字符串转换为 IP 地址实例

2、IPHostEntry 类

为 Internet 主机地址信息提供容器的累,它将 DNS 主机名与一个别名数组和匹配的 IP 地址数组相关。通常 IPHostEntry 类作为 Dns 类的辅助类使用。

该类的属性:

  • Aliases 属性: 获取或设置与主机相关的别名清单。
  • AddressList 属性: 获取或设置与主机相关的 IP 地址。其值为 IPAddress 类型的数组,其中包含的 IP 地址用于解析 Aliases 属性中的主机名。
  • HostName 属性: 获取或设置主机的 DNS 名。包含服务器的基础主机名,如果服务器的 DNS 项定义了附加别名,则可通过 Aliases 属性使用他们。

3、IPEndPoint 类

以 IP 地址和端口号的形式代表一个网络终端。该类中包含应用程序连接到主机服务时需要的主机和端口信息,通过组合主机的 IP 地址和端口号构成服务的一个连接点。

表- IPEndPoint 类属性和方法

属性、方法名说明
Address获取或设置 EndPoint 的 IP 地址
AddressFamily获取 IP 地址族
Port获取或设置 EndPoint 的 TCP 端口号
MaxPort用于指定可被赋予 Port 属性的最大值
MinPort用于指定可被赋予 Port 属性的最小值
Create()调用 Create() 方法,以根据套接字地址创建 EndPoint
Serialize()调用 Serialize() 方法,以将 EndPoint 信息序列化到一个 SocketAddress 实例中

4、域名解析类

Dns 类是一个静态类,它提供了有关域名解析的操作,它将从网路主机域名系统中获取 IP 地址和主机名、WWW 域名的对应关系。它返回一个 IPHostEntry 对象以保存结果。如果返回值是多个信息,IPHostEntry 将返回主机的多个地址和别名。

表-Dns 类方法

属性、方法名说明
BeginGetHostByName()开始由主机名获得 IPHostEntry 信息,异步操作
BeginGetHostEntry()开始由 IP 地址或主机名获得 IPHostEntry 信息,异步操作
BeginResolve()开始请求域名解析,由 WWW 名获得 IPHostEntry 信息,异步操作
EndGetHostByName()终止对 DNS 信息的异步请求(与 BeginGetHostByName()对应)
EndGetHostEntry()终止对 DNS 信息的异步请求(与 BeginGetHostEntry()对应)
EndResolve()终止对 DNS 信息解析的异步请求
GetHostByAddress()根据指定 IP 地址创建一个 IPHostEntry 实例
GetHostByName()根据主机名获取一个 IPHostEntry 实例
GetHostEntry()根据 IP 地址或主机名获取一个 IPHostEntry 实例
GetHostNamr()获取本地计算机的主机名
Resolve()将 DNS 主机名或 IP 字符串转换为 IPHostEntry 实例

5、DnsPermission 类

控制对网络 DNS 服务器的访问。默认情况下,所有本地和 Internet 域中的应用程序都能访问 DNS 服务,并且对 Internet 应用程序无 DNS 许可。

表-DnsPermission 类方法

属性、方法名说明
Copy()创建当前实例的拷贝
FromXml()根据 XML 编码重构 DnsPermission 实例
Intersect()创建当前 DnsPermission 实例与指定 DnsPermission 实例的交集
IsSubsetOf()确定当前 DnsPermission 实例是否为指定 DnsPermission 实例的子集
IsUnrestricted()检查对象的许可状态
ToXml()使用当前的 DnsPermission 实例及其状态创建 XML 编码
Union()创建当前 DnsPermission 实例与指定 DnsPermission 实例的并集

类的代码示例

        static void Main(string[] args)
        {
            string strHostName;
            //获取本地计算机名称
            strHostName = Dns.GetHostName();
            Console.WriteLine("本地计算机名:" + strHostName);
            //由本地计算机名称获取本机 IP 地址
            IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
            IPAddress[] addr = ipEntry.AddressList;

            //显示本地 IP 地址
            for (int i = 0; i < addr.Length; i++)
            {
                Console.WriteLine("IP 地址[{0}]: {1}", i, addr[i].ToString());
                Console.WriteLine("地址类型[{0}]: {1}", i, addr[i].AddressFamily.ToString());
            }
            
            Console.ReadKey();
        }

输出结果:

本地计算机名:DESKTOP-H970UHE
IP 地址[0]: fe80::658c:f0d9:7857:f6e7%9
地址类型[0]: InterNetworkV6
IP 地址[1]: 192.168.0.105
地址类型[1]: InterNetwork

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

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

相关文章

Flutter性能优化的一些路径思考

不可否认 Flutter 是一个非常强大的移动应用开发框架&#xff0c;我们在技术架构选型时就是选用的 Flutter&#xff0c;特别是跨端能力属实很优秀&#xff0c;but 也逐渐发现在复杂的应用程序实现中&#xff0c;App 的性能会受到一些影响。 其实这个问题&#xff0c;我们内部…

如何用Dialog DA1468X DK PRO测试其他板子的电流

2021.09.27 Jim 目录 工具准备... 1 PC上位机安装... 1 打开PC上位机... 1 消除DA1468X开发板本身底电流... 2 测试待测板子的功耗... 3 电压调节... 4 跳线帽... 6 工具准备 DA1468X DK PRO开发板一套&#xff0c;不需要装顶板的小板子&#xff0c;只需要母板&#…

「缤纷色彩的饼状图」:通过使用matplotlib库绘制饼状图,让读者期待在这个色彩缤纷的图表中探索数据的美丽。

嘿&#xff0c;大家好&#xff01;今天我要带你们探索一个有趣的话题&#xff1a;使用matplotlib库绘制饼状图。虽然这听起来可能有些复杂&#xff0c;但我会用轻松幽默的语言给大家讲解&#xff01;准备好了吗&#xff1f;让我们开始吧&#xff01; 首先&#xff0c;我们需要导…

人工智能的奥秘:机器学习的各大门派

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。 文章分类在学习摘录和笔记专…

2023网络安全 -- 正向连接与反向连接

一、正向连接&#xff0c;Linux服务器主动控制windows服务器 1、上传nc到windows服务器上运行 2、以管理员身份运行cmd 3、执行下面命令&#xff0c;监听任意来自8899端口的数据&#xff0c;等待服务器来连接 nc -e cmd -lvvp 8899 4、Linux服务器执行如下命令&#xff0c;i…

解决USB设备PC不识别问题思路(亲测方案)

前言&#xff1a; 因环境是集控封锁USB端口的&#xff0c;所以刚碰到用户出现此问题&#xff0c;一般都认为是策略封堵拒绝了&#xff0c;但经过后面测试及权限查看是没问题的&#xff0c;所以深究一看&#xff0c;完全是USB设备都没有被PC主机识别的问题。按常规我们一般碰到这…

渗透怎么学?渗透测试中超全的提权思路来了!

提权Webshell&#xff1a;尽量能够获取webshell&#xff0c;如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本&#xff1b;或者利用漏洞&#xff08;系统漏洞&#xff0c;服务器漏洞&#xff0c;第三方软件漏洞&#xff0c;数据库漏洞&#xff09;来获取shell。 …

webpack3 打包vue项目导致app体积过大

问题说明&#xff1a;打包导致 js 很大&#xff0c;然后访问特别慢。 Q&#xff1a;如果你的 js 达到了好几M&#xff0c;&#xff08;除了个别情况&#xff0c;比如的代码量真的超级大到不行&#xff0c;其实这个本身就不成立&#xff09;。我最开始就是&#xff0c;打包了我…

CSDN个性化推荐系统-负反馈测试

文章目录 前言一、uc不感兴趣标签过滤测试1.uc不感兴趣标签获取(uc_unlike_tag_list)1.1个人中心界面1.2从标签中可以发现什么&#xff1f;1.3与研发确认点1.4设计开发1.5接口获取结果 2.推荐流文章标签获取(tag_list)2.1部分代码2.2基本标签校验2.3基本标签校验结果 3.推荐流u…

Linux——DNS域名解析服务

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。 个人主页&#xff1a;小李会科技的…

【③MySQL 数据查询】:提高查询的效率

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL数据查询的讲解&#xff08;基本、分组、排序、聚合、分页、条件查询&#xff09; 目录 前言一、基本查询二、条件查询三、聚合函数(统计函数)四、分组查询五、排序查询五、分页查询六、总结 一、基本查询 MySQ…

海格里斯HEGERLS仓储设备高端定制|四向穿梭车立体库仓储的重要设备换层提升机

随着科技的快速发展&#xff0c;仓储物流行业已慢慢的朝着无人化、自动化和智能化方向快速发展&#xff0c;用户的需求量也随之日益提升。自动化立体库早已成为很多企业智能仓的标配&#xff0c;可以实现仓库高层合理化、存取自动化、操作简便化。在立体仓库内&#xff0c;高位…

基于SQL Server数据库的安全性对策探究

数据库进阶课程论文 题 目&#xff1a;基于SQL Server数据库的安全性对策探究 作者姓名&#xff1a; 作者学号&#xff1a; 专业班级&#xff1a; 提交时间&#xff1a; 2023/6/4 目 录 1概述 1 2 SQL Server数据库的安全问题 1 2&#xff0e;1以使用者身份进入数据库 1 2&a…

区块链中怎么惩罚虚假信息的矿工,工作量证明POW,共识算法

目录 区块链中怎么惩罚虚假信息的矿工 工作量证明POW 什么是工作量证明&#xff1f; 现在出现了另一个问题&#xff1a;如果其他人偷看了小明的答案并且抢答了怎么办&#xff1f; 为什么区块可以安全广播&#xff1f; 共识算法 小结 区块链中怎么惩罚虚假信息的矿工 1…

二叉树|代码随想录2刷|11-34

222.完全二叉树的节点个数 链接&#xff1a;力扣 利用完全二叉树的性质&#xff0c;这个更容易想到&#xff0c;如何计算完全二叉树的节点数 | labuladong 的算法小抄 另一个二分的方法计算太偏了&#xff0c;既然时间复杂度都是O&#xff08;logn*logn&#xff09;&#xff0c…

Python读写xml(xml,lxml)Edge 浏览器插件 WebTab - 免费ChatGPT

Python读写xml&#xff08;xml&#xff0c;lxml&#xff09;Edge 浏览器插件 WebTab - 免费ChatGPT XML一、xml文件创建方法一&#xff1a;使用xml.dom.minidom1、文件、标签的创建 方法二&#xff1a;使用ElementTree 二、xml文件修改1、修改标签内容&#xff0c;属性2、增加子…

flask旅游数据可视化-计算机毕设 附源码81319

flask旅游数据可视化 摘要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对旅游数据可视化等问题&…

阿里企业邮箱标准版、集团版和尊享版有什么区别?

阿里云企业邮箱版本分为免费版、标准版、集团版和尊享版&#xff0c;除了费用区别&#xff0c;功能方面有什么差异&#xff1f;如何选择企业邮箱版本&#xff1f;免费版0元适合初创型企业&#xff0c;标准版适合大、中、小型企业使用&#xff0c;涉及子公司之间邮箱通讯可以选择…

cesium多颗卫星绕着不同的轨道旋转示例

本示例的目的是介绍演示如何在vue+satellite项目中模拟多颗卫星的运行轨迹和覆盖状态。 直接复制下面的 vue+satellite源示例代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例代码相关API参考:示例效果 配置方式 1)查看基础设置:https://xiaozhuanlan.com…

knife4j 4.1.0(OpenAPI3)实现spring security或shiro权限注解内容显示

前两天写了个knife4j&#xff08;swagger2&#xff09;实现spring security或shiro权限注解内容显示&#xff0c;主要是使用knife4j 2.0.5来实现权限注解内容显示的扩展。 在Spring Boot 3 中只支持OpenAPI3规范&#xff0c;集成knife4j的stater&#xff1a;knife4j-openapi3-…