网络层次划分
- OSI 7层模型
物理层-数据链路层-网络层-传输层-会话层-表示层-应用层 - TCP/IP 5层模型
物理层-数据链路层-网络层-传输层-应用层 - TCP/IP 4层模型
网络接口层-网络层-传输层-应用层
OSI 7层模型
- 物理层
- 为上层协议提供了一个传输数据的可靠物理媒体。简单来说,物理层确保原始数据可在物理媒体上传输
- 重要设备:中继器(放大器),集线器
- 数据链路层
- 数据链路层为网络层提供可靠的数据传输(物流地址寻址、数据成帧、流量控制、数据检错/重发等)
- 基本数据单位为'帧'
- 主要协议:以太网协议
- 重要设备:网桥,交换机
- 网络层
- 负责对子网间的数据包进行路由选择。还可以实现拥塞控制、网际互联等功能
- 基本数据单位为IP数据报
- 主要协议:
- IP协议(Internet Protocol,因特网互联协议)
- ICMP协议(Internet Control Message Protocol,因特网控制报文协议)
- ARP协议(Address Resolution Protocol,地址解析协议)
- RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)
- 重要设备:路由器
- 传输层
- 传输层负责将上层数据分段,并提供端到端的可靠的或不可靠的传输,以及端到端的差错控制和流程控制
- 主要协议:
- TCP协议(Transmission Control Protocol,传输控制协议)
- UDP协议(User Datagram Protocol,用户数据报协议)
- 重要设备:网关
- 会话层
- 负责建立、管理、终止进程之间的会话,利用数据埋点来实现数据同步
- 表示层
- 对上层数据或信息进行转换(加密/压缩/格式转换等)以保证主机应用层信息可被另一个主机应用程序理解。
- 应用层
- 为操作系统或网络应用程序提供访问网络服务的接口
- 数据传输基本单位为'报文'
- 主要协议:
- FTP(文件传送协议)
- Telnet(远程登录协议)
- DNS(域名解析协议)
- SMTP(邮件传送协议)
- POP3协议(邮局协议)
- HTTP协议(Hyper Text Transfer Protocol)
IP地址
- 网络地址
IP地址由网络号(包括子网号)和主机号组成,主机号全为0时代表整个网络 - 广播地址
- 通常称为直接广播地址,以区分受限广播地址(255.255.255.255)
- 主机号全为1,当向某个网络的广播地址发送消息时,此网络中所有主机都能接收到该广播消息
- 组播地址
- D类,以1110开头,范围在224.0.0.0 ~ 239.255.255.255的地址,一对多通信
- A类地址以0开头,B类地址以10开头,C类地址以110开头,D类地址以1110开头,E类地址以1111开头
- 255.255.255.255
- 受限的广播地址,只能用于本地网络,路由器不会转发以其为目的地址的分组。而一般广播地址(直接广播地址)即可在本地广播,也可跨网段广播
- 0.0.0.0
- 常用于寻找自己的IP
- 例如在RARP协议中,未知IP主机想要知道自己IP地址,就以255.255.255.255为目的地址,向本地范围服务器发送IP请求分组
- 回环地址
- 127.0.0.0/8被用作回环地址,用来表示本机地址,常用于对本机的测试,用的最多的是127.0.0.1
- 子网掩码和网络划分
- 随着互连网应用的不断扩大,能提供的主机地址也越来越稀缺。通过对主机号的高位部分取作为子网号,在网络分段情况下有效地利用IP地址。
- 子网掩码是标志两个IP地址是否同属于一个子网的,也是32位二进制地址,其每一个为1代表该位是网络位,为0代表主机位。
- 在计算子网掩码时,我们要注意IP地址中的保留地址,即" 0"地址和广播地址,一般是不能被计算在内的。
- B类地址子网掩码为255.255.0.0,C类地址子网掩码为255.255.255.0,依此类推。
- 注意:根据每个网络的主机数量进行子网地址的规划和计算子网掩码时,需要加上网络连接时所需的网关地址,以及子网的网络地址和广播地址。【实际主机数+3】
ARP/RARP协议
- 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
流程:- 主机A根据路由表,确定访问主机B的IP(192.168.1.2),然后主机A检查本机ARP缓存中是否有主机B的IP对应的MAC地址,有则直接访问,无则下一步
- 主机A将询问IP(192.168.1.2)对应的MAC地址的ARP请求帧广播到本地网络所有主机,源主机A的IP和MAC地址都包含在ARP请求中。
- 本地网络的每台主机收到此ARP请求后,检查自己是否与该IP匹配。不匹配则丢弃ARP请求,主机B匹配则将A的IP和MAC地址映射添加到本机ARP缓存,并将包含自己MAC地址的ARP回复消息发送给主机A
- 主机A收到主机B的ARP回复消息,更新B的IP和MAC映射到本机ARP缓存(本机缓存是有有效期的),MAC地址确认后便可与主机B通信了
- 逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址
流程:- 主机A发送包含自己MAC地址的RARP本地广播请求
- 本地主机接收后,匹配自己的RARP列表,找到A的MAC地址对应的IP
- 如果存在,则给主机A回复包含A的IP的RARP响应
- 如果不存在,则不作响应
路由选择协议
- RIP协议:底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
- OSPF协议:Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。
TCP/IP协议
- 概念:
- TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
- TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
- TCP报文首部格式
- TCP协议的3次握手
- TCP协议的4次挥手
UDP协议
- 概念:
- UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
- 报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度、校验值
- 常见协议:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP
TCP和UDP的区别
1.tcp是面向连接的传输控制协议,udp是不需要连接的
2.tcp是一对一的通讯,udp是广播形式
3.tcp安全、可靠、数据正确且完整,udp不稳定会丢包
4.tcp占用系统资源较多,udp更高效、占用资源少
DNS
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单地理解为将URL转换为IP地址。
NAT协议
- 概念:NAT网络地址转换(Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。
- 优点:解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
DHCP协议
DHCP动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
Socket
- 概念
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。它把复杂的TCP/IP协议族隐藏在Socket接口后面,Socket会组织用户数据,以符合指定的协议。 - 工作原理
HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准
请求方式
- get - 用于从指定资源请求数据
- post - 用于将数据发送到服务器来创建/更新资源
- delete - 删除指定的资源
- head - HEAD 与 GET 几乎相同,但没有响应主体。【HEAD 请求对于在实际发出 GET 请求之前(例如在下载大文件或响应正文之前)检查 GET 请求将返回的内容很有用。】
- put - 用于将数据发送到服务器来创建/更新资源。与POST的区别-PUT请求是幂等的
- options - 描述目标资源的通信选项
POST和GET的区别
- get常用于获取服务器指定资源,post常用于新增或修改服务器指定资源
- get是把数据拼接在接口url后面,post多是将数据通过请求体传输
- get传输的数据有限(url最大长度2048),post传输的数据量理论上是没有限制的
- get数据暴露在url中-不安全,post数据隐藏在请求体-较安全
- get编码类型一般为form-urlencoded,post可用form-urlencoded,form-data,json,xml等
- cookie、session、token
背景:http协议是无状态的,每次访问都是独立的、全新的交互,故引入会话标识来记录和区分不同用户,减轻服务和会话开销。
sessionID: 是服务端为了区分不同访问用户,而生成的唯一标识。存储在服务服务端,也会返回给客户端用于后续访问。且随着对话结束会回收和销毁。
cockie: 是由服务端返回,客户端存储的包含sessionID和其他用户信息的数据,用于与服务短通讯时做身份验证。一般为k-v形式,包含name,value,domain(可访问域),path(cockie有效路径),maxAge(过期时间)
token: 访问令牌。一般用于用户频繁访问服务端场景,解决服务器反复校验用户名/密码问题。由客户端上传用户信息,服务端验证通过后返回token,客户端存储token并在后续交互过程直接使用token访问服务端。