学习
实践
活动
工具
TVP
写文章
原创

网络编程

网络编程

构建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客户端

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

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

登录 后参与评论
0 条评论

相关文章

  • 3.网络编程 网络编程

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

    changxin7
  • 网络编程——UDP编程

    计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。因此,为了把计...

    全栈程序员站长
  • Java网络编程 -- AIO异步网络编程

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

    CodingDiray
  • 网络编程:socket 编程

    socket是应用层和TCP/IP协议中间通信的软件层,它是一组接口,在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议封装隐藏在soc...

    全栈程序员站长
  • 网络编程-UDP编程

    UDP概述:在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。(主要把数据封装成一个包)

    全栈程序员站长
  • 网络编程

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

    人生不如戏
  • 网络编程

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

    全栈程序员站长
  • 网络编程

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

    端碗吹水
  • 网络编程

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

    Carlos Ouyang
  • Java网络编程--NIO非阻塞网络编程

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

    CodingDiray
  • Java网络编程--BIO阻塞式网络编程

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

    CodingDiray
  • python核心编程(网络编程)

    1、创建TCP 套接字,必须使用SOCK_STREAM 作为套接字类型。创建UDP 套接字,必须使用SOCK_DGRAM 作为套接字类型。 2、创建TCP套接...

    用户5760343
  • 网络编程基础-Socket编程

    大家都知道,HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。缺点就是会导致过多不必要的请...

    小博测试成长之路
  • Python核心编程(网络编程)[通俗易懂]

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155960.html原文链接:https://javaforall.cn

    全栈程序员站长
  • Java网络编程--网络协议

    为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。OSI网络七层协议就是在这个基础上制定出来的...

    CodingDiray
  • 网络基础篇-网络编程

    在内核中,为每个socket维护两个队列,一个是已建立连接的队列,也就是完成了三次握手,处于established状态,一个是还没有完全建立连接的队列,处于sy...

    Check King
  • 网络编程基础第二讲.网络编程框架

         socket 是开发接口.是TCP/IP网络环境下.应用程序与驱动程序之间访问的接口.

    IBinary
  • 网络编程小结

    写这个小结主要是因为之前研究Boost.Asio的时候,其内部使用了很多不同的方法来实现异步网络编程 然后就顺便把一些高级的玩意看了一下,也顺便把以前低级的玩...

    owent

扫码关注腾讯云开发者

领取腾讯云代金券