网络分层架构学习

  为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层只与紧挨着的上层或者下层进行交互,将网络分层,这样就可以修改、甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。

起初网络分层是标准的七层,也就是我们所说的 OSI 七层模型。 后面又简化成了 TCP/IP 五层模型

 

 

 每一层的作用及与上下层的关系:

 

1. 物理层 

  光纤、双绞线电缆,无线设备等将计算机之间连接,主要用来传输 0、1 信号

 

2. 数据链路层 

  物理层仅用来传输 0、1 信号,但规定不了代表什么意义。所以在数据链路层规定一套协议,专门给 0、1 信号进行分组,以及规定不同的组代表什么意义,从而使双方计算机都能够进行识别,这就是“以太网协议”。

  但是如何标识对方呢?:MAC 地址

· MAC地址

  作为网络中计算机设备的唯一标识,从计算机在厂商生产出来就被十六进制的数标识为 MAC 地址。(也叫网卡地址,烧录在网卡上,可通过程序擦写)

   既然我们知道了用 MAC 地址作为标识,那么怎么才能知道我们要进行通信的计算机 MAC 地址呢?:广播

 · 广播

  可以帮助我们能够知道对方的 MAC 地址。广播存在两种情况,一种是同一子网络(局域网)中的计算机是通过 ARP 协议获取到对方 MAC 地址的。第二是不同子网络中是交给两个局域网的网关(路由器)去处理。

 

3. 网络层 

  通过 IP 地址来判断两台计算机是否在同一子网络中

· IP 地址

  与 MAC 地址不同,MAC 地址是物理上的地址,是固定死的;IP 地址是逻辑上的地址,是动态分配的。 

· DNS 解析

  可以将域名解析为 IP 地址。

· 子网掩码

  子网掩码就是用来标识同一局域网中的 IP 地址的信息。

  IP 地址由 32 个二进制位组成,也就是 4 个十进制组成,如 255.255.255.000 ;子网掩码也是 32 个二进制位组成,但是只能用 0 或 1 来表示,如11111111.11111111.11111111.00000000。有1的部分表示网络部分,有0则表示主机部分。

  两台计算机的 IP 地址分别和子网掩码进行一种运算( AND 运算),如果结果相同,两台计算机就在同一局域网中,反正就不在同一局域网中。

 

4. 传输层 

  实现“端口到端口”的通信,计算机运行的不同程序都会分配不同的端口,所以才能使得数据能够正确的传输给不同的应用程序。

· UDP 协议

  加入端口后也需要一套规则,比如 UDP 协议,该协议不需要建立连接。

  一般用于要求速度快的场合,如微信视频。

  UDP 协议不提供差错恢复、不提供数据重传、传输安全性差。所以一旦进行通信,就不知道对方是否接收到了数据。那我们再定义一套规则:TCP

· TCP 协议

  建立起一个 TCP 连接需要经过客户端和服务器的 "三次握手",握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。

  断开连接时服务器和客户端均可以主动发起断开 TCP 连接的请求,断开过程需要经过 "四次挥手"。

  TCP 提供可靠的服务。也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达。

  一般用于传输数据量较少,对可靠性要求高的场合。

 

 5. 应用层 

  应用层协议规定应用程序的数据格式。如电子邮件、HTTP 协议、FTP 数据的格式。

· HTTP协议:即超文本传输协议,是建立在 TCP 协议之上的一种应用。

  在 HTTP 1.0 中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。

  在 HTTP 1.1 中,则可以在一次连接中处理多个请求,并且多个请求可以并行,不需要等待一个请求结束后再发送下一个请求。

  是一种“短连接”。

  在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密,所以不适合传输一些敏感信息,比如信用卡号、密码等。

  为了解决 HTTP协议的这一缺陷,需要使用了另一种协议:HTTPS

· HTTPS协议:安全套接字层超文本传输协议。

  为了数据传输的安全,HTTPS 在 HTTP 的基础上加入了 SSL协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

· HTTPS 和 HTTP 的区别

  HTTPS 协议需要到ca申请证书,一般免费证书很少,需要交费;

  HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;

  HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;

  HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络,比 HTTP 协议安全。

 

· 套接字(socket)产生一个持续的连接,实现双向通信。常用如 WebSocket、Socket.io。(套接字和网络请求的区别:网络请求如get、post都是单向的)

  套接字是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。

  包含进行网络通信必须的五种信息:连接使用的协议,本地主机的 IP 地址,本地进程的协议端口,远地主机的 IP 地址,远地进程的协议端口。

  建立 Socket 连接至少需要一对套接字,其中一个运行于客户端,称为 ClientSocket,另一个运行于服务器端,称为 ServerSocket。

  套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

  详情:https://www.cnblogs.com/shmilynanmei/p/9033877.html

 

· WebSocket

  全双工通信,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

webservice 和 websocket 的区别:

  webservice 是一种跨编程语言和跨操作系统的远程调用技术(服务端技术)。其以 http 协议为基础,通过 xml 进行客户端和服务器端通信的框架/组件。

  websocket 是 html5 支持的新特性,适用于即时通信,将以前 C/S 架构上的 socket 通信搬到 B/S 上,但是有跟 socket 有差别。

  以往的 web 即时通信通过 ajax 的轮询实现(效率低,非常浪费资源),现在 websocket 的诞生将改变这一解决方案。

 

 

· Socket.io

  基于 node.js 环境的。

  WebSocket 是对 socket 的封装,仅能在支持 html5 的浏览器上使用。

  Socket.io 又是对 WebSocket 的封装,能判断当前浏览器支持的通信方式。

 

其他协议

  FTP:文件传输协议,运行在 TCP 之上。

  TFTP:简单文本传输协议,建立在 UDP 之上。

  SMTP:简单邮件传输协议,建立在 TCP 之上。

  DHCP:动态主机配置协议,建立在 UDP 之上,实现自动分配 IP 地址。

  Telnet:远程登录协议,建立在 TCP 之上,允许用户登录进入远程计算机系统。

  ARP:地址解析协议,用于动态的完成 IP 到物理地址的转换。

  RARP:反向地址解析协议,用于动态的完成物理地址向 IP 地址的转换。

 

常用端口

    21:FTP 文件传输服务

    22:SSH 远程连接服务

    80:HTTP 超文本传输服务

  443:HTTPS 加密的超文本传输服务

1433:SQLServer数据库端口

1521:Oracle数据库端口

3306:MYSQL数据库端口

6379:Redis数据库端口

8080:TCP服务端默认端口

 

学习来源:

https://juejin.cn/post/6844903934159519757

https://www.bilibili.com/video/BV1Qt4y1C7XK

npm uninstall socket.io
posted @ 2021-07-05 11:20  kueizheng  阅读(251)  评论(0编辑  收藏  举报