HTTP,HTTPS网络基础知识详解

OSI开放式互联参考模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP/IP协议

TCP简介

1.面向连接的,可靠的,基于字节流的传输层通信协议
2.将应用层的数据分流分割成报文段并发送给目标节点TCP层
3.数据包都有序号,对方收到则发送ACK确认,未收到则重传
4.使用检验和来检验数据在传输过程中是否有误

在这里插入图片描述

常用TCP Flags

 1. URG: 紧急指针标志,为1是表示紧急指针有效,为0则无效
 2. ACK: 确认号标志,为1是表示确认号有效:为0则报文中不含确认信息,忽略确认号字段
 3. PSH: push标志,为1是表示带有push数据,应尽快给应用程序,而不是在缓冲区排队
 4. RST: 重置连接标志
 5. SYN: 同步序号,用于建立连接过程
 6. FIN: finsh,用于释放连接

TPC三次握手

在这里插入图片描述

TCP采用四次挥手来释放连接,过程如下:
第一次握手:
建立连接时,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:
服务器收到SYN包,必须确认客户的SYN同时自己耶发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_SEND状态。
第三次握手:
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕 ,
客户端和服务器进入ESTABLISHED状态,完成三次握手。

为什么需要三次握手才能建立连接?

 1.为了初始化sequence number的初始值

TCP的四次挥手 — “挥手”是为了终止连接

在这里插入图片描述

过程如下:
第一次挥手:client发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态;
第二次挥手:server收到FIN后,发送一个ACKclient,确认序号为收到序号+1,server进入CLOSE_WAIT状态;
第三次挥手:server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态;
第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK给server,确认序号为收到序号+1,server进入CLOSE状态,完成四次挥手。

为什么会有TIME_WAIT状态?

1.确保有足够的时间让对方收到ACK包
2.避免新旧连接混淆

为什么需要四次挥手才能断开连接?

因为是全双工,发送方和接收方都需要FIN报文和ACK报文

Linux服务器出现大量CLOSE_WAIT状态的原因

对方关闭socket连接,我方忙于读或写,没有及时关闭连接。

解决方案
	检查代码,特别是释放资源的代码
	检查配置,特别是处理请求的线程配置

UDP简介

在这里插入图片描述

UDP特点

 1. 面向非连接
 2. 不维护连接状态,支持同时向多个客户端传输相同的消息
 3. 数据包报头只有8个字节额外开销较小
 4. 吞吐量只受限于数据生成速率,传输速率以及机器性能
 5. 尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表
 6. 面向报文,不对应用程序提交的报文信息进行拆分或者合并

TCP与UDP区别

 1. TCP面向连接 vs UDP无连接
 2. TCP可靠性,利用握手确认重传机制,UDP可能会丢失包
 3. TCP有序性,利用序列号保证消息包顺序交互,UDP无序
 4. TCP速度慢,因为要创建连接,保证消息的可靠性,有序性,还需要做其他额外事情等,UDP快
 5. TCP重量级,UDP轻量级(体现在源数据的大小,TCP:20字节,UDP:8字节)

HTTP简介

 1. 支持客户/服务器模式(通过URL向发送请求)
 2. 简单快速(只需要传送请求方法和路径,请求方法有get/post)
 3. 灵活(任意类型的数据对象)
 4. 无连接(限制每次连接只处理一个请求)
 5. 无状态(协议对于事务处理没有记忆)

TCP的滑动窗口

 1. RTT:发送一个数据包到收到对应的ACK所花费的时间
 2. RTO:重传时间间隔

TCP使用滑动窗口做流量控制与乱序重排

作用:
1. 保证TCP的可靠性
2. 保证TCP的流控特性

在这里插入图片描述

HTTP简介

超文本传输协议HTTP主要特点

 1. 支持客户/服务器模式(通过URL向发送请求)
 2. 简单快速(只需要传送请求方法和路径,请求方法有get/post)
 3. 灵活(任意类型的数据对象)
 4. 无连接(限制每次连接只处理一个请求)
 5. 无状态(协议对于事务处理没有记忆)

在这里插入图片描述
在这里插入图片描述

请求/响应的步骤

 1. 客户端连接到web服务器
 2. 发送HTTP请求
 3. 服务器接收请求并返回HTTP响应
 4. 释放连接TCP连接
 5. 客户端浏览器解析HTML内容

HTTP状态码

常见状态码:200400401404500503
五种可能的取值
 1. 1xx:指示信息,表示请求已接收,继续处理
 2. 2xx:成功,表示请求已被成功接收,理解,接受
 3. 3xx:重定向,要完成请求必须进行更进一步的操作
 4. 4xx:客户端的错误,请求有语法错误或请求无法实现
 5. 5xx:服务器端的错误,服务器未能实现合法的请求

在这里插入图片描述

GET请求/POST请求的区别

 1. HTTP报文层方面:GET将请求信息放在URL(长度有限制),POST放在报文体中(长度没有限制)
 2. 数据库层面:GET符合幂等性和安全性,POST不符合
 3. 幂等性:对数据库的一次操作或多次操作获得的结果是一致的
 4. 安全性:对数据库的操作没有改变数据库中的数据
 5. 其他层面:GET可以被缓存,被存储,而POST不行

Cookie简介

在这里插入图片描述

 1. 是由服务器发送客户端的特殊信息,以文本的形式存放在客户端
 2. 客户端再次请求的时候,会把Cookie回发
 3. 服务器接收到后,会解析Cookie生成与客户端相对应的内容

Session简介

在这里插入图片描述

 1. 服务器端的机制,在服务器上保存的 信息
 2. 解析客户端请求并操作session id,按需保存状态信息

Cookie和Session区别

 1. Cookie数据存放在客户的浏览器上,Session数据放在服务器上
 2. Session相对于Cookie更安全
 3. 若考虑减轻服务器负担,应当使用Cookie

HTTP与HTTPS的区别

在这里插入图片描述

SSL(Security Sockets Layer 安全套接层)

 1. 为网络通信提供安全及数据完整性的一种安全协议
 2. 是操作系统对外的API,SSL3.0后更名为TLS
 3. 采用身份验证和数据加密保证网络通信的安全和数据的完整性

加密的方式

 1. 对称加密:加密和解密都使用同一个密钥
 2. 非对称加密:加密使用的密钥和解密使用的密钥是不相同的
 3. 哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆
 4. 数字签名:证明某个消息或者文件是某人发出/认同的

HTTPS数据传输流程

 1. 浏览器将支持的加密算法信息发送信息发送给服务器
 2. 服务器选择一套浏览器支持的加密算法,以证书的形式回发给浏览器
 3. 浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
 4. 服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
 5. 浏览器解密响应消息,并对消息进行验真,之后进行加密交互数据

HTTP与HTTPS的区别

 1. HTTPS需要到CA申请证书,HTTP不需要
 2. HTTPS密文传输,HTTP明文传输
 3. 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
 4. HTTPS =	HTTP+加密+认证+完整性保护,比HTTP安全

Socket简介

在这里插入图片描述

Socket通信流程

在这里插入图片描述

PS: 以上都是小编自我总结,如有不对的地方,请各位大佬指教,谢谢,勿喜勿喷!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值