-
URI:Uniform Resource Identifier
-
统一资源标识符,用来唯一的标识一个资源
-
URL:Uniform Resource Locator
- 统一资源定位符,URL可以用来表示一个资源,而且还指明了如何定位这个资源
-
URN:Uniform Resource Name
- 统一资源命名,通过名字来表示资源
URL肯定是一个URI,URI并不一定是URL,也有可能是URN
-
http默认端口号80、https默认端口号443、MySQL默认端口号3306
-
C/S架构
- Client/Sever
- 界面与操作丰富、安全性高、响应速度快
- 通常用于局域网,需要安装特定应用程序或使用特定硬件、维护成本高
-
B/S架构
- Browser/Server
- 无需安装客户端程序与特定硬件
- 跨浏览器兼容性差、功能性相对较弱、设计成本高、安全性弱、交互性弱
-
DNS:Domain Name Server(域名服务器)
- 把域名转换成对应的ip地址
- 一个域名对应一个IP地址,但一个IP地址可以对应多个域名
- gTLD:generic Top-Level DNS Server 顶级域名服务器 | 解析.com、.net
-
IP
- Internet Protocol Address
- 互联网协议地址、IP地址
- 分配给用户上网使用的互联网协议
- IPv4 | 192.168.0.1(长度32位(四个字节),十进制表示)
- IPv6 | 地址空间更大(8组(128位),十六进制 0-9-A-F)
- 更高的安全性
- 路由表更小
- 自动配置支持
-
TCP
- Transmission Control Protocol 传输控制协议
- 三次握手
- 面向连接(收发数据前,必须建立可靠的链接)
- **优点:**稳定、重传机制、拥塞控制机制、断开链接
- **缺点:**速度慢、效率低、占用资源、容易被攻击(三次握手->DOS、DDOS攻击)
- TCP/IP协议组:提供点对点的连接机制,制定了数据封装、定址、传输、路由、数据接受的标准
-
UDP
- User Data Protocol 用户数据报协议
- 面向无连接(不可靠的协议,无状态传输机制)
- 无连接信息发送机制
- 无需确保通讯质量且要求速度快、无需确保信息完整
- 消息收发、语音通话、直播
- **优点:**安全、快速、漏洞少(UDP flood攻击)
- **缺点:**不可靠、不稳定、容易丢包
- 只要目的源地址、端口号、发送方地址、发送方端口号确定,则可以直接发送信息报文,但不能保证一定能收到或收到完整的数据
-
HTTP
- Hyper Text Transfer Protocol 超文本传输协议
- 定义:客户端和服务器端请求和应答的标准,用于从WEB服务器传输超文本到本地浏览器的传输协议
- HTTP请求:按照协议规则先向WEB服务器发送的超文本传输到本地浏览器的请求
- HTTP是不安全的(监听和中间人攻击等手段,获取网站账户信息和敏感信息)
- HTTP协议的传输内容都是明文,直接在TCP连接上运行,客户端和服务器都无法验证对方身份
-
HTTPS
- Hyper Text Transfer Protocol Secure 超文本传输安全协议
- HTTP的安全版(安全基础是SSL/TLS)
- SSL:Secure Sockets Layer 安全套接层
- TLS:Transport Layer Security 传输层安全
- 为网络通信提供安全及数据完整性的一种安全协议,对网络连接进行加密
- HTTPS可防止被攻击
- HTTPS协议的传输内容都是被SSL/TLS加密,且运行在SSL/TLS上,SSL/TLS运行在TCP连接上,所以数据传输是安全的
-
建立TCP连接
- 标志位:数据包
- SYN:Synchronize Sequence Numbers 同步序列编号
- ACK:Acknowledgement 确认字符
- 状态
- LISTEN:侦听TCP端口的连接请求
- SYN-SENT:在发送连接请求后等待匹配的连接请求
- SYN-RECEIVED:在收到和发送一个请求后等待对连接请求的确认
- ESTABLISHED:代表一个打开的连接,数据可以传送给用户
- **第一次握手:**客户端向服务器发送SYN标志位(序号是J),并进入SYN_SEND状态(等待服务器确认状态)
- **第二次握手:**服务器收到来自客户端的SYNJ,服务端会确认该数据包已收到并发送ACK标志位(序号是J+1)和SYN标志位(序号是K),服务器进入SYN_RECV(请求接收并等待客户端确认状态)
- **第三次握手:**客户端进入连接建立状态后,向服务器发送ACK标志位(序号是K+1)确认客户端已收到建立连接确认,服务器收到ACK标志位后,服务端进入连接已建立状态
-
HTTP报文
- HTTP基于TCP/IP通信协议来传递数据
- HTTP基于客户端/服务端(C/S)架构模型
- 通过一个可靠的连接来交换信息,是一个无状态的请求/响应协议
- 限制每次连接只能处理一个请求,服务端处理完客户的请求,并受到客户的应答后,即断开连接,节省传输时间
- 客户端以及服务器制定使用合适的MIME-type内容类型
- Multipurpose Internet Mail Extensions type 多用途互联网邮件扩展类型
-
HTTP报文-请求方式
- put:上传资源,form表单不支持、提交即存储的原则(无验证机制,安全漏洞)、需配置服务器支持put方式转发给后端操作
- delelte:删除资源,form表单不支持、提交即删除的原则(无验证机制,安全漏洞)、需配置服务器支持put方式转发给后端操作
- post:修改资源
- get:修改资源
- 更好语义化请求目的
-
POST请求
- POST更安全,不会作为url的一部分,不会被缓存,不保存在服务器日志喝浏览器记录中
- POST发送的数据量更大,(GET有url长度限制)、
- POST能发送更多的数据类型(各种类型的文件)、GET只能发送ASCII字符
- POST比GET速度慢
- POST请求包含更多请求头
- POST接收数据之前会先将请求头发送给服务器确认,然后发送数据
- POST过程
- 第三次握手,浏览器确认并发送post请求头 request header
- 服务器返回状态码100后,continue响应
- 浏览器开始发送Form Data数据
- 服务器返回200 OK响应
- GET过程
- 第三次握手,浏览器确认并发送请求头和数据
- 服务器返回200 OK响应
- GET会进行数据缓存,POST不会
- POST不能进行管道化传输
-
HTTP报文-状态码
- 1xx:信息,服务器收到请求,需要请求者继续执行操作
- 2xx:成功,操作被成功接收并处理
- 3xx:重定向,需要进一步的操作以完成请求
- 4xx:客户端错误,请求包含语法错误或无法完成请求
- 5xx:服务器错误,服务器在处理请求的过程中发生了错误
-
浏览器缓存
- 减少网络带宽的消耗
- 降低服务器压力
- 减少网络延迟
- Pragma:no-cache(忽略缓存)
- Cache-Control 缓存控制
- no-cache:指示浏览器忽略资源缓存副本,强制到服务器获取资源(浏览器依然缓存)
- no-store:强制缓存在任何情况下都不要保留任何副本
- max-age=31536000:指示缓存副本的有效时长,从请求时间开始到过期时间之间的秒数
- public:表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存
- private:表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)
- Expires:启用缓存和定义缓存时间,告诉浏览器资源缓存过期时间(格林威治时间 东加西减)
-
Connection:keep-alive 长连接开启 | close
-
Content-Length:用于描述HTTP消息实体的传输长度
-
Referer:来源域名
-
关闭TCP连接
- 客户端发送连接关闭报文(此时已停止发送数据)(第一次挥手)
- 报文首部:FIN=1(序列号seq=u)
- 此刻:客户端进入终止等待(FIN-WAIT-1)状态
- 服务器收到连接关闭报文,并发送确认报文(第二次挥手)
- 报文首部:ACK=1 ack = u+1(确认FIN)(序列号seq=v)
- 此刻:服务端进入关闭等待(CLOSE-WAIT)状态
- 连接半关闭状态,客户端没有数据要发送,但服务器如果还要发送数据,客户端依然需要接收
- 客户端收到服务器的确认请求后,客户端进入终止等待2(FIN-WAIT-2)状态
- 服务器在这期间还要确认客户端所需要的数据是否真的发送完毕了,如果还没发送完毕,则继续发送数据
- 服务器确认数据已发送完毕后,向客户端发送连接关闭报文(第三次挥手),服务器进入最后确认(LAST-ACK)状态
- 报文首部:FIN=1 ACK=1 ack = u+1(确认上一次数据包)序列号seq=w
- 客户端收到服务器的连接关闭报文后,发出接收确认报文(第四次挥手),客户端进入时间等待(TIME-WAIT)状态
- 报文首部:ACK=1 ack = w+1(确认上一次数据包)序列号seq = u+1
- 服务端收到客户端发出的确认,立即进入TCP关闭状态(CLOSE),TCP连接结束(TCP关闭,服务端要比客户端早一些)
- TIME-WAIT时长:2MSL Maximum Segment Lifetime 最大报文生存时间
- 客户端发送连接关闭报文(此时已停止发送数据)(第一次挥手)
-
同源策略
- 相同的协议&相同的域名&相同的端口