网络编程先导知识

2023-11-11

目录

1.什么是网络协议

2.什么是Socket

 Socket主要类型

3.C/S和B/S架构

4.网络字节序和主机字节序

5.局域网和广域网

6.IP地址和端口的概念


1.什么是网络协议

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

        网络协议主要由以下三个要素组成:

                1.语法:即数据与控制信息的结构或格式

                2.语义:即需要发出何种控制信息,完成何种动作以及做出何种响应

                3.同步:即事件实现顺序的详细说明

2.什么是Socket

        Socket是一套用于不同主机间通信的API, 它可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。 Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。
 

 Socket主要类型:


流套接字(SOCK_STREAM)
        流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议 。
数据报套接字(SOCK_DGRAM)
        数据报套接字提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP( User DatagramProtocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理 。
原始套接字(SOCK_RAW)
        原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接。

3.C/S和B/S架构

        CS即Client/Server(客户机/服务器)结构,C/S结构在技能上非常成熟,它的重要特征就是交互性强、拥有安全的存取形式、网络通信数量低、响应速度快、利于处置大量数据。可是这个结构的程序就是针对性开发,变更不够灵活,维护与管理的难度较大。常常只局限在小型局域网,不利于扩展。而且,因为这个结构的每台客户机全部须要安装相对应的客户端程序,分布功能弱并且兼容性差,不可以完成迅速部署安装与配置,因为这样缺少通用性,拥有比较大的局限性。请求拥有肯定专业水准的技能人员去结束。
        BS即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端选用浏览器(Browse)运行软件。B/S结构应用程序相对于传统的C/S结构应用程序就是一个特别大的进步。 B/S结构的重要特征就是分布性强、维护方便、开发简单并且共享性强、总体拥有费用低。但数据安全性问题、对服务器需要过高、数据传输速度慢、软件的个性化特征明显减少,这些缺点就是有目共睹的,难以完成传统形式下的特殊功能请求。比如通过浏览器实行大量的数据输入或实行报表的应答、专用性打印输出全部相对比较困难与不便。另外,完成复杂的应用构造有较大的困难。
两者重要优缺点如下:
CS架构:
(1)优点:
  ●可以足够表现客户端PC的处置才能,很多工作能够在客户端处置以后再提交给服务器,于是CS客户端响应速度快。
  ●操作界面漂亮、形式多样,能够足够满足客户自己的个性化要求。
  ●C/S结构的管理信息系统拥有比较强的事务处置才能,可以完成复杂的业务过程。
  ●安全性能能够非常容易确保,C/S通常面向相比固定的用户群,程序越发注重过程,它能够对权限实行多层次校验,提供了更安全的存取形式,对信息安全的控制才能非常强。通常高度机密的信息系统选用C/S结构适宜。
(2)缺点:
  ●须要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不可以完成迅速部署安装与配置。
  ●兼容性差,关于不一样的开发工具,拥有比较大的局限性。假如选用不一样工具,须要重新改写程序。
  ●开发、维护费用较高,须要拥有肯定专业水准的技术人员才可以结束,发生一次升级,就全部客户端的程序全部须要更改。。
  ●用户群固定。因为程序须要安装就可使用,因为这样不符合面向一些不可知的用户,于是实用面窄,常常用来局域网中。
BS架构:
(1)优点:
  ●分布性强,客户端零维护。只需有网络、浏览器,能够随时随地实行查询、浏览等业务处理。
  ●业务扩展简单便利,通过添加网页就可以添加服务器功能。
  ●维护简单便利,只须要更改网页,就可以完成全部用户的同步更新。
  ●开发简单,共享性强。
(2)缺点:
  ●个性化特征明显减少,没办法完成拥有个性化的功能要求。
  ●在跨浏览器上,BS架构不尽如人意。
  ●客户端服务器端的交互就是请求-响应形式,常常动态刷新页面,响应速度明显减少(Ajax能够肯定程度上处理这个问题)。没办法完成分页显示,给数据库访问导致较大的压力。
  ●在速度与安全性上须要花费超大的设计费用。
  ●功能弱化,难以完成传统形式下的特殊功能需要。

4.网络字节序和主机字节序

        网络字节序,也称为大端字节序,是指在多字节数据存储时,字节序列的高位字节存储在内存的低地址处,而低位字节存储在高地址处。这种存储方式符合人的阅读习惯,例如数字"1234"在大端字节序中的存储方式为"\x12\x34",先存储高位数字"1",后存储低位数字"4"。

        主机字节序,也称为小端字节序,是指在多字节数据存储时,字节序列的低位字节存储在内存的低地址处,而高位字节存储在高地址处。例如数字"1234"在小端字节序中的存储方式为"\x34\x12",先存储低位数字"4",后存储高位数字"1"。

具体采用哪种字节序则取决于计算机的架构和处理器的设计。在现代计算机中,常用的是小端字节序。

5.局域网和广域网

        局域网(Local Area Network,LAN)是指在一个相对较小的地域范围内的计算机网络,比如一个公司、学校或家庭内部使用的网络。局域网通常由多台计算机、服务器和其他网络设备组成,并通过物理连接或者无线电波连接在一起。

        广域网(Wide Area Network,WAN)则是指覆盖更大地域范围的计算机网络,通常在不同的地域之间通过计算机、路由器、通讯线路等设备连接起来,比如跨城或跨国的网络。广域网通常由多个局域网连接起来,能够实现不同地域之间的数据交换和通信。

6.IP地址和端口的概念

        IP地址是一个标识网络接口的数字地址,它用来标识网络上的设备,并且能够使这些设备进行通讯。IP地址通常由32位二进制数字组成,通常被表示为四个用点分隔的十进制数。例如,192.168.0.1就是一个常见的IP地址。

        端口是一种与IP地址组合使用的数字,它用于标识特定的应用程序或服务。端口号通常是16位的数字,可以取值范围从0到65535。其中,0到1023的端口号是已经被标准化的端口号,用于一些常见的服务和应用程序,例如HTTP(80端口)和FTP(21端口)等。剩下的端口号则可以被应用程序使用。当两个设备进行网络通讯时,需要使用IP地址和端口号来确定数据的发送和接收方,并且保证数据能够准确地被传输。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络编程先导知识 的相关文章

  • matlab函数大全

    转载方法 https blog csdn net yanmantian article details 53256765 本文转载自http www cnblogs com gtts archive 2011 05 20 2052339 h
  • cocos2d-x中有一个JniHelper类详细使用

    主体思路 通过JNI获取java虚拟机 再获取当前程序的JNI环境 通过JNI环境获取需要调用的java类信息 再获取需要调用的java类中的函数信息 再通过JNI环境调用 使用类信息 函数信息 调用对应的java函数 看起来好像有点复杂
  • Selenium之下拉框操作详解

    前言 执行自动化测试过程中遇到下拉框 包含 单选 多选 如何定位到下拉框并选中某个选项 1 下拉框的分类 select 标签 非 select 标签 2 Select 下拉列表处理 针对 select 标签的下拉列表 Selenium 提供
  • CCObject的分析:release retain基于2.2.3 增加3.2ref对比

    CCSprite fish new CCSprite 02 CCLOG After new d fish gt retainCount 03 fish gt init 04 CCLOG After init d fish gt retain
  • 图像的视网膜变换研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 图像的视网膜变换是受到人眼启发的一种技术
  • Spring Native实战(畅快体验79毫秒启动springboot应用)

    应用启动速度不超过100毫秒 启动即达到性能峰值 C1 C2等手段已经用不上了 运行时更低的内存消耗 docker镜像不含JDK 所需文件已经抽取出来放入镜像 官方展示的含有Spring Boot Spring MVC Jackson To
  • 面试时不要有谦卑的态度

    今天在B站看了几个Java面试的实战视频 然后茶余饭后产生了一些思考 在找工作过程中 虽然我们跟企业不是平等的 但起码是双向选择 你只需要以下三个问题即可 你可以谦虚但不可以谦卑 谦卑往往意味着你潜意识里想偷懒 不想学那么多 思考那么多就可
  • 虚拟机黑屏虚拟机繁忙的解决方法

    问题描述 不知是因为VMware版本的问题还是其他原因 有时候虚拟机很长时间不能正常开机 整个屏幕都是黑的 想关掉VM都关不了 提示 虚拟机繁忙 解决方法 呼出任务管理器强制结束VM的进程 然后再次打开VM 会出现以下的提示 而且之前出问题
  • c++ 编写杨辉三角(详细注释)

    include

随机推荐

  • PHP表单的创建和使用

    用户注册
  • 应用实践

    导读 蜀海供应链是集销售 研发 采购 生产 品保 仓储 运输 信息 金融为一体的餐饮供应链服务企业 因其业务比较复杂 2020 年底完成了以 Apache Doris 为核心的架构升级 并在 2021 年开始建设以 Apache Doris
  • 梯度下降算法总结

    基本梯度下降法 随机梯度下降 批梯度下降法 Momentum梯度下降法 Nesterov Momentum梯度下降法 AdaGrad RMSprop AdaDelta Adam 机器学习中 求解的问题常常变为最优化问题 求解最优化问题 常常
  • Scrum中的产品需求预审

    原文作者 Mike Cohn 为了保持产品待办事项 product backlog 的整洁有序 我们需要召开product backlog refinement会议 有时也叫product backlog grooming 这个会议是在一个
  • 悲观锁synchronized、乐观锁CAS

    1 悲观锁 乐观锁 悲观锁是一种思想 在多线程竞争下 加锁 释放锁会导致比较多的上下文切换和调度延时 引起性能问题 一个线程持有锁会导致其它所有需要此锁的线程挂起 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置 引起性能
  • 高合汽车旗下可进化超跑SUV高合HiPhi X亮相海口国际新能源车展

    2021年1月8日 高端新能源智能出行品牌高合汽车旗下高合HiPhi X亮相第三届海口国际新能源汽车展览会 华人运通高合汽车创始人丁磊在现场透露 上市至今高合HiPhi X限量3000辆创始版车型即将预订售罄 累计收获了32000多位留资用
  • 【广州华锐互动】AR远程巡检系统在设备维修保养中的作用

    随着科技的不断发展 AR 增强现实 远程巡检系统在设备检修中发挥着越来越重要的作用 这种系统可以将AR技术与远程通信技术相结合 实现对设备检修过程的实时监控和远程指导 提高设备检修的效率和质量 首先 AR远程巡检系统可以帮助检修人员更好地理
  • NodeJs应用场景【学习路线图】

    Nodejs学习路线图 从零开始nodejs系列文章 将介绍如何利Javascript做为服务端脚本 通过Nodejs框架web开发 Nodejs框架是基于V8的引擎 是目前速度最快的Javascript引擎 chrome浏览器就基于V8
  • 【LeetCode-Java】155. Min Stack

    1 原题 链接 https leetcode com problems min stack Design a stack that supports push pop top and retrieving the minimum eleme
  • 史上最全STL常用容器及其底层存储结构总结

    各大容器的特点 可以用下标访问的容器有 既可以插入也可以赋值 vector deque map 特别要注意一下 vector和deque如果没有预先指定大小 是不能用下标法插入元素的 序列式容器才可以在容器初始化的时候制定大小 关联式容器不
  • [vue3]子组件给父组件传值context.emit

    子组件 用context emit去触发事件 父组件 还是想vue2那样接收
  • 基于Python+Flask实现一个简易网页验证码登录系统案例

    在当今的互联网世界中 为了防止恶意访问 许多网站在登录和注册表单中都采用了验证码技术 验证码可以防止机器人自动提交表单 确保提交行为背后有一个真实的人类用户 本文将向您展示如何使用Python的Flask框架来创建一个简单的验证码登录系统
  • sparksql报错

    执行时报错 org apache spark sql AnalysisException Unable to generate an encoder for inner class cn itcast spark sql Intro Per
  • linux常用文本编辑命令

    cat 命令 cat 命令用于查看纯文本文件 内容较少的 格式为 cat 选项 文件 cat命令常用于查看内容较少的纯文本文件 more 命令 more 命令用于查看纯文本文件 内容较多的 格式为 more 选项 文件 more 命令会在最
  • Ubuntu16.04 LTS自带的Python3.5升级到Python3.7详细记录

    起因 有些第三方库运行只支持Python3 5以上 以及需要使用pip3安装 因此不得不升级Python版本 主要步骤为python官方源码安装 然后修改Python3和pip3的软连接即可 具体升级步骤 安装依赖 sudo apt get
  • Python数据分析与机器学习项目实战

    时值蚂蚁上市之际 马云在上海滩发表演讲 马云的核心逻辑其实只有一个 在全球数字经济时代 有且只有一种金融优势 那就是基于消费者大数据的纯信用 我们不妨称之为数据信用 它比抵押更靠谱 它比担保更保险 它比监管更高明 它是一种面向未来的财产权
  • 迁移学习入门,新手该如何下手?

    推荐迁移学习技术的实用入门图书 自然语言处理迁移学习实战 加纳 保罗 阿祖雷 Paul Azunre 著 李想 朱仲书 张世武 译 一本书带你读懂ChatGPT背后的技术 自然语言处理迁移学习 解锁机器学习新境界 从浅层到深度 掌握NLP迁
  • 2016 OWASP Mobile TOP 10 中文版

    M1 平台使用不当 这个类别包括平台功能的滥用 或未能使用平台的安全控制 它可能包括 Android 的意图 intent 平台权限 TouchID 的误用 密钥链 KeyChain 或是移动操作系统中的其他一些安全控制 有几种方式使移动应
  • javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExcepti

    问题现象 Java Spring应用发送数据报如下问题 AxisFault faultCode http schemas xmlsoap org soap envelope Server userException faultSubcode
  • 网络编程先导知识

    目录 1 什么是网络协议 2 什么是Socket Socket主要类型 3 C S和B S架构 4 网络字节序和主机字节序 5 局域网和广域网 6 IP地址和端口的概念 1 什么是网络协议 为了在计算机网络中做到有条不紊地交换数据 就必须遵