【C#网络编程】基础概念2

文章目录

  • 网络、数据包和协议
    • 网络
    • 数据包
    • 协议
      • TCP、UDP
  • 地址
  • 客户端和服务器
  • 套接字


网络、数据包和协议

    计算机网络通过通信通道互连的机器组成,通常把这些机器称为主机和路由器,主机是是运行应用程序(如 Web 浏览器)的计算机。路由器是其工作是将信息从一个通信通道中继或转发到另一个通信通道的机器。而通信通道是一种将字节序列从一个主机传送到另一个主机的技术。它可能包括了以太网,广播技术、拨号调制解调器连接或更复杂的技术。


网络

    路由器很重要,仅仅是因为将每台主机直接连接到其他每台主机是不切实际的。相反,一些主机连接到路由器,路由器连接到其他路由器,依此类推以形成网络

数据包

    我们可以通过网络发送一些信息,这些信息是由程序构造和解释的字节序列。在计算机网络的上下文中,这些字节序列通常称为数据包。数据包包含网络用于执行其工作的控制信息,有时还包括用户数据。

协议

    协议是关于通过通信程序交换的数据包及其含义的协议。协议说明数据包的结构(例如,目标信息在数据包中的位置和大小)以及如何解释信息。协议通常旨在使用给定的功能解决特定问题。
   实现一个有用的网络需要解决大量问题,为了保持可管理和模块化,设计了不同的协议来解决不同的问题集。而大名鼎鼎的TCP/IP就是这样一种解决方案集合,也叫协议套件。TCP/IP 系列中的主要协议是 Internet 协议 (IP)、传输控制协议 (TCP) 和用户数据报协议 (UDP)。
在这里插入图片描述

图1

    图1显示了主机和路由器中的协议、应用程序和套接字 API 之间的关系,以及从一个应用程序(使用 TCP)到另一个应用程序的数据流。
    在TCP/IP中,底层由底层通信组成,例如以太网或拨号调制解调器连接。这些通道由网络层使用,网络层处理将数据包转发到目的地的问题(即路由器的作用)。TCP/IP 系列中的单个网络层协议是 Internet 协议;它解决了使任意两台主机之间的通道和路由器序列看起来像单个主机到主机通道的问题。
    Internet协议提供数据报服务:每个数据包都由网络独立处理和传递,就像通过邮政系统发送的电报或包裹一样。每个 IP 数据包都必须包含其目的地的地址,就像您邮寄的每个包裹都是寄给某人的一样。

TCP、UDP

     IP之上的层称为传输层。它提供两种协议之间的选择:TCP和UDP。每个 IP 都建立在 IP 提供的服务之上,但它们以不同的方式提供不同类型的通道,这些通道由具有不同需求的应用程序协议使用。TCP和UDP有一个共同的功能:寻址。
    TCP 和 UDP 都使用称为端口号的地址,以便可以识别主机中的应用程序。它们被称为端到端传输协议,因为它们将数据从一个程序一直传输到另一个程序。TCP 旨在检测 IP 提供的主机到主机通道中可能发生的丢失、重复和其他错误,并从中恢复。TCP 提供了一个可靠的字节流通道,因此应用程序不必处理这些问题。它是一个面向连接的协议:在使用它进行通信之前,两个程序必须首先建立 TCP 连接,这涉及在两台通信计算机上的 TCP 实现之间完成握手消息的交换。UDP 不会尝试从 IP 遇到的错误中恢复;它只是扩展了 IP 尽力而为的数据报服务。因此在使用UDP的应用程序要准备好处理丢失、重新排序等问题。
   &nbsp总得来说TCP是一种安全可靠的传输协议,而UDP是一种快速但可能会丢失数据等错误的传输协议。

