一、OSI 七层模型
OSI(Open System Interconnect),即开放式系统互联,也叫 OSI 参考模型。
一、定义:
OSI 定义了网络互连的七层框架。每一层都具备特定功能和协议,并通过接口与相邻层进行通信。OSI 对各层服务的定义十分详细,某一层提供的服务,是该层以及其他各层的一种能力,通过接口提供给更高一层。
二、各层介绍:
1、应用层
-
这是 OSI 参考模型中最贴近用户的一层,为计算机用户提供应用接口,直接为用户提供各种网络服务。
-
常见应用层的网络服务协议包括:HTTP、HTTPS、FTP、POP3、SMTP 等。
-
例如,当您使用浏览器浏览网页时,就是在应用层通过 HTTP 或 HTTPS 协议与服务器进行通信。
-
2、表示层
-
表示层主要提供各类用于应用层数据的编码和转换功能,确保一个系统的应用层所发送的数据能够被另一个系统准确识别。
-
必要时,该层能提供一种标准形式,将计算机内部的多种数据格式转换为通信中采用的标准表示形式。
-
同时,数据压缩和加密也是表示层可提供的重要转换功能之一。
-
比如说,在进行数据传输时,为了节省带宽可以对数据进行压缩,为了保证数据安全可以进行加密。
-
3、会话层
-
会话层负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应构成。
-
就好比两个人打电话,会话层负责建立通话连接、保持通话畅通,并在通话结束时终止连接。
4、传输层
-
传输层建立了主机端到端的链接,其作用在于为上层协议提供端到端的可靠且透明的数据传输服务,包括处理差错控制和流量控制等问题。
-
此层向高层屏蔽了下层数据通信的细节,让高层用户看到的是在两个传输实体间的一条可靠的数据通路,这条通路可由用户控制和设定。
-
我们常说的 TCP 和 UDP 协议就处于这一层。端口号就是这里所说的“端”。
-
例如,在下载文件时,传输层会确保数据完整无误地传输到您的设备。
-
5、网络层
-
本层通过 IP 寻址来建立两个节点之间的连接。对于源端运输层送来的分组,它会选择合适的路由和交换节点,准确无误地按照地址传送给目的端的运输层。
-
这就是通常所说的 IP 层,也就是我们常提到的 IP 协议层。IP 协议是 Internet 的基础。
-
国际标准组织ISO定义地址分类:五大类
A类:1-126 默认子网掩码:255.0.0.0
B类:128-191 默认子网掩码:255.255.0.0
C类:192-223 默认子网掩码:255.255.255.0 -
D类:224-239 组(多)播地址
E类: 240-254 科研使用 超算
-
比如,当您发送一封电子邮件时,网络层会根据收件人的 IP 地址选择最佳的传输路径。
6、数据链路层
-
数据链路层将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网中使用 MAC 地址)来访问介质,并进行差错检测。
-
数据链路层又分为 2 个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。
-
MAC 子层负责处理 CSMA/CD 算法、数据出错校验、成帧等工作;LLC 子层定义了一些字段,使得上层协议能够共享数据链路层。在实际应用中,LLC 子层并非总是必需的。
-
例如,在以太网中,数据链路层确保数据在本地网络中的准确传输。
-
7、物理层
-
实际最终信号的传输是通过物理层实现的。它通过物理介质传输比特流,规定了电平、速度和电缆针脚等。
-
物理层的传输介质多样,常用设备包括(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆等。
-
比如,计算机通过网线与网络设备连接,物理层负责在这条线路上传输数据。
二、TCP/IP 模型
一、TCP/IP 介绍
-
TCP/IP 协议起源于二十世纪六十年代美国的分组交换网络项目。
-
而其真正得到广泛应用是随着二十世纪八十年代 Internet 的诞生,它成为了计算机网络(特别是 Internet)的基础。
-
TCP/IP 是一组开放式协议:
1、开放的协议,免费使用,对异构系统开放:
-
支持不同型号的设备。
-
适用于不同的硬件与操作系统。
2、每台设备具有唯一的 MAC 地址,可在局域网、广域网中作为唯一标识符使用,更适合互联网。
-
-
实现原理:通过有效的路由,实现网络的互联互通。
模型基本工作原理:
-
计算机网络的运行架构是分层的,从最高层的应用层到最底层的物理层,每层都有各自明确的职责。
-
本层设施为上层服务提供支持,本层服务依赖于下层的设施。
二、各层简介:
1、应用层:
1、应用层(Application Layer)的主要协议:
1)HTTP(Hypertext Transfer Protocol,超文本传输协议)
-
用于与服务器间传输 HTML 文件、图片、视频等文件类型的协议。HTTP 协议基于浏览器的一种 BS 架构的系统。
-
http 协议的端口一般采用 80,也可以修改配置文件使用其他端口(建议 1024 之后)。
-
https 协议(http 基础 + ssl 协议 + CA),是一种更安全的超文本传输协议,端口默认为 443。
get 和 post 请求的区别:
get 请求的参数通常拼接在 URL 后面,存在一定的安全风险;向服务器端申请数据,可以获得响应实体。
而 post 请求的参数可以进行加密处理,且不能通过地址栏看到这些数据。可以获取实体,对资源进行增删改。
URL 地址栏存在长度限制,所以 get 请求的参数长度也有限制;但 post 不受长度的限制。
get 是向服务器要数据,不影响服务器的资源;而 post 请求也是向服务器要资源,并且可以改变服务器上的资源。
发送 get 请求一次即可完成;而 post 请求需要两次发送,先获取一次请求 100(继续),再继续去发得到 200(发送成功)。
请求方式:
请求方式包括:
get:向服务器端申请数据,可以获得响应实体(html 格式,json,xml 格式)。
head:类似 get,但只获取响应头部,不获取实体。
post:可以获取实体,对资源进行增删改。
put:修改服务器资源。
delete:删除服务器资源。
如果为 http 协议:只用 get,post。
如果是 restful 接口,可以使用 get,post,put,delete。
响应结构:
响应报文结构包括:
响应状态行:协议、版本号、响应状态码、响应状态信息。
响应头部:
Content-Type:响应正文的格式(json,html,xml)。
Content-Length:响应正文的长度。
Date:日期,服务器返回响应报文的日期。
Last_Modified:服务器上资源最后修改时间。
Expires:从服务器申请到本地资源,设置过期时间。 响应正文:
get/post 获得的实体。
响应状态码:
200:请求成功。
301、302:分别是永久重新定向和临时重新定向。
304:文件内容未发生改变。
401:未授权状态。
403:禁用状态。
404:资源不存在(路径、资源名写错)。
错误状态码和响应状态码的区别:
1. 响应状态码是对请求状态的反馈,不能判断业务逻辑的问题。
2. 错误状态码是定义系统业务逻辑状态的功能。
3. 响应状态码出现在响应报文的状态行,错误码出现在响应正文中。
4. 错误码可以自行定义,主要反馈业务逻辑的错误。
2)FTP(File Transfer Protocol,文件传输协议)
用于在网络上进行文件的上传和下载。
3)SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)
用于发送电子邮件。
4)DNS(Domain Name System,地址解析协议)
将域名转换为 IP 地址,方便用户访问网站。
5)POP3:邮局协议,用于接收邮件服务。
6)telnet(远程登录)
允许用户通过网络登录到远程主机。
2、主要功能:按照不同应用的特定要求和方式把数据传输到传输层或者接受从传输层返回的数据。实现不同应用之间的通信和数据交换,提供各种应用服务,如网页浏览、文件传输、电子邮件发送等。
2、传输层:
传输层(Transport Layer)
1)主要协议:
TCP(Transmission Control Protocol) UDP(User Datagram Protocol)
2)UDP 和 TCP 的区别:
TCP 是面向连接的,而 UDP 是面向无连接的。
TCP 的报文结构相对更为复杂。
TCP 是基于字节流(0、1),UDP 是基于数据报。
TCP 会保证数据的正确性,UDP 不能保证,可能会存在丢包的现象。
TCP 传输数据的顺序是正确的,UDP 则无法保证。
3)主要功能:
TCP:传输控制协议
-
传输控制协议是面向连接的、全双工的、可靠的、基于字节的通信协议。
-
全双工、面向连接、可靠的传输方式,通过三次握手来实现 TCP 数据传输。
1、三次握手过程:
第一次握手:TCP 客户进程先创建传输控制块 TCB,然后向服务器发出连接请求报文。此报文首部中的同部位 SYN=1,同时选择一个初始序列号 seq=x 。此时,TCP 客户端进程进入了 SYN-SENT(同步已发送)状态。这证明客户端的发送能力正常。
第二次握手:TCP 服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中 ACK=1,SYN=1,确认号是 ack=x+1,同时也要为自己初始化一个序列号 seq=y。此时,TCP 服务器进程进入了 SYN-RCVD(同步收到)状态。这证明服务器端的接收能力、发送能力正常。
第三次握手:TCP 客户端收到确认后,还要向服务器给出确认。确认报文的 ACK=1,ack=y+1,自己的序列号 seq=x+1。此时,TCP 连接建立,客户端进入 ESTABLISHED(已建立连接)状态 触发三次握手。这证明客户端的接收能力正常。
2、四次挥手过程:
第一次挥手:客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为 seq=u(等于前面已经传送过来的数据的最后一个字节的序号加 1),此时,客户端进入 FIN-WAIT-1(终止等待 1)状态。
第二次挥手:服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号 seq=v,此时,服务端就进入了 CLOSE-WAIT(关闭等待)状态。
第三次挥手:客户端接收到服务器端的确认请求后,客户端就会进入 FIN-WAIT-2(终止等待 2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了 LAST-ACK(最后确认)状态,等待客户端的确认。
第四次挥手:客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是 seq=u+1,此时,客户端就进入了 TIME-WAIT(时间等待)状态,但此时 TCP 连接还未终止,必须要经过 2MSL 后(最长报文寿命),当客户端撤销相应的 TCB 后,客户端才会进入 CLOSED(关闭)状态,服务器端接收到确认报文后,会立即进入 CLOSED 关闭状态,到这里 TCP 连接就断开了,四次挥手完成。
UDP:用户报文协议
-
也适用于数据传输控制的协议,对数据的可靠性、安全没有保证,不需要连接就可以发送。
-
例如,在实时视频通话中,对数据的实时性要求较高,而对少量数据的丢失不太敏感,这时就可以使用 UDP 协议。
3、网络层:
网络层(Internet Layer)
1)主要协议: IP(Internet Protocol) ICMP(Internet Control Message Protocol) ARP(Address Resolution Protocol) RARP(Reverse Address Resolution Protocol)
2)IP 协议:ipv4、ipv6
-
IP 地址形式:X.X.X.X,X 的范围是 0 - 255。
IP 地址构成:网络位 + 主机位 (网络位相同的 IP 地址,为同一网段)。
-
IP 地址是一个唯一标识,是一段网络编码,我们的 IP 地址由 32 个 0 和 1 的组合而成。
与 IP 协议相关的技术有:DNS、ARP、ICMP、DHCP、NAT、IP 隧道等。
3)局域网通信规则:
在同一个局域网中,所有的 IP 必须在同一网段中才可以互相通信!
4)主要功能:
-
负责数据包的路由和转发,提供数据包的传输和寻址功能,确保数据包能够在网络中正确传输。
-
比如,当您发送一封电子邮件时,网络层会根据目标 IP 地址选择合适的路径将数据包转发到目的地。
4、网络接口层:
网络接口层(Network Interface Layer)
1)主要协议:Ethernet、Wi-Fi、PPP(Point-to-Point Protocol)
2)主要作用:
-
发送时将 IP 包作为帧发送,接收时把接收到的比特组装成帧,提供链路管理、错误检测等。
-
例如,在使用 Wi-Fi 连接网络时,网络接口层负责将数据以帧的形式在无线网络中传输和接收。