网络分层架构学习

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

起初网络分层是标准的七层,也就是我们所说的 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)

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

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

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

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

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

常用端口

  21:FTP 文件传输服务
  22:SSH 远程连接服务
  80:HTTP 超文本传输服务
443:HTTPS 加密的超文本传输服务

1433:SQLServer数据库端口
3306:MYSQL数据库端口
6379:Redis数据库端口
8080:TCP服务端默认端口

学习来源:

https://juejin.cn/post/6844903934159519757

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

原文地址:https://www.cnblogs.com/Allofus/p/14860581.html