一、OSI七层模型
1.1什么是OSI七层模型
参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
- 信息传递的流程从应用层开始,逐层向下经过每一层,然后再从物理层传输到在目标计算机应用层上。
- 接收方从物理层接收到信号后,数据逐层向上解封装,直到到达应用层。
1.2 物理层
通过物理信号传输比特流,维护物理连接。是网线、光纤、无线电波的基本连接。
1.3 数据链路层
确保在两个直接连接的节点之间无误地传送数据帧(frame),并处理帧的发送、接收、错误检测和纠正等任务。
对比特流进行处理:分组为8位一组,即一个字节,依次顺序发送数据——帧
在局域网(LAN)中,数据链路层使用物理地址(MAC地址)来唯一标识网络接口。
当采用复用技术时,一条物理链路上可以有多条数据链路。
4.网络层
在不同网络之间转发数据包,实现不同网络之间的数据传输。
主要功能:
1.逻辑地址分配。网络层使用逻辑地址(如IP地址)来唯一标识网络中的设备。
2.路径选择。 确定数据包从源节点到目的节点的最佳路径。这一过程称为路由。路由器通过查阅路由表和使用路由协议(如RIP、OSPF、BGP)来选择最优路径。
3.数据包转发
4.分段与重组
5.流量控制与阻塞控制
主要协议:IP、ARP(将IP地址解析为物理地址)、RARP、路由协议
5.传输层
在网络中提供端到端的通信服务。它确保数据在源主机和目的主机之间可靠地传输。
主要的传输层协议包括:
- TCP(Transmission Control Protocol):提供可靠、面向连接的通信服务。
- UDP(User Datagram Protocol):提供无连接、不可靠的数据传输,适用于需要低延迟的应用。
6.会话层
会话层(Session)是建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。大文件的断点续传
7.表示层
数据被转换成网络可以理解的格式,不同系统之间的通信。
8.应用层
应用程序生成数据。应用层直接应用程序接口并提供常见的网络应用服务。
二、TCP与RTP
2.1 TCP
传输层将数据分段后交给网络层。传输层的每个数据段被称为“报文段”(TCP)或“数据报”(UDP),其中包含了源端口和目的端口信息。网络层接收到这些报文段后,会将它们封装成数据包(或称为IP数据报),并负责数据包的寻址和路由,确保它们从源主机传输到目的主机。
TCP头部组成结构
- 源端口号(16位):发送端的端口号
- 目的端口号(16位):接收端的端口号
- 序列号(32位):每个TCP数据段都会包含一个序号,表示该数据段中的第一个字节的序号 (当TCP数据包过大,就要进行分段,按顺序重组。)
- 确认号(32位): 表示期望接收的下一个字节的序列号。确认号=上一个序号+1
- 数据偏移(4位):TCP头部的长度。TCP头部最长是60字节。
- 状态控制(6位):标志位 ,表示数据包的类型
URG——表示紧急指针是否有效,表示数据中包含紧急数据
ACK——确认位,表示该消息为确认消息
PSH——指示接收端应立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间
(如果应用程序不将接收到的数据读走,它们就会一直停留在TCP接收缓冲区中)
RST ——重置位,要求对方重新建立连接。TCP连接中出现错误时,断开连接。需要重
新建立连接
SYN——同步。表示请求建立一个连接
FIN——终止。表示发送报文结束了,需要关闭连接。
- 窗口大小(16位):流量控制的窗口大小。窗口指的是接收通告窗口。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
- 校验和(16位):用于检测头部和数据在传输过程中是否有错误。
- 紧急指针(16位):如果URG标志位被设置,这个字段指示紧急数据的结束位置,是紧急指针相对当前序号的偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。
- 选项(可变长度):包括各种可选的参数,如最大报文段长度(MSS)等。
- 数据(可变长度):实际的传输数据。
HTTP、HTTPS协议——基于TCP协议;
TCP连接的建立和交互必须先完成,HTTP协议才能在这个TCP连接上进行数据交换。HTTP协议本身并不负责连接的建立和管理,这些任务由底层的TCP协议处理。
TCP连接过程(三次握手):
- SYN:客户端向服务器发送SYN包,表示请求建立连接。
- SYN-ACK:服务器回应SYN-ACK包,表示接受连接请求。
- ACK:客户端再向服务器发送ACK包,表示确认连接建立成功。
TCP断开连接(四次挥手)
2.2 UDP
UDP(用户数据报协议)是一种无连接的传输层协议,提供简单的、面向数据报的服务。
- 无连接:UDP不需要在数据传输前建立连接,因此开销较小。
- 不可靠:UDP不保证数据包的顺序、完整性或交付,数据可能会丢失或重复。
- 低延迟:由于没有连接建立和流量控制,UDP通常具有更低的延迟。
- 数据报:每个UDP数据包(数据报)是独立的,包含完整的传输信息。
- 头部简单:UDP头部结构简单,仅包含源端口、目标端口、长度和校验和等字段。
应用场景:不需要可靠机制,只要求速度。
比如流媒体,多媒体游戏,IP电话。
资源消耗小
基于UDP的协议:DNS(域名解析协议)、SNMP、DHCP(动态获取)、RP
基于TCP的协议:HTTP、HTTPs、FTP
UDP的头部结构
- 源端口号(16位):发送端的端口号
- 目的端口号(16位):接收端的端口号
- UDP长度(16位)
- UDP校验位(16位)
2.3 TCP与UDP的区别
TCP | UDP |
面向连接 | 无连接 |
提供可靠的数据传输 | 不保证数据可靠传输 数据包可能丢失、重复或乱序。 |
流量控制和拥塞控制机制 | 没有 |
速度相对较慢。 | 速度较快 |
传输数据量大 | 传输量小 |
面向字节流,数据流被视为一个连续的字节序列。 | 面向数据报,每个数据包是独立的,大小有限。 |
全双工 | 全双工 |
三、HTTP
HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种应用层协议,用于通过网络传输数据,尤其是网页数据。HTTP的基本功能是支持客户端和服务器之间的请求和响应交互,广泛用于Web浏览器和Web服务器之间的通信。
3.1. 协议版本
- HTTP/1.0:早期版本,支持基本的请求和响应机制。
- HTTP/1.1:改进版,增加了持久连接和管道化等功能。
- HTTP/2:进一步改进了性能,支持多路复用和头部压缩。
- HTTP/3:基于QUIC协议,进一步提高了性能和安全性。
3.2. 请求和响应
- 请求:客户端(通常是浏览器)向服务器发送请求。
- 请求报文四个部分:请求行,请求头,空一行(表示请求头部结束),请求体
- 请求行:请求方法+请求URL和HTTP版本号
- 请求头:包含客户端信息和请求附加数据(如
Host
,User-Agent
,Accept
)。每个头部字段由名称和对应的值组成。 - 请求体:包含发送到服务器的数据,例如在POST请求中提交的表单数据或JSON数据。
- 响应:服务器返回响应
- 响应报文四个部分:响应行,响应头,空一行(表示请求头部结束),响应体
- 响应行:HTTP版本+状态码+状态短语(原因描述)
- 响应头:关于服务器和响应的元数据(如
Content-Type
,Content-Length
,Set-Cookie
)。 - 响应体(可选):包含实际的内容数据,如HTML页面、图像或JSON数据。
3.3 请求方法
- GET:请求数据,不改变服务器状态。一般没有请求体
- POST:提交数据,通常用于创建或更新资源。
- PUT:更新资源。
- DELETE:删除资源。
- HEAD:获取响应头部,不获取响应体。
- OPTIONS:查询服务器支持的HTTP方法。
- PATCH:部分更新资源。
3.4 状态码
- 1xx:信息性状态码(如100 Continue)。接收的请求正在被处理
- 2xx:成功状态码(如200 OK、201 Created)。请求正常处理
- 3xx:重定向状态码(如301 Moved Permanently、302 Found)。304表示缓存,没有改动
- 4xx:客户端错误状态码(如404 Not Found、400 Bad Request)。
- 5xx:服务器错误状态码(如500 Internal Server Error、502 Bad Gateway)。
3.5 无连接应用协议
- 限制每次连接只处理一个请求
- 服务器处理完善客户的请求,并收到客户的应答后,即断开连接
每次请求建立新连接,每个请求和响应都是独立的——资源消耗大
解决:Keep-Alive
3.6 无状态
- 每个请求都是独立的
- 服务器不保留客户端的状态信息。
服务器处理后续请求涉及到前面请求的信息——重传。
优点:释放了服务器的压力
缺点:重传,增大数据量,造成资源lang'f
- 为了维护状态,通常使用cookies、sessions和其他机制。
cookies:将前面请求信息保存成一个临时文件——cookies值
sessions:永久的cookies值。 session ID(会话编号)保存在服务器上——传递给客户端,保存在内存里。问题:资源占用。————设置session超时时间,超时后清除session ID
四、HTTPS
HTTP协议 问题:发送的数据都是明文的,如果第三者窃听,截取数据包来伪装客户端(或服务器)。服务器和客户端没有机制来确定双方身份。如果第三者对数据包进行篡改数据,服务器也不知道。
缺点:存在安全隐患。————HTTPS
HTTPS(HyperText Transfer Protocol Secure)超文本传输安全协议,HTTP的安全版,它加密数据并确保其机密性(数据密文),可保护用户在于网站交互时免于窃取个人信息和计费数据。(身份认证)。防止信息被篡改(信息完整性)
- HTTP+加密+身份认证+完整性保护 = HTTPS
- HTTPS 使用 SSL(安全套接层)/TLS(传输层安全)协议对数据进行加密通信
- HTTPS的默认端口号 443
4.1HTTPS的工作流程
-
客户端发起请求:浏览器向服务器发起 HTTPS 连接请求。
-
服务器响应:服务器返回一个包含公钥和证书的响应。
-
证书验证:浏览器验证服务器的证书是否由受信任的证书颁发机构签发,以及证书是否有效。
-
密钥交换:浏览器和服务器使用证书中的公钥交换加密所需的对称密钥。
-
建立加密连接:使用对称密钥进行加密通信,确保数据的保密性和完整性。
-
安全通信:浏览器和服务器之间的数据传输都经过加密,防止数据被窃取或篡改。