精华内容
下载资源
问答
  • 网络通信协议

    千次阅读 2017-11-30 15:33:40
    网络通信协议 今天学习了网络通信协议,总结出来的知识点,不足之处请大家多多指教! 网络通信协议:负责在网络上建立通信通道和控制通过通道的信息流的规则 为了进行网络通信,通信双方必须遵守通信...

                                                       网络通信协议

    今天学习了网络通信协议,总结出来的知识点,不足之处请大家多多指教!


    网络通信协议:负责在网络上建立通信通道和控制通过通道的信息流的规则


    为了进行网络通信,通信双方必须遵守通信协议


    网络通信协议的组成:

    语法(syntax):包括数据格式、数据编码以及信号等。

    语义(semantics):包括用于协调和差错处理的控制信息。

    定时(Timing):包括传输速率和数据排序等。





    常见的网络协议

    IP(Internetworking Protocol)网间网协议
    IP协议是是网络层的主要协议,支持网间互联的数据报通信,它是无连接、不可靠的协议。IP 网络上的主机只能
    直接向本地网上的其他主机(也就是具有相同IP 网址的主机)发送数据包


    TCP(Transport Control Protocol)传输控制协议
    TCP协议是面向连接(需要在客户端和服务器之间建立连接)、保证高可靠性(数据无丢失、数据无失序、数据

    无错误、数据无重复到达,安全性可以得到保障)传输层协议


    UDP(User Datagram Protocol)用户数据报协议
    UDP协议跟TCP协议一样也是传输层协议,但它是无连接(无需在客户端和服务器之间建立连接),不保证可靠

    (安全性得不到保障)的传输层协议


    UDP和TCP协议区别:

    TCP协议:可靠,传输数据包的大小没有限制,但是连接建立需要时间,差错控制的开销大;


    UDP协议:不可靠,差错控制开销小,传输数据包大小有限制(64K以下),不需要建立连接。


    应用层:

    应用层也称为应用实体(AE),它由若干个特定应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)组成。每个SASE提供特定的应用服务,例如文件运输访问和管理(FTAM)、电子文电处理(MHS)、虚拟终端协议(VAP)等。CASE提供一组公用的应用服务,例如联系控制服务元素(ACSE)、可靠运输服务元素(RTSE)和远程操作服务元素(ROSE)等。


    基本简介:

    开放式系统互连 (Open Systems Interconnection reference,OSI) 参考模型是一种抽象的分层模型。
    OSI七层网络参考模型:
    Layer 7:应用层(Application Layer)
    Layer 6:表示层(Presentation Layer)
    Layer 5:会话层(Session Layer)
    Layer 4:传输层(Transport Layer)
    Layer 3:网络层(Network Layer)
    Layer 2:数据链路层(Data Link Layer)
    Layer 1:物理层(Physical Layer)
    TCP/IP协议模型:
    应用层(Application Layer);
    传输层(Transport Layer);
    Internet层/网络层;
    网络接入层(Network Access Layer)
    应用层(Application Layer):该层为用于通信的应用程序和用于消息传输的底层网络提供接口。 [1]  
    网络应用是计算机网络存在的原因,而应用层正是应用层协议得以存在和网络应用得以实现的地方。
    应用层Application layer)是七层OSI模型的第七层。应用层直接和 应用程序接口并提供常见的 网络应用服务。应用层也向 表示层发出请求。
    应用层
    应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务.其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE.
    CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用 进程通信,分布系统实现提供基本的控制 机制;特定服务SASE则要满足一些特定服务,如文卷传送,访问管理,作业传送,银行事务,订单输入等。这些将涉及到 虚拟终端,作业传送与操作,文卷传送及访问管理,远程数据库访问,图形核心系统, 开放系统互连管理等等。
    应用层的软件
    1、 网络感知应用程序:
    应用程序是指人们用于网络通信的软件程序。有些终端用户应用程序是网络感知程序,即这些程序实现应用层协议,并可直接与协议栈的较低层通信。电子邮件客户程序和 Web 浏览器就属于这种类型的应用程序。
    2、 应用层服务[1]
    如何实现一个网络应用
    1. 选择一个合适的网络应用体系结构;
    2. 根据所选的网络应用体系结构,确定客户进程和服务器进程;
    3. 确定客户进程和服务器进程的端口号;
    4. 确定客户进程和服务器进程的IP地址;
    5. 选择一个合适的应用层协议;
    6. 考虑网络应用所需的服务。

    功能特点:

    属于应用的概念和协议发展得很快,使用面又很广泛,这给应用功能的标准化带来了复杂性和困难性。比起其它层来说,应用层需要的标准最多,但也是最不成熟的一层。但随着应用层的发展,各种特定应用服务的增多,应用服务的标准化开展了许多研究工作, ISO已制定了一些国际标准(IS)和国际标准草案(DIS)。因此,通过介绍一些具有通用性的协议标准,来描述应用层的主要功能及其特点。
    主要是提供网络任意端上应用程序之间的接口

    运输访问和管理

    文件运输与远程文件访问是任何 计算机网络最常用的两种应用。文件运输与 远程访问所使用的技术是类似的,都可以假定文件位于 文件服务器机器上,而用户是在顾客机器上并想读、写而整个或 部分地运输这些文件,支持大多数现代文件服务器的关键技术是虚拟文件存储器,这是一个抽象的文件服务器。虚拟文件存储给顾客提供一个标准化的 接口和一套可执行的标准化操作。隐去了实际文件服务器的不同内部 接口,使顾客只看到虚拟文件存储器的标准接口,访问和运输远地文件的 应用程序,有可能不必知道各种各样不兼容的文件服务器的所有细节。

    电子邮件

    计算机网络电子邮件的实现开始了人们通信方式的一场革命。电子邮件的吸引力,在于象电话一样,速度快,不要求双方都同时在场,而且还留下可供处理或多处投递的书写文电拷贝
    虽然 电子邮件被认为只是文件运输的一个特例,但它有一些不为所有文件运输所共有的特殊性质。因为, 电子邮件系统首先需考虑一个完善的人机界面,例如写作,编辑和读取 电子邮件接口,其次要提供一个运输邮件所需的邮政 管理功能,例如管理邮件表和递交 通知等。此外, 电子邮件与通用文件运输的另一个差别是,邮件文电是最高度结构化的 文本。在许多系统中,每个文电除了它的内容外,还有大量的附加信息域,这些信息域包括发送方名和 地址、接收方名和地址、投寄的日期和时刻、接收复写副本的人员表、失效日期、重要性 等级、安全许可性以及其它许多附加信息。
    ISO标志ISO标志
    1984年CCITT制定了叫做MHS(文电处理系统)的X.400建议的一系列协议。ISO试图把它们收进OSI的应用层,并叫做 MOTIS(面向文电的正交换系统)。由于X.400结构的缺少,这种吸收不是很简单。1988年又修改了X.400,力争与 MOTIS会聚。本章我们将介绍MHS。

    虚拟终端

    由于种种 原因,可以说 终端标准化的工作已完全失败了。解决这一问题的OSI方法是,定义一种 虚拟终端,它实际上只是代有实际终端的抽象 状态的一种抽象 数据结构。这种抽象 数据结构可由 键盘和计算机两者操作,并把数据结构的当前 状态反映在 显示器上。计算机能够查询此抽象 数据结构,并能改变此抽象数据结构以使得 屏幕上出现输出。

    其它功能

    其它应用已经或正在标准化。在此,要介绍的是 目录服务、远程作业录入、图形和信息通信。
    (1) 目录服务:它类似于电子电话本,提供了在网络上找人或查到可用服务 地址的方法。
    (2)远程作业录入:允许在一台计算机上工作的用户把作业提交到另一台计算机上去执行。
    (3)图形:具有发送如工程图在远地显示和标绘的功能。
    (4)信息通信:用于家庭或办公室的公用 信息服务。例如 智能用户电报、电视图文等。
    联系控制服务元素]ACSE和up][2]sup]提交、并发与恢复CCR b]
    随着应用层的发展,各种特定应用服务增多,当初ISO7498中定义的应用层服务已大部
    分划归到公共应用服务元素(CASE)中去了,而且许多应用有一定数据的共同部分,几乎
    所有这些应用都需要管理连接。为了避免每一个新的应用都要重新从头开始,ISO决定把这
    些公共部分实行标准化。下面描述其中最重要的两个。
    (1)联系控制服务元素ACSE
    联系控制服务元素提供应用连接的建立和正常或异常释放的功能。
    所谓联系是指两个应用实体之间的连接;联系控制服务元素是应用层的基本核心子集
    。提出以下几个ACSE原语:
    1)A一ASSOCIATE建立一个联系
    2)A一RELEASE 释放一个联系
    3)A一ABORT 用户发起的夭折
    4)A一P一ABORT 提供者发起的夭折
    每一条ACSE原语与相应的表示层服务原语有一一映照关系,也即应用联系与表示连接
    是同时建立、同时释放的。
    (2)托付、并发和恢复(CCR)
    CCR的主要目的就是协调若干个(相互关联的)应用联系,为基本多应用联系的信息处
    理任务提供一个安全和高效的环境。几乎所有的需要可靠性操作的应用都使用CCR。
    在CCR模型中,数据分为两大类:安全数据和常规数据,所谓安全数据是那些能经受应
    用失败,并且在应用联系恢复到正常后可以重新引用的数据。通常是把安全数据存储在外
    部存储介质中。为了保证安全数据的完整性和可靠性,对它的修改要用一些特定的规则,
    例如特定的封锁机制。所谓常规数据是那些在应用联系工作期间并没有被保存在可靠存储
    区域的数据。例如在缓冲区或工作栈中。当应用联系受到破坏后,这些数据将不再可用。

    协议举例:

    DNS

    DNS最早于1983由保罗.莫卡派 乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范 部分的改动。
    早期的域名必须以英文句号“.”结尾,,这样DNS才能够进行域名解析。如今 DNS服务器已经可以自动补上结尾的句号。
    当前,对于域名 长度的限制是63个字符,包括 www..com或者其他的扩展名。域名同时也仅限于 ASCII字符的一个子集,这使得很多其他语言无法正确表示他们的 名字和单词。基于Punycode码的IDNA系统,可以将Unicode 字符串映射为有效的DNS 字符集,这已经通过了验证并被一些 注册机构作为一种变通的方法所采纳。

    HTTP

    HTTP的发展是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的 RFC,其中最著名的就是RFC 2616。RFC 2616定义了 HTTP协议中一个现今被广泛使用的版本——HTTP 1.1。
    HTTP是一个 客户端和服务器端请求和应答的标准( TCP)。客户端是 终端用户,服务器端是网站。通过使用 Web浏览器网络爬虫或者其它的工具,客户端发起一个到服务器上指定 端口(默认端口为80)的 HTTP请求。(我们称这个客户端)调 用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和 图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理, 网关,或者隧道(tunnel)。尽管 TCP/IP协议是互联网上最流行的应用,HTTP协议并没有 规定必须使用它和(基于)它支持的层。事实上,HTTP可以在任何其他 互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
    电子邮件电子邮件
    通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个 端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个 状态行,比如"HTTP/1.1 200 OK",和(响应的) 消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
    HTTP使用TCP而不是UDP的 原因在于(打开一个)一个网页必须传送很多数据,而 TCP协议提供传输控制,按顺序组织数据,和错误纠正。具体细节请参考‘TCP和UDP的不同’。
    通过HTTP或者HTTPS协议请求的资源由 统一资源定位器(Uniform Resource Identifiers,或者,更准确一些,URI)来标识。

    FTP

    FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输 数据流,而端口21用于传输 控制流,并且是 命令通向ftp服务器的进口。当数据通过数据流传输时, 控制流处于空闲 状态。而当 控制流,空闲很长时间后,客户端的 防火墙,会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话,会被防火墙断开;传输会产生一些错误。
    FTP实现的目标:
    促进文件的共享(计算机程序或数据)鼓励间接或者隐式的使用远程计算机向用户屏蔽不同 主机中各种文件存储系统(File system)的细节可靠和高效的传输数据 缺点
    密码和文件内容都使用明文传输,可能产生不希望发生的窃听。因为必须开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动 模式下的FTP 流量。这个问题,通过使用被动模式的FTP,得到了很大解决。服务器可能会被告知连接一个第三方计算机的保留端口。此 方式在需要传输文件数量很多的小文件时,效能不好FTP虽然可以被 终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
    运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要 帐号就可以登录服务器,默认 情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件 地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于 FTP服务器的配置情况。
    应用层协议为应用程序之间的通信提供规则,为确保通信畅通,源主机和目的主机上所实现的应用层协议必须一致。
    应用层协议的功能:
    l 为通信双方定义过程;
    l 定义消息类型;
    l 定义消息的语法;
    l 定义任何信息性字段的含义;
    l 定义发送消息的方式和预期的响应;
    定义与下一层之间的交互。










    展开全文
  • 什么是网络通信协议

    千次阅读 2020-08-11 15:53:51
    网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的...
    • 网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。

    • TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
      在这里插入图片描述
      TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。

    链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。
    网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
    运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。
    应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

    展开全文
  • 13、python网络编程之网络通信协议

    千次阅读 2021-02-13 15:15:06
    python网络编程之网络通信协议 一、C/S与B/S架构 B/S架构 B/S架构中省去了客户端的开发,是基于浏览器(Browser)与服务端完成数据的通信 二、网络通信 什么是网络 网络是用物理链路将各个孤立的工作站或主机相连在...

    python网络编程之网络通信协议

    一、C/S与B/S架构

    在这里插入图片描述

    B/S架构

    B/S架构中省去了客户端的开发,是基于浏览器(Browser)与服务端完成数据的通信

    二、网络通信

    什么是网络

    网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。

    网络即一种物理链接介质

    什么是通信

    通信是人与人之间通过某种媒体进行的信息交流与传递。

    通信即数据与信息的传输

    什么是网络通信

    网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。

    网络通信即计算机与计算机之间通过物理介质和某种协议进行的数据与信息的传输

    了解了以上知识后我们就可以发现,计算机之间需要完成通信,必要的条件有两个:

    • 物理链接介质
    • 通信协议

    物理链接介质我们这里不做深入研究,下面我们来学习一下互联网的通信协议。

    三、互联网通信协议

    OSI协议

    OSI模型是由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。OSI协议根据功能不同,分工不同,被人为的分为七层协议。

    实际中还有人划分为五层、四层协议

    七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

    五层划分为:应用层、传输层、网络层、数据链路层、物理层

    四层划分为:应用层、传输层、网络层、网络接口层

    在这里插入图片描述

    在这里插入图片描述

    为什么要有协议?

    协议用来规定数据的组成格式,是的不同的计算机之间可以识别传输的数据。

    物理层

    主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0。在网络通信的过程中,物理层负责发送电信号。一组物理层数据称之为位。

    物理链路层:Ethernet

    我们知道单纯由0和1组成的电信号没有意义,无法进行识别,这时候我们需要物理链路层,它定义了电信号的分组方式。常见的物理链路层的协议有以太网协议(Ethernet)

    以太网协议规定:

    1. 一组数据称之为一个数据帧
    2. 数据帧分为两部分组成:头部 + 数据
      - 而在数据帧的头部中包含了源地址(6bytes)、目标地址 (6bytes)和数据类型(6bytes),其中的源地址和目标地址 均为mac地址。
      - 数据部分包含了网络层的整体数据内容
    3. 接入互联网的主机必须有一张网卡,每张网卡出厂时都有一个唯一的mac地址。
    4. 以太网的工作方式是广播

    网络层:IP

    网络层走的是IP协议,主要用于划分广播域,每一个广播域需要通过网关将包转发到公网,网关走的是路由协议。

    IP协议规定:

    1. 一组数据称之为一个数据包。
    2. 数据包分为头部和数据
      1. 头部包含源地址和目标地址,该地址是IP地址,IP地址分为网络部分和主机部分。主机部分即IP地址,网络部分即子网掩码,用于划分广播域。
      2. 数据包含传输层的整体数据内容

    在网络层还有一个非常重要的协议ARP协议,ARP协议是地址解析协议,它是根据IP地址获取物理地址(mac地址)的一个TCP/IP协议。IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。img

    传输层:TCP/UDP等

    TCP/UDP协议是基于端口的一种协议,端口范围是0-65535,期中0-1023端口为系统占用端口。

    有了tcp/udp协议后,我们可以通过ip+端口标识全世界范围内独一无二的一个基于网络通信的应用程序,但在基于tcp协议通信之前,必须建立一个双向通信的链接。一般通过三次握手建立一个双向通信的链接。

    在这里插入图片描述

    但在切断链接过程中是通过四次挥手进行切断。因为在切断链接的过程中有可能涉及到仍有一端再进行单向数据传输,只有当数据传输完成后这一向的链接才切断。

    img

    应用层:http,ftp等

    在应用层我们可以自定义协议,但自定义协议的工程过于庞大,软件开发中我们一般采用http、ftp等已存在的协议。应用层的协议也同样包含头部和数据两部分。

    展开全文
  • WebSocket 网络通信协议介绍

    千次阅读 2019-06-26 08:41:02
    WebSocket 是一种网络通信协议。RFC6455定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 二、为什么需要WebSocket? 我们知道,传统的HTTP协议是无状态的,...

    一、WebSocket是什么?

    WebSocket 是一种网络通信协议。RFC6455定义了它的通信标准。

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

    二、为什么需要WebSocket

            我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便。

      因此,随着HTML5的诞生,一种新的通信协议应运而生---WebSocket,他最大的特点就是服务端可以主动向客户端推送消息,客户端也可以主动向服务端发送消息,实现了真正的平等。

    举个例子:如带有即时通信、实时数据、订阅推送等功能的应用。在WebSocket规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法:ajax轮询(最原始的实现实时Web应用的解决方案)

    ajax轮询的原理:ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。
    场景再现:
    客户端:有没有新信息(Request)
    服务端:没有(Response)
    客户端:有没有新信息(Request)
    服务端:没有。。(Response)
    客户端:有没有新信息(Request)
    服务端:你好烦啊,没有啊。。(Response)
    客户端:有没有新消息(Request)
    服务端:有啦,给你。(Response)
    客户端:有没有新消息(Request)
    服务端:。。。。。没。。。。没。。。没有(Response) ---- loop

    websocket的原理:当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。
    场景再现:
    客户端:我要建立Websocket协议,需要的服务:chat,Websocket协议版本:17(HTTP Request)
    服务端:确认,已升级为Websocket协议(HTTP Protocols Switched)
    客户端:麻烦你有信息的时候推送给我噢。。
    服务端:好的,有的时候会告诉你的。
    服务端:balabalabalabala
    服务端:哈哈哈哈哈啊哈哈哈哈
    服务端:笑死我了哈哈哈哈哈哈哈

    三、WebSocket其他特点如下:

    (1)建立在 TCP 协议之上,服务器端的实现比较容易。

    (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

    (3)数据格式比较轻量,性能开销小,通信高效。

    (4)可以发送文本,也可以发送二进制数据。

    (5)没有同源限制,客户端可以与任意服务器通信。

    (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

    四、创建WebSocket对象

    浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 WebSocket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

    // url, 指定连接的 URL
    // protocol 是可选的,指定可接受的子协议。
    let Socket = new WebSocket(url, [protocol] );
    

    五、WebSocket属性

          假设我们创建了一个Socket对象

    属性描述
    Socket.readyState

    只读属性 readyState 表示连接状态,可以是以下值:

    0 - 表示连接尚未建立。

    1 - 表示连接已建立,可以进行通信。

    2 - 表示连接正在进行关闭。

    3 - 表示连接已经关闭或者连接不能打开。

    Socket.bufferedAmount只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

    六、WebSocket事件

           假设我们创建了一个Socket对象

    事件事件处理程序描述
    openSocket.onopen连接建立时触发
    messageSocket.onmessage客户端接收服务端数据时触发
    errorSocket.onerror通信发生错误时触发
    closeSocket.onclose连接关闭时触发

    七、WebSocket方法

           假设我们创建了一个Socket对象

    方法描述
    Socket.send()

    使用连接发送数据

    Socket.close()

    关闭连接

    八、WebSocket实例

    【1】原生JavaScript实现WebSocket连接

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
    </head>
    <style>
    </style>
    
    <body>
      <input id="text" type="text" />
      <button onclick="send()">发送消息</button>
      <button onclick="closeWebSocket()">关闭WebSocket连接</button>
      <div id="message"></div>
    
      <script>
        let websocket = null;
        //判断当前浏览器是否支持WebSocket
        if ('WebSocket' in window) {
          websocket = new WebSocket("ws://localhost:8080/websocket");
        } else {
          alert('当前浏览器不支持websocket!')
        }
    
        //连接发生错误的回调方法
        websocket.onerror = function () {
          console.log("WebSocket连接发生错误");
        };
        //连接成功建立的回调方法
        websocket.onopen = function () {
          console.log("WebSocket连接成功");
        }
    
        //接收到消息的回调方法
        websocket.onmessage = function (event) {
          document.getElementById('message').innerHTML += event.data + '<br/>';
        }
    
        //连接关闭的回调方法
        websocket.onclose = function () {
          console.log("WebSocket连接关闭");
        }
    
        //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
        window.onbeforeunload = function () {
          closeWebSocket();
        }
    
        //关闭WebSocket连接
        function closeWebSocket() {
          websocket.close();
        }
    
        //发送消息
        function send() {
          let message = document.getElementById('text').value;
          websocket.send(message);
        }
      </script>
    </body>
    
    </html>

    【2】在vue项目中实现WebSocket连接

    <template>
      <div>
        <el-input v-model="params" clearable/>
        <el-button type="primary" @click="send">发消息</el-button>
      </div>
    </template>
    
    <script>
      export default {
        data() {
          return {
            params: '',
            path: "ws://localhost:8080/websocket",
            socket: ""
          }
        },
        mounted() {
          // 初始化
          this.init()
        },
        destroyed() {
          // 销毁监听
          this.socket.onclose = this.close
        },
        methods: {
          init: function () {
            if (typeof (WebSocket) === "undefined") {
              console.log("您的浏览器不支持socket")
            } else {
    
              // 实例化socket
              this.socket = new WebSocket(this.path)
    
              // 监听socket连接成功回调
              this.socket.onopen = this.open
              
              // 监听socket连接失败回调
              this.socket.onerror = this.error
    
              // 监听后台返回的socket消息
              this.socket.onmessage = this.getMessage
            }
          },
          open: function () {
            console.log("socket连接成功")
          },
          error: function () {
            console.log("连接错误")
          },
          getMessage: function (msg) {
            console.log(msg.data)
          },
          send: function () {
            this.socket.send(params)
          },
          close: function () {
            console.log("socket已经关闭")
          }
        }
      }
    </script>

     

    展开全文
  • 网络通信协议: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的...
  • 网络通信协议基础(ISIS)——入门

    千次阅读 2017-02-02 13:51:53
    网络通信协议是一个挺窄的方向。相对于Android、ios、JavaScript、python等等方向,网络通信协议知道的人很少。本文也指在普及一下网络通信协议,让更多的人知道世界上还有这么一群人在维护着这么一堆协议。 想要...
  • 网络通信协议结构图

    千次阅读 2014-12-18 13:49:36
    网上找的 网络通信协议结构图 , 虽然比较老, 但是也够一般的查询使用了.
  • Visual C++网络通信协议分析与应用实现,免费分享了
  • 课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为...tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议
  • 二、网络通信协议:同一个网络中的计算机进行连接和通信时的规则;目前应用最广泛的是TCP/IP协议(包括,IP协议、TCP协议,UDP协议,ICMP协议等)。在进行数据传输时,要求发送的数据与接收到的数...
  • 关于计算机网络通信协议

    千次阅读 多人点赞 2018-11-30 22:25:07
    open system interconnection :开放式系统互联,ISO发起,其任务是指定国际计算机通信标准,特别是促进兼容系统间的互联。 www:world wide web 万维网 HTML:hyper text transfer protocol 超文本传输协议 CGI:...
  • DICOM:DICOM3.0网络通信协议(三)

    万次阅读 2015-11-23 22:07:08
    背景:专栏对于DICOM网络传输介绍过多次,例如DICOM:DICOM3.0网络通信协议(续)、DICOM医学图像处理:DICOM网络传输、DICOM医学图像处理:全面分析DICOM3.0标准中的通讯服务模块。此次通过对比fo-dicom与dcm4che两...
  • Socket 网络通信协议 http、TCP/IP协议与socket之间的区别 2015-03-25 13:38 1578人阅读 评论(0) 收藏 举报 网络由下往上分为:  物理层-- 数据链路层-- 网络层-- IP协议 传输层-- ...
  • 网络通信协议层的七个部分

    千次阅读 2012-12-13 08:53:40
    我们将网络通信协议层分为七个层次。这也是著名的OSI模型标准。现在,根据每一个层次我们来详细说一下有关的协议。看看他们每一个层次的具体作用是什么。 网络通信协议层1:物理层 物理层(physical layer)的主要...
  • 网络通信协议的基本知识

    千次阅读 2015-07-01 11:03:17
    通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议...
  • 分布式基础-网络通信协议讲解

    千次阅读 2020-01-13 13:53:55
    网络七层协议模型 OSI的体系结构:应用层用来跑应用程序的。7层是指OSI七层协议模型,主要是:应用层(Application),表示层(Presentation),会话层(Session),传输层(Transport),网络层(Network),数据链路层(DataLink...
  • 几种网络通信协议

    万次阅读 2017-10-23 10:48:40
    HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页)DNS(Domain Name System)域名系统FTP(File Transfer Protocol)文件传出协议SFTP(SSH File Transfer Protocol,和FTP不一样)安全文件传送协议SCP...
  • 网络通信协议(7层协议)

    万次阅读 2018-07-14 20:47:58
    mac地址、IP地址和端口号看了很多遍,才整理出来我对整个通信过程的理解,大致如下,后期会不断学习补充更正:在利用TCP/IP协议族进行通信的时候,有三个比较关键的确认身份的信息:mac地址、IP地址和端口号。...
  • 常用网络通信协议结构图

    千次阅读 2017-06-28 23:30:04
  • 即时通讯网论坛里精心整理了《[通俗易懂]深入理解TCP协议》、《不为人知的网络编程》、《P2P技术详解》、《高性能网络编程》这几个网络编程的系列文章,甚至还有图文并貌+实战代码的《NIO框架入门》等等。...
  •  Socket,俗称网络套接字,本身并不是协议,而是一个调用接口,是对TCP/IP协议的封装和应用,提供了一系列方法方便开发者进行网络通讯。  TCP/IP协议是使用最早的通讯协议,它是传输层协议,主要解决数据如何在网络...
  • 网络通信协议图谱

    千次阅读 2006-08-25 23:15:00
  • 网络通信协议基础(ISIS)——概述

    千次阅读 2017-03-22 03:04:45
    ISIS协议全称叫Intermediate System to Intermediate System,中间系统到中间系统。这里的中间系统(简称IS)说的是路由器。为啥不直接用路由器,而用这么绕口的名字呢。这里还涉及到组织的背景。 网络设备由很多...
  • 常见网络通信协议结构图

    千次阅读 2011-03-25 18:33:00
  • DICOM:DICOM3.0网络通信协议(续)

    万次阅读 2015-03-15 17:32:41
    背景:之前博文中专门梳理过DICOM标准中与网络传输相关的内容,近期在重新整理fo-dicom开发的PACS相关测试用例时,对fo-dicom和mDCM两个库进行了再一次比较,与此同时重新翻阅了DICOM3.0标准中的部分章节,发觉之前...
  • 本书介绍如何利用Delphi开发网络与通信应用程序,本书主要针对目前流行的FTP、HTTP、E-mail、Telnet、网络监控、Modem串口通信编程、拨号网络编程、传真编程等Internet协议网络通信高级编程开发进行详细的讲解,并...
  • 背景:日前,通过对比fo-dicom与dcm4che两种开源库(也是C#与Java两大语言体系)的不同实现来实战学习了DICOM的网络传输,博文中列举了两大开源库各自的实现特点,以及使用的语言特性。本篇继续对比两大开源库,从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 568,885
精华内容 227,554
关键字:

网络通信协议