计算机网络基础复习
1, OSI七层模型与TCP/IP五层模型
-
OSI:
参考模型 对应内容 主要作用 对应实体以及相应协议 应用层 程序 针对特定应用的协议 表示层 字符或字 设备固有数据格式和网络标准数据格式的转换 会话层 通信管理,负责建立和新开通网络连接 传输层 段/消息 芙蓉里两罐节点之间的数据传输 网络层 包 地址管理与 路由选择 数据链路层 帧 互联设备之间的传送与是被数据帧 物理层 比特流 -
TCP/IP为四层模型
应用层:报文
传输层:传输层协议
网际层:数据报
网络接口层:网络帧
2, 分包、路由与协议
-
SMTP邮件协议 TELNET/SSH远程登录协议
-
FTP文件传输协议 SNMP网络管理协议
-
分包结构
- 聚合网络地址:取网络地址的最大相同部分
- TTL的最大值是255,TTL的一个推荐值是64;只有经过路由器才减1,集线器和交换机不会。
3, TCP与UDP
TCP面向可靠连接,检验和、序列号+确认应答、重发控制、连接管理以及窗口控制实现
- 检验和:发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化
- 序列号与确认应答:累计确认+seq,TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层
- 重发控制: 定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- 连接管理:三次握手与四次挥手
- 窗口控制:使用滑动窗口提高速度,减少阻塞
TCP 拥塞控制解决方法:慢启动、拥塞避免、快重传、快恢复
- 慢启动:一开始网络注入的报文较少
- 拥塞避免:该阶段拥塞窗口控制为线性增长
- 快重传:发送方尽快进行快速重传,不是等到计数器超时以后再进行,收到三个重复确认
- 快恢复:将慢开始门限与窗口降低一半,执行拥塞避免算法
TCP 粘包现象
-
原因:1. 数据发送时候,由于nagle算法会将大的部分拼接成小的部分,一次发送给服务器端,从而造成粘包
2. 发送内容大的时候,服务器的rec方法中buffer_size比较小,不能一次性接受完,因此下一次请求到达的时候,接受的内容依然是上一次没有完全接收完的,因此会出现粘包
-
解决思路:就是需要发送端在发送之前把字节流的数据大小告知接受端
TCP三次握手与四次挥手的过程
-
三次的原因:SYN与ACK的确认 TCP属于双工通讯
-
为啥挥手是四次?
服务器FIN以后可能还会存在接受数据的情况,服务端通常需要等待完成数据的发送和处理,所以服务端的
ACK
和FIN
一般都会分开发送,从而比三次握手导致多了一次。
4, URL与DNS解析过程
- URL解析:将URL分解为域名、端口以及请求资源
- DNS查询:浏览器缓存,本地hosts,本地DNS解析器缓存,本地DNS服务器(ISP),根DNS服务器
5, HTTP协议
- HTTP1.0与HTTP1.1
- HTTP2.0特性
- 多路复用:允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息
- 二进制分帧
- 首部压缩
- 服务器推送
- HTTPS 配合加密SSL/TSL非对称加密算法,默认端口号是443
6,加密算法与非对称加密算法
- 数字签名:定义两种互补的运算,一个用于的签名,一个用于验证,分别由发送者持有能够代表自己身份的私钥以及接受者的公钥
- 常见的对称加密算法DES,3DES、AES等,常见的非对称加密算法RSA、DSA 散列算法SHA-1、MD5等
- 对称加密算法:明文+秘钥 = 秘文 秘文-逆算法
- 非对称加密算法:又称公开秘钥加密算法,包括公钥与私钥
- 使用公钥进行加密,必须使用私钥解密
- 使用私钥进行加密,必须使用公钥解密
- SSL里面对称加密与非对称加密
- 证书:一种在互联网上面验证通信实体身份的方式!主要包括:签发证书的机构、加密算法、hash算法、公钥与证书到期时间
- 为了防止证书颁发的过程中被人修改,使用了数字签名
- 所以最终传输的内包括正文+数字签名+数字证书
- 证书的有效性判断过程
- SSL 使用加密的过程:相当于握手的过程使用的非对称加密算法,连接建立以后使用的是对称加密的方法 同时兼顾效率与安全
- 客户端A给出自己支持的SSL版本+一个随机数+自己支持的加密方式
- 服务端B接受到信息后确认加密方式+自己的安全证书+一个随机数
- A确认证书的有效性,生成一个随机数,将该随机数利用B的数字证书公钥加密以后发送给A
- 服务端用B的私钥解密这个随机数
- AB通过使用前三个随机数生成一个对话秘钥用来接下来的通信
7,HTTP的请求
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 发送请求获取服务器上的资源 |
2 | POST | 像服务器提交资源让服务器处理 |
3 | PUT | |
4 | HEAD | |
5 | DELETE | |
6 | CONNECT | |
7 | OPTIONS | |
8 | TRACE |
GET与POST的区别
本质:
使用GET方法,浏览器会将HEADER与DATA一起发送过去,服务器返回200
使用POST方法,HEADER与DATA分开发送,中间有个服务器返回100的过程,完成以后返回200
因此:
- 使用回退:以后POST以后数据重新提交
- 缓存:POST不可以
- 数据类型:GET - URL 里面 POST - request body
- 可见性:GET可见 POST不可见
HTTP状态码
分类 | 分类描述 |
---|---|
1 | 信息,服务器接收到请求,需要请求者继续执行操作 |
2 | 成功,操作成功被处理 |
3 | 重定向,需要进一步操作以完成请求 |
4 | 客户端错误 |
5 | 服务器错误 |
常见的响应码
8,重定向与转发的区别
- 请求转发:A向B请求,B完成不了,B转发至C之后的返回A。过程中A只进行一次请求,对于完成的过程不关心,只等待最终的结果
- 重定向:A向B请求,B完成不了,B向A推荐C可以完成,A找C完成
不同点:
- 浏览器地址显示不同(表层
- 请求转发只显示第一次的地址
- 重定向显示的新的地址
- 组件之间可以共享的信息不同(本质
- 请求转发过程中,web容器只建立一个request与response对象,请求之间的始终共享这两个对象,因此过程中可以访问之前请求的参数与属性
- 重定向,浏览器每次发送一个请求,web容器需要重新创建request与response对象,请求之间的信息不能共享
- 实现方式不同
- 请求转发:
- 重定向:
- 知情人不同
- 请求转发的过程只有web服务器知道,客户端只是等待结果
- 重定向的过程的服务器与客户端都清楚
9,cookie与seesion的区别
- cookie数据在用户的浏览器上,session数据在服务器上
- cookie放在本地因此不安全
- cookie的时间可以设置cookie过期 session可以直接销毁对话
- 性能
- cookie的数据类型少,大小有限制;session对象没有数据量的限制
- 生命周期:cookie有预设的生命周期,session生命周期是浏览器打开到结束