网站开发的数据库设计实体是什么,内蒙古呼和浩特邮编,喀什百度做网站多少钱,表白链接生成器文章目录 计算机网络网络模型网络OSITCP/IP 应用层常用协议HTTP报文HTTP状态码HTTP请求类型HTTP握手过程HTTP连接HTTP断点续传HTTPSHTTPS握手过程 计算机网络
网络模型 为了解决多种设备能够通过网络相互通信#xff0c;解决网络互联兼容性问题。 网络模型是计算机网络中用于… 文章目录 计算机网络网络模型网络OSITCP/IP 应用层常用协议HTTP报文HTTP状态码HTTP请求类型HTTP握手过程HTTP连接HTTP断点续传HTTPSHTTPS握手过程 计算机网络
网络模型 为了解决多种设备能够通过网络相互通信解决网络互联兼容性问题。 网络模型是计算机网络中用于理解和设计网络通信的分层架构 主要分OSI模型和TCP/IP模型 网络OSI 物理层 传输原始比特流定义物理介质电缆、光纤等的电气、机械特性。 数据单元比特Bit 数据链路层 数据封帧在直接相连的节点间可靠传输数据帧MAC地址寻址错误检测。 数据单元帧 网络层 负责数据的路由转发分片,IP地址寻址。 数据单元数据包 传输层 端到端通信确保可靠传输TCP或快速传输UDP。 数据单元TCP,UDP 会话层 建立、管理和终止会话同步数据交换。 表示层 数据格式转换、加密/解密如SSL/TLS、压缩如JPEG、MPEG。 应用层 提供用户统一的接口支持应用程序通信。
TCP/IP 网络接口层 处理物理连接和本地网络数据传输。 网络层 IP寻址、路由。 传输层 处理主机到主机的通信TCP、UDP。 应用层 支持 HTTP、SMTP 等最终用户进程。
应用层 提供应用程序与网络之间的交互接口如浏览器、邮件客户端。用户通过应用层协议访问网络服务如访问网页、发送邮件。 常用协议
HTTP,HTTPS,CDN,DNS等。 默认端口 HTTP80 HTTPS: 443 HTTP报文
无论是请求报文还是回应报文均有3部分组成
|-----------------------| | 起始行 | → 请求方法/状态码等 |-----------------------| | 头部字段 | → 元数据键值对 |-----------------------| | 空行 | → 分隔头部和正文 |-----------------------| | 消息体 | → 实际传输的数据可选 |-----------------------| 请求报文 [起始行]方法/请求URL/HTTP版本 [头部字段]包含关于请求的附加信息如Host、User-Agent、Content-Type等。 [空行] [消息体]用于传递数据如 POST 请求的表单或JSON数据。 POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27usernameadminpassword123响应报文 [起始行] :包含HTTP版本/状态码/状态信息。 [头部字段] :包含关于响应的附加信息响应数据类型,数据类型cookie等 [空行] [消息体] :包含响应的数据通常是服务器返回的HTML、JSON等内容 HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 137
Date: Wed, 21 Oct 2023 07:28:00 GMThtmlbodyh1Welcome to Example.com/h1/body
/htmlHTTP状态码
分类描述常见状态码1xx信息类请求已被接收继续处理100, 1012xx成功类请求被成功处理200, 201, 2043xx重定向类需进一步操作以完成请求301, 302, 3044xx客户端错误类请求有误服务器无法处理400, 401, 403, 4045xx服务器错误类服务器处理请求失败500, 502, 503
其中常用的状态码
200请求被成功处理301资源已永久迁移到新URL网站更换域名旧链接跳转到新地址302资源临时从其他URL返回客户端后续应继续请求原地址未登录用户访问受限页面临时跳转到登录页404请求的资源不存在500服务器内部错误无法完成请求后端代码抛出未捕获的异常如数据库连接失败
HTTP请求类型 GET 用途获取资源从服务器读取数据。 特点 安全且幂等。(幂等多次重复请求与单次请求效果相同)参数通过 URL 传递如 /users?id1。通常无请求体但技术上允许。 示例 GET /api/users/1 HTTP/1.1
Host: example.comPOST 用途提交资源向服务器发送数据可能创建新资源。 特点 非安全、非幂等非幂等多次请求可能产生不同结果。数据通过请求体传输如 JSON、表单。常用于创建新资源或触发复杂操作。 示例 POST /api/users HTTP/1.1
Content-Type: application/json{name: Alice, age: 25}PUT 用途全量更新资源替换目标资源的全部内容。 特点 幂等。需指定完整资源数据用于覆盖已有内容。若资源不存在可能创建新资源取决于实现。 示例 PUT /api/users/1 HTTP/1.1
Content-Type: application/json{name: Bob, age: 30}DELETE 用途删除资源。 特点 幂等。通常无请求体。 示例 DELETE /api/users/1 HTTP/1.1
Host: example.comHEAD 用途获取资源的元数据与 GET 类似但无响应体。 特点 安全且幂等。常用于检查资源是否存在或验证缓存。 示例 HEAD /api/users/1 HTTP/1.1
Host: example.comHTTP握手过程
HTTP 本身无握手过程其通信依赖 TCP 三次握手建立连接。 整个过程如下:
1.TCP三次握手
客户端 服务器| || ---- SYNseqx ---------- || || --- SYN-ACKseqy, ackx1-|| || ---- ACKacky1 ---------|| |步骤解释 SYN客户端发送同步报文携带初始序列号 seqx。 SYN-ACK服务器回应同步确认携带自己的序列号 seqy 和对客户端的确认号 ackx1。 ACK客户端确认服务器的响应连接建立。
2.HTTP请求/响应
TCP 连接建立后客户端直接发送 HTTP 请求
GET /index.html HTTP/1.1
Host: example.com服务器返回 HTTP 响应
HTTP/1.1 200 OK
Content-Type: text/htmlhtml.../html3.连接关闭
通信完成后通过四次挥手关闭连接
客户端 服务器| || ---- FIN ------------------- || ---- ACK ------------------- || || ---- FIN ------------------- || ---- ACK ------------------- || |HTTP连接
HTTP是基于 TCP 传输协议实现的客户端与服务端要进行 HTTP 通信前需要先建立 TCP 连接,然后客户端发送 HTTP 请求服务端收到后就返回响应。
短连接 这样的连接就是短连接一次连接只能请求一次资源。 长连接 HTTP 的 Keep-Alive 就是实现了这个功能可以使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答只要任意一端没有明确提出断开连接则保持 TCP 连接状态避免了连接建立和释放的开销这个方法称为 HTTP 长连接。 HTTP断点续传 断点续传允许客户端只请求资源的一部分而不是整个文件。这对于大文件下载非常有用特别是当下载中断时可以从中断的地方继续而不必重新开始 举个例子大文件下载中断后恢复的流程如下
假设文件总大小为2GB(2,147,483,648 字节)已经下载了500MB(即 524,288,000 字节)后中断了剩余1.5GB未下载。 客户端首次下载0~500MB 客户端未指定 Range 头部尝试完整下载 GET /large-video.mp4 HTTP/1.1
Host: example.com服务器响应 服务器返回完整文件若支持断点续传会包含 Accept-Ranges: bytes HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 2147483648
Content-Type: video/mp4[视频文件的前 524,288,000 字节...下载中途网络断开]客户端发送 HEAD 请求 确认服务器是否支持范围请求 HEAD /large-video.mp4 HTTP/1.1
Host: example.com服务器响应 返回 Accept-Ranges: bytes 表示支持 HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 2147483648
Content-Type: video/mp4
Last-Modified: Wed, 21 Oct 2023 00:00:00 GMT
ETag: abc123xyz客户端发起续传请求 通过 Range 头部指定从已下载位置继续请求 GET /large-video.mp4 HTTP/1.1
Host: example.com
Range: bytes524288000- # 请求 500MB 之后的所有数据
If-Range: abc123xyz # 使用 ETag 校验文件未修改Range: bytes524288000-表示请求从第 500MB 到文件末尾。 If-Range若文件未修改ETag 匹配服务器返回剩余部分若已修改返回完整文件。 服务器处理请求 文件未修改返回 206 Partial Content 和剩余数据 HTTP/1.1 206 Partial Content
Content-Range: bytes 524288000-2147483647/2147483648
Content-Length: 1623195648 # 剩余 1.5GB 的长度2147483648 - 5242880001623195648
Content-Type: video/mp4
ETag: abc123xyz[视频文件的 500MB ~ 2GB 数据]文件已修改返回 200 OK 和完整文件需重新下载。 客户端合并文件 客户端将已下载的 500MB 数据与续传的 1.5GB 数据按字节顺序拼接得到完整文件。
HTTPS
HTTP和 HTTPSHTTP Secure是 Web 通信的核心协议HTTPS 本质是 HTTP 的安全版本通过加密和身份验证保障数据传输的安全性。
HTTP为什么不安全
核心原因在于其明文传输、缺乏身份验证和完整性保护 明文传输 HTTP协议在传输过程中不加密数据所有内容如密码、银行卡号、聊天记录均以明文形式在网络中传输。 无身份验证 HTTP协议不验证服务器身份用户无法确认自己连接的是真实服务器还是攻击者的伪造站点。 数据无完整性保护 HTTP传输的数据无完整性校验机制攻击者可随意修改传输内容。
所以就需要用到HTTPS进行安全管理
那么HTTPS是如何保证安全性的呢
在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议使得报文能够加密传输。HTTPS 在 TCP 三次握手之后还需进行 SSL/TLS 的握手过程才可进入加密报文传输。HTTPS 协议需要向 CA证书权威机构申请数字证书来保证服务器的身份是可信的。
HTTPS握手过程
HTTPS 在 TCP 连接基础上增加了 TLS/SSL 握手用于协商加密参数、验证身份并生成会话密钥。
1.TCP 三次握手
与 HTTP 相同首先建立 TCP 连接。
2.TLS握手
客户端 服务器| || ---- Client Hello支持的加密套件等----- || || ---- Server Hello选定加密套件--------- || ---- Certificate服务器证书----------- || ---- Server Key Exchange可选--------- || ---- Server Hello Done ---------------- || || ---- Client Key Exchange预主密钥------ || ---- Change Cipher Spec准备加密------- || ---- Finished加密验证---------------- || || ---- Change Cipher Spec准备加密------- || ---- Finished加密验证---------------- || |第一次握手 客户端向服务器发起加密通信请求也就是 ClientHello 请求。 TLS 版本支持的 TLS 版本。随机数132 字节的随机数用于生成会话密钥。加密套件列表支持的加密算法组合 第二次握手 服务器收到客户端请求后向客户端发出响应也就是 SeverHello。 TLS 版本双方协商后的版本。随机数232 字节的随机数也用于生成会话密钥。选定的加密套件从客户端列表中选择的加密套件证书链服务器公钥证书由 CA 签发 第三次握手 Client Key Exchange。 客户端收到服务器的回应之后首先通过浏览器或者操作系统中的 CA 公钥确认服务器的数字证书的真实性。 如果证书没有问题客户端会从数字证书中取出服务器的公钥然后使用它加密报文向服务器发送如下信息 随机数3该随机数会被服务器公钥加密。加密通信算法改变通知通知服务器后续消息将加密。客户端握手结束通知。 密钥生成过程 客户端使用3个随机数生成 主密钥Master Secret。主密钥进一步生成 会话密钥Session Key 第四次握手 服务器 → 客户端 服务器确认加密参数 Change Cipher Spec通知客户端后续消息加密。Finished发送加密的验证消息确认握手完整性。
3.加密的HTTP通信
握手完成后所有 HTTP 数据通过会话密钥加密传输
客户端 服务器| || ---- Encrypted HTTP Request ----------- || ---- Encrypted HTTP Response ---------- || |4.连接关闭
先关闭 TLS 连接再关闭 TCP 连接。 不断学习中结合小林Coding整理了些笔记感谢大家的观看W