原创

网络编程

网络编程

构建TCP 服务

创建 TCP 服务器

TCP全名为传输控制协议,在OSI模型(由七层组成,分别为物理层、数据链结层、网络层、 传输层、会话层、表示层、应用层)中属于传输层协议。

3次握手创建会话

服务 器端和客户端分别提供一个套接字,这两个套接字共同形成一个连接

服务器端与客户端则通过 套接字实现两者之间连接的操作

TCP 服务的事件

服务器事件,listening,connection,close,error

连接事件,data,end,connect,drain,error,close,timeout

TCP针对网络中的小数据包有一定的优化策略:Nagle算法

要求缓冲区的数据达到一定数量或者一定时间后才将其发出

构建UDP服务

UDP

在 UDP 中,一个套接字可以与多个 UDP 服务通信

UDP 又称用户数据包协议,与 TCP 一样同属于网络传输层

无须连接,资源消耗低,处理快速且灵活

若想让UDP套接字接收网络消息,只要调用dgram.bind(port, [address])方法对网卡和端口 进行绑定即可

UDP 是一个EventEmitter的实例,而非Stream 的实例,具有自定义事件,message,listening,close,error

构建HTTP服务

HTTP

HTTP的全称是超文本传输协议

HTTP构建在TCP之上,属于应用层协议

HTTP报文

第一部分内容为经典的 TCP的3次握手过程

第二部分是在完成握手之后,客户端向服务器端发送请求报文

第三部分是服务器端完成处理后,向客户端发送响应内容,包括响应头和响应体

最后部分是结束会话的信息

HTTP客户端事件,response,socket,connect,upgrade,protocols,continue

构建 WebSocket 服务

WebSocket

WebSocket客户端基于事件的编程模型与Node中自定义事件相差无几

WebSocket实现了客户端与服务器端之间的长连接

客户端与服务器端只建立一个TCP连接,可以使用更少的连接。

WebSocket服务器端可以推送数据到客户端

有更轻量级的协议头,减少数据传送量

WebSocket握手

upgrade

切换协议

WebSocket数据传输

为了安全考虑,客户端需要对发送的数据帧进行掩码处理

网络服务与安全

SSL作为一种安全协议,它在传输层提供对网络连接加密的功能

Node在网络安全模块

crypto

· 主要用于加 密解密,SHA1、MD5等加密算法都在其中有体现,

tls

· TLS/SSL是一个公钥/私钥的结构,它是一个非对称的结构

· 公钥用来加密要传输的数据,私钥用来解密接收到的数据

· 为了防止中间人攻击,TLS/SSL引入了数字证书来进行认证

· 创建服务器端

• 创建一个安全的TCP服务

• 测试证书是否正常

· TLS客户端

• 启动客户端的过程中,用到了为客户端生成的私钥、证书、CA证书

https

· HTTPS服务就是工作在TLS/SSL上的HTTP

· 1. 准备证书

· 2. 创建HTTPS服务

· 3. HTTPS客户端

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3.网络编程 网络编程

    操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必...

    changxin7
  • Java网络编程 -- AIO异步网络编程

    AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业...

    CodingDiray
  • 网络编程

    阅读目录 一.楔子 二.客户端/服务端架构 三.网络基础 四.套接字(socket)初使用 五.黏包 六.验证客户端链接的合法性 七.socketserver ...

    人生不如戏
  • 网络编程

    现如今网络的普及性已经非常的高了,大部分人也都非常熟悉网络,基本上也是天天离不开网络,比如逛逛微信朋友,聊聊qq撩撩妹,上个淘宝剁个手什么的。网络是将所有的计算...

    端碗吹水
  • 网络编程

    TCP编程中,如果要完成通信,通信双方必须要创建 socket,通过 socket 完成通信。

    Carlos Ouyang
  • 网络编程

    软件结构 C/S 和 B/S 网络通信协议 协议就是个规则 网络通信协议的分类 UDP TCP/IP 端口号

    全栈程序员站长
  • Java网络编程--BIO阻塞式网络编程

    阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回

    CodingDiray
  • Java网络编程--NIO非阻塞网络编程

    从Java1.4开始,为了替代Java IO和网络相关的API,提高程序的运行速度,Java提供了新的IO操作非阻塞的API即Java NIO。NIO中有三大核...

    CodingDiray
  • 6.网络编程

    六月的雨
  • UDP网络编程

    进行数据传输时,首先将传输的数据定义成数据报(Datagram),在数据报中指明数据将要到达的Socket(主机地址和端口号),然后再将数据发送出去。

    拾点阳光
  • Day23网络编程

    TCP编程 Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口...

    林清猫耳
  • Python 网络编程

    1、服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求...

    用户1173509
  • Python:网络编程

    我将通过示例展示如何使用 Python 来编写以各种方式使用网络(如互联网)的程序。Python 提供了强大的网络编程的支持,有很多库实现了常见的网络协议以及基...

    不可言诉的深渊
  • Python 网络编程

    现在的社会向互联网、AI 智能大踏步的高歌猛进,无论是互联网还是 AI 智能他们的基础都指向网络连接,试想一个没有网络连接的社会,大家每人一个功能机,那么什么互...

    keinYe
  • Java网络编程

    网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户...

    春哥大魔王
  • ServerForXML网络编程

    新建Dynamic Web Project,名称为ServerForXML(该勾选的勾上)。

    提莫队长
  • GetAPictureFromInternet网络编程

    这是《Android 4.0网络编程详解》书上的一个例子,可能是由于版本的原因吧,报了很多错。 新建android工程GetAPictureFromInte...

    提莫队长
  • Python网络编程

    TCP 客户端与服务器之间建立连接需要进行三次握手 客户端--->服务器 服务器--->客户端 客户端--->服务器,这样做的好处是可以保证数据的完整缺点是...

    云深无际
  • CSS---网络编程

    CSS是层叠样式表(Cascading Style Sheets)用来定义网页的显示效果。可以解决html代码对样式定义的重复,提高了后期样式代码的可维护性,并...

    谙忆

扫码关注云+社区

领取腾讯云代金券