为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层至于紧挨着的上层或者下层进行交互,将网络分层,这样就可以修改、甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。
起初网络分层是标准的七层,也就是我们所说的 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