地址

    邮寄信件时需要收件人的地址。同样,在一个程序与另一个程序通信之前,它必须告诉网络在哪里可以找到另一个程序。在TCP/IP中,也需要这样的地址信息,地址由两部分构成:IP地址和端口号。
    IP地址是32位二进制数。我们通常将它们显示为一个由句点分隔的四个十进制数字的字符串(例如,10.1.2.3);这称为点分四边形表示法。点分四元组字符串中的四个数字表示 IP地址的四个字节的内容,因此每个数字都是介于 0 和 255 之间的数字。
    如果说IP地址是酒店地址,端口号就是酒店的房间号,两个者组合则可以精准得找到你。端口号是 16 位无符号二进制数,因此每个端口号都在 1 到 65,535 的范围内(保留 0)

客户端和服务器

    客户端程序启动通信,而服务器程序被动等待然后响应与其联系的客户端。
     一旦建立连接,服务器和客户端之间的区别就会消失。

套接字

套接字是一种抽象,应用程序可以通过它发送和接收数据,其方式与打开的文件允许应用程序将数据读写到稳定存储的方式大致相同。目前 TCP/IP 中的主要套接字类型是流套接字和数据报套接字。流套接字使用 TCP 作为端到端协议(底层有 IP),从而提供可靠的字节流服务。数据报套接字使用 UDP(同样,端到端,底层为 IP),因此提供尽力而为的数据报服务,应用程序可以使用该服务发送长度高达 65,500 字节的单个消息。其他协议套件也支持 Stream 和 Datagram 套接字,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

同三维T80001HK4 四路4K30HDMI H.264编码器

4路同时编码,带4路3.5外置音频 同三维T80001HK4四路4K30HDMI H.264编码器 同三维T80001HK4用于高清视频信号(4K30Hz)编码及网络传输的硬件设备,采用最新高效H.264高清数字视频压缩技术,具备稳定可靠、高清晰度、低码率…

CyberRt实践之Hello Apollo(Apollo 9.0版本)

apollo9.0环境安装参考官方网站 apollo.baidu.com/community/Apollo-Homepage-Document?docBYFxAcGcC4HpYIbgPYBtXIHQCMEEsATAV0wGNkBbWA5UyRFdZWVBEAU0hFgoIH0adPgCY%2BADwCiAVnEAhAILiAnABZxEgOzK1Y%2BQA51M3ROUnJBsbK2WZoyUdkBhcXoAMhlwDFlARnUXZdzE9AGY%2BbFINADYpUhCEFW…

JavaEE 多线程第二节 (多线程的简单实现Thread/Runable)

