Node.js 网络通信(一)——网络通信相关概念、网络七层模型、mac 地址之ip地址、Port 端口号、域名 & TCP-传输控制协议、UDP-用户数据报协议、Socket套接字

Node.js 网络通信(一)——网络通信相关概念、网络七层模型、mac 地址之ip地址、Port 端口号、域名 & TCP-传输控制协议、UDP-用户数据报协议、Socket套接字

Node.js 网络通信

Node 是一个面向网络而生的平台,它具有事件驱动、无阻塞、单线程等特性,具备良好的可伸缩性,使得它十分轻量,适合在分布式网络中扮演各种各样的角色。同时 Node 提供的 API 十分贴合网络,适合用它基础的 API 构建灵活的网络服务。本课程的内容就是给大家介绍 Node 在网络通信编程方面的具体能力。

利用 Node 可以十分方便的搭建网络服务器。在 Web 领域,大多数的编程语言需要专门的 Web 服务器作为容器,如 ASP、ASP.NET 需要 IIS 作为服务器,PHP 需要打在 Apache 或 Nginx 环境等,JSP 需要 Tomcat 服务器等。但对于 Node 而言,只需要几行代码即可构建服务器,无需额外的容器。

Node 提供了 net、dgram、http、https 这4个模块,分别用于处理 TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端。

第1章 网络通信相关概念

我们每天使用互联网,你是否想过,它是如何实现的?

全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?

互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。

在这里插入图片描述

网络七层模型

互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。

用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。

如何分层有不同的模型,有的模型分七层

在这里插入图片描述

为了好理解,有的模型分五层

在这里插入图片描述

越下面的层,越靠近硬件;越上面的层,越靠近用户。

mac 地址

ping 127.0.0.1 能ping通即代表电脑网卡没有问题,网络正常就能上网

IP 地址

计算机在网络中的标识号码,好比每个人的电话号码。

ip地址的作用: 通过ip地址在网络中找到对应的设备,然后可以给这个设备发送数据

ip地址类型分为:ipv4、ipv6

Port 端口号

端口号分为知名端口号和动态端口号(知名端口号是系统使用的,动态端口号是程序员设置使用的)

知名端口号:范围从 0-1023

动态端口范围:1024-65535 ,当程序关闭时,同时也就释放了所占用的端口号

查看端口号:netstat -an

查看端口号被哪个程序占用: lsof -i[tcp/udp]:端口号 (找不到时,使用管理员权限,加sudo)

根据进程编号杀死指定进程:kill -9 进程号

域名

方便记忆某台电脑的主机地址,域名能解析出来一个ip地址(DNS解析)

TCP 和 UDP

TCP和UDP: 都是数据传输方式的协议.比如说我要给你钱, 我是以手把手的方式拿给你呢还是以快递的方式寄给你呢.

TCP(传输控制协议)

  • 需要建立连接(三次握手),形成一条传输通道,才能传输数据
  • 传输数据的大小不受限制
  • 是安全可靠的协议,但是速度稍慢

UDP(用户数据报协议)

概念:英文全拼(User Datagram Protocol)简称用户数据报协议,它是无连接的、不可靠的网络传输协议

核心特点:无连接、资源开销小、传输速度快、UDP每个数据包最大是64K

优点:不需要连接,传输速度快,资源开销小

缺点:传输数据不可靠,容易丢失数据包,没有流量控制,当对方没有及时接收数据,发送方一直发送数据会导致缓冲区数据满了,电脑出现卡死情况,所以接收方需要及时接收数据

  • 不需要建立连接, 把数据封装成数据包扔给对面
  • 每个数据包大小限制在64K内
  • 因为不建立连接,所以对方可能收到也可能收不到数据(丢包),因此是不安全的协议, 但是速度比较快

什么时候用 TCP,什么时候用 UDP?

  • 对速度要求比较高的时候使用UDP,例如视频聊天, QQ聊天
  • 对数据安全要求比较高的时候使用TCP,例如数据传输,文件下载
  • 假如对于视频聊天来说,如果画质优先那就选用TCP, 如果流畅度优先那就选用UDP

什么是 Socket

Socket应用于两个不同客户端之间的通信及数据传输.中文名字叫套接字.
编程源于生活. 打个活生生的例子来说, 汽车和加油机.我们如果想把加油机里面的油输到汽车上, 那么汽车这边需要有一个端口, 加油机这边也要有一个端口, 两边端口各加一个套接头套着(好比adaptor),然后中间连上管道来输油. 我认为Socket的角色就是这个套接头.
简单来说, 要想在两个客户端之间传数据, 那么两个客户端各自都要有一个Socket.

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44867717/article/details/131218454