目录
<1>. 背景
- 正常来说,我们不需要关心网络知识,因为编程的时候,是不需要我们编写socket这些东西的,并且底层服务已经很好的处理了数据包的解析,所以,网络方面的东西貌似是不需要我们关心的。但是如果出现了问题,没法判断网络为什么变慢,是网络的原因还是别的原因,数据包有没有丢失,为什么会造成大量的连接丢失等等,因此还是很有必要学习网络知识,以备不时之需。
<2>. 网络七层模型
<3>. TCP的三次握手
- TCP Flags
- URG :紧急指针标志
- ACK :确认序号标志
- PSH :push 标志
- RST :重置连接标志
- SYN :同步序号,用于建立连接过程
- FIN :finish标志,用于释放连接
<4>. TCP的四次握手
为什么会有TIME-WAIT :
- 确保有足够的时间让对方收到ACK包
- 避免新旧连接混淆
<5>. UDP简介
- 面向非连接
- 不维护连接状态,支持同时向多个客户端传输相同的消息
<6>. TCP和UDP的区别
- 面向连接VS无连接
- 可靠性
- 有序性
- 速度
- 量级,TCP 20个字节,UDP 8个字节
<7>.RTT与RTO的概念
- RTT:发送一个数据包到收到对应的ACK,所话费的时间
- RTO:重传时间间隔
<8>.TCP滑动窗口
- TCP使用滑动窗口做流量控制与乱序重排
<9>.HTTP
- 简介
- 支持客户/服务器模式
- 无连接:是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
- 无状态:是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态
- 发送请求的流程
- DNS解析,解析服务器域名所对应的ip地址,浏览器缓存,系统缓存 ,路由器缓存,ips服务器缓存,域名服务器缓存 ,顶级域名服务器缓存
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- HTTP状态码
- GET请求和POST请求的区别
- Http报文层面:GET将请求信息放在URL,POST放在报文体中
- 数据库层面:GET符合幂等性和安全性,POST不符合
- 其他层面:GET可以被缓存,被存储,而POST不行
- Cookie 和 Session的区别
- Cookie简介
- 是由服务器发送给客户端的特殊信息,以文本的形式放在客户端
- 客户端再次请求的时候,会把Cookie回发
- 服务器接收后,会解析Cookie生成与客户端相对应的内容
- Cookie简介
- Session实现方式
<10>.HTTP和HTTPS区别
- SSL(Security Sockets Layer,安全套接层)
- 为网络通信提供安全及数据完整性的一种安全协议
- 是操作系统对外的API,SSL3.0后更名为TSL
- 采用身份验证和数据加密保证网络通信的安全和数据的完整性
- 加密方式
- 对称加密:加密和解密都使用同一个秘钥
- 非对称加密:加密和解密的秘钥是不相同
- 哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆
- 数字签名:证明某个消息或者文件是某人发出/认同的
- HTTPS数据传输流程
- 浏览器将支持的加密算法信息发送给服务器
- 服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
- 浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
- 服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
- 浏览器解密响应信息,并对消息进行验证,之后进行加密交互数据
- 区别
- HTTPS需要到CA申请证书,HTTP不需要
- HTTPS密文传输,HTTP明文传输
- 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
- HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全
<11>.Socket
- 简介
- Socket是对TCP/IP协议的抽象,是操作系统对外开发的接口
- Socket通信流程