1. 创建线程(继承 Thread 类)步骤: 继承 Thread 类: 创建一个类并继承 Thread 类,然后重写 run() 方法,在该方法中写入线程执行的代码 class MyThread extends Thread {Overridepublic void run()…

SpringBoot 之 配置 RestTemplate + 跳过https 验证

上截图 目录文件结构 在配置文件下创建下面两个文件 文件内容 HttpsClientHttpRequestFactory.java package org.fri.config;import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.TrustStrategy; import org.springframework.context.annotation.Configur…

重学SpringBoot3-安装Spring Boot CLI

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-安装Spring Boot CLI 1. 什么是 Spring Boot CLI?2. Spring Boot CLI 的安装2.1. 通过 SDKMAN! 安装2.2. 通过 Homebrew 安装(适…

SpringCloud-OpenFeign-服务接口调用

是什么 把需要暴露的api使用接口来暴露,客户端需要调用的时候,直接查看这个接口中有没有就可以了 通用步骤 架构说明 common模块 common 引入 openfeign 新建服务接口类 FeignClient(value "cloud-payment-service") // 服务名 public i…

【C语言】动态内存管理及相关笔试题

文章目录 一、为什么有动态内存分配二、malloc和free1.malloc函数的使用2.free函数的使用 三、calloc和realloc1.calloc函数的使用2.realloc函数的使用 四、常见动态内存分配的错误五、动态内存经典笔试题题1题2题3 六、总结C/C中程序内存区域划分 一、为什么有动态内存分配 我…

SpringBoot基础(四):bean的多种加载方式

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 SpringBoot基础(二):配置文件详解 SpringBoot基础(三):Logback日志 SpringBoot基础(四):bean的多种加载方式 目录 一、xml配置文件二、注解定义bean1、使用AnnotationCon…

SCRM呼叫中心高保真Axure原型 源文件分享

在数字化时代,客户关系管理(CRM)对于企业的成功至关重要。SCRM呼叫中心后台作为一款专为CRM设计的软件原型,致力于为企业提供高效、智能的客户沟通解决方案。本文将详细介绍该产品的核心功能及其对企业提升客户满意度和销售业绩的…

C++,STL 030(24.10.14)

stack容器(栈)的基本概念: 1.stack容器是一种先进后出的数据结构,它只有一个出口。 2.图例: 注意: (1)进栈顺序:a1 -> a2 -> a3 -> a4 -> a5 (2)出栈顺序:a5 -> …

机器学习-决策树详解

决策树 决策树简介 学习目标 1.理解决策树算法的基本思想 2.知道构建决策树的步骤 【理解】决策树例子 决策树算法是一种监督学习算法,英文是Decision tree。 决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断&#xff…

12.1-基础柱状图构建

Python基础综合案例——数据可视化 动态柱状图 通过Bar构建基础柱状图 反转x和y轴 调用 bar.reversal_axis() 我们现在所看到的数值是从下到上的,当我们反转之后数据是从左向右的,我们现在把数据放到柱的右边。即数值标签在右侧 添加y轴数据的时候&am…

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大,撑爆磁盘,修改下日志级别: [adminlnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221561020 Server version: O…

Android基于gradle task检查各个module之间资源文件冲突情况

做组件化开发的时候,我们经常会遇到各个不同的module之间资源文件冲突的问题,运行也不报错,但是会出现覆盖的问题,导致运行之后发送错误的效果。 所以我们需要利用一个gradlke 脚本task,来自动化检查资源文件冲突。 …

CST学习笔记(二)Floquet模式激励设置

CST学习笔记(二)Floquet模式激励设置 在CST中我们常常使用Floquet模式来仿真频率选择表面(FSS)或者超材料等,但是我们设置好Zmax的floquet模式数量后,启动仿真,会发现S参数一栏中有很多我们不想要看的S参数&#xff0…

OpenAI Canvas:提升编程与写作效率的全新工作界面

随着人工智能技术的飞速发展,大语言模型(LLM)不仅限于生成文本,还能逐步扩展至编程、设计等任务的支持。近期,OpenAI 推出了一个名为 Canvas 的全新功能,专门用于协助用户进行编程和写作。这一功能与 Claud…

【React】使用脚手架或Vite包两种方式创建react项目

1.使用脚手架搭建React项目: 在终端窗口运行如下命令即可: npx create-react-app react-basic(创建的文件目录) npx:Node.js工具命令,用于查找并执行后续的包命令。 2.使用Vite包创建React项目: 在终端窗口运行如…

【STM32 Blue Pill编程实例】-OLED显示DHT22传感器数据

OLED显示DHT22传感器数据 文章目录 OLED显示DHT22传感器数据1、DHT22介绍2、硬件准备与接线3、模块配置3.1 定时器配置3.2 DHT22引脚配置3.3 OLED配置4、代码实现在本文中,我们将介绍如何将 DHT22 温度和湿度传感器与 STM32 Blue Pill 开发板连接,并使用 HAL 库在 STM32CubeI…

学习底座架构-武汉

1 学习底座架构概述 大脑学习中心-边缘系统 一、当下教育现状 二、什么是学习底座 三、学习底座价值 七、学习底座解决问题的流程 案例:以4R注意力为例 一 注意力问题解决流程 二 注意力问题的危害 三 衡量注意力水平高低的标准 四 注意力问题4大根源 & 2大诱因…

掌握未来技能:亚马逊云科技推出生成式 AI 认证计划!

目录 前言 生成式 AI 的力量 1. 内容创造的无限可能 2. 数据增强和个性化 3. 提高生产力 4. 教育和研究的辅助工具 5. 突破语言障碍 关于亚马逊云科技生成式 AI 认证 1. 认证目标 2. 认证内容 3. 认证优势 如何获得认证 1. 在线学习 2. 实践考试 3.AWS Certifie…