OSI 与 TCP/IP 模型
什么是OSI
英文的全名称作(Open System Interconnection Model)。译为开放式系统互联模型
OSI七层网络模型
- Application 应用层
- Presentation 表示层
- Session 会话层
- Transport 传输层
- Network 网络层
- Data Link 数据链路层
- Physical 物理层
TCP/IP 四层模型
- Application 应用层
- Transport Layer 传输层
- Internet Layer 网络层
- Data Link 数据链路层
数据链路层
包含逻辑连接控制层(LLC) 和 媒体访问控制层(MAC)
- 逻辑连接控制层(LLC):
- 媒体访问控制层(MAC):通过共享的传输介质,将数据从一个网络接口卡(NIC)移动到另一个。
作用:
- 处理比特传输发生的错误。
- 确保数据流的传输速度不会使发送、接受设备不堪重负。
- 允许将数据传输到网络层的第3层,并在其中进行寻址和路由。
Frame帧的传输
Flag:
比特填充的首尾标志法
Address:
Control Field 控制位标识:
流控方法
Stop-and-wait Flow Control(停止等待流控)
从起点发送Frame(帧)到终点,如果收到了就返回一个Ack,起点会等待收到上一个Frame的ack才回去发送下一个Frame。
sliding-Window Flow Controller(滑动窗口流控)
Error Control (纠错控制)
Stop and Wait ARQ
基于停止等待流控的算法,每次发送一个帧并等待确认,如果未收到确认或收到错误确认,则重传该Frame(帧)。
Go-Back-N ARQ
发送方可以连续发送多个Frame(帧),但接收方发现错误后会要求重传错误帧及其之后的所有帧。这种方法比停止等待更有效,但在错误率高时重传代价较大。
Seletive-Reject ARQ
发送方可以连续发送多个帧,接收方仅请求重传出错的帧,而不是所有后续帧。这种方法比Go-Back-N更高效,因为只需重传出错的帧。
错误的检验方式
- 奇偶校验
- 循环冗余校验
网络层
什么是网络?
一组两个或更多连接的计算机设备
网络层的主要功能
- 路由:当数据包到达路由器的输入链路时,路由器会将数据包移动到路由器的输出链路。
- 逻辑寻址:数据链路层实现物理寻址,网络层实现逻辑寻址。逻辑寻址用于区分原系统和目标系统。
- 互联网络:提供了不同类型之间的逻辑链接。
- 分段:分段是将数据包分解为在网络传输中传播最小的单个数据单元的过程。.
网络层都有什么协议?
- IP(Internet Protocol)
- IPsec(Internet Protocol Security)
- ICMP:错误报告型
- IGMP
- GRE
IP协议
不是IP地址,而是一种协议。作用于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址和MAC地址(Media Access Control Address),由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。
IP的组成
- IP由句点分隔的四组数字组成
- IP地址被分配给网络上设备的网络接口卡,并且IP被分为两部分。具有网络部分和主机部分(地址)。
传输层
传输层是做什么的
提供了端对端的服务,进程之间的通信
端到端:网络连接,source与,其中包含多个点对点
点到点:物理拓扑
TCP是什么?
全称是(Transmission Control Protocol)它是一种通信协议,通过该协议,数据可以在系统之间传输。数据会以数据包的形式传输。包括错误检查、保证传递并保留数据包的顺序。
如何保证数据的可靠性
- 对数据包进行编号。
- 收件人将响应发送给发送人,确保收件人成功发送。
创建一个Session,通过Session来传输数据,传输数据前通过三次握手确保稳定的连接。
三次握手
- Client:发送 Syn(表示发送连接请求)
- Server:Syn-ACK(表示收到了连接请求,并发起连接请求)
- Client:ACK(表示收到了连接请求,即将建立连接)
三次握手的目的
- 确认双方都有接受和发送数据的能力。
- 同步双方的序列号,以便后续的数据传输可以按序进行。
四次挥手
- Client:发送FIN(表示完成了数据发送,想要关闭客户端到服务器的数据传输)
- Server:发送ACK(表示确认收到连接中断,但并未关闭)
- Server:发送FIN(表示服务端完成了数据的处理,准备关闭连接)
- Client:发送ACK(表示收到服务端中断请求,并作出响应)
为什么需要 “四次” 挥手呢?
确保了连接的双向关闭以及数据传输的完整性。
UDP(User Data Protocol,用户数据报协议)
非连接的协议,直接传输,丢弃了错误检查的功能,追求的是速度,适合实时性较高的场景。
TCP与UDP的区别
- 有连接、无连接
- 对于系统资源的需求(TCP高于UDP)
- 可靠性(TCP可靠、UDP不可靠)
应用层
会话层
提供服务使应用建立和维持会话,并能使会话同步。
端口的范围 0-65535
- 公认端口(Well-Known):0-1023
- 注册端口(Registered):1024-49151
- 临时端口(Ephemeral):49152-65535
HTTP的工作原理
HTTP协议作用在Web交互,浏览器作为HTTP的客户端会通过URL向HTTP的服务端,默认端口80,基于TCP协议的,所以传输可靠。
HTTP特点
- 无连接:每个请求都是独立的,请求处理完成会关闭。
- 无状态:对事务处理没有记忆能力,意味着如果后续需要前面的信息,则必须要重传。
- 无媒体独立的:只要客户端、服务端知道如何处理数据内容,任何数据类型都可以通过HTTP发送,客户端和服务器可以使用指定的MIME-type内容类型。
HTTP的缺点
主要是数据的明文传输和消息完整性的检测。
HTTPS工作原理
以安全为目标的HTTP通道,在HTTP的基础上通过加密协议SSL保证了传输过程的安全性。
- 数据保密性:保证数据内容在传输的过程中不会被第三方查看。
- 数据完整性:及时的发现被第三方篡改的传输内容。
- 身份校验安全性:保证数据到达用户期望的位置。
HTTPS的传输过程是怎样的?
客户端发起 HTTPS请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
使用HTTPS会被抓包吗?
会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
HTTP的请求码
- 100 -信息,服务器收到请求,需要请求者继续执行操作
- 200 - 请求成功,操作被成功接收并处理
- 300 - 重定向,需要进一步的操作以完成请求
- 400 - 客户端错误,请求包含语法错误或无法完成请求
- 500 - 服务器错误,服务器在处理请求的过程中发生了错误
网络模型了解吗?
每层的协议了解吗?
- 应用层:网络请求协议HTTP、远程登陆协议SSH、文件传输协议FTP、电子邮件协议E-mail
- 传输层:TCP、UDP
- 网络层:IP协议(帮助区分不同的计算机是否处于一个子网络,也就是网络地址)
TCP的三次握手、四次挥手
三次握手(状态的变化和流程)
四次挥手(状态的变化、流程)
四次挥手的目的
- 确保双方的数据都已经传输完毕
- 双方都确认连接的终止
- 释放双方的资源