网络层次划分

  • 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的区别

  1. get常用于获取服务器指定资源,post常用于新增或修改服务器指定资源
  2. get是把数据拼接在接口url后面,post多是将数据通过请求体传输
  3. get传输的数据有限(url最大长度2048),post传输的数据量理论上是没有限制的
  4. get数据暴露在url中-不安全,post数据隐藏在请求体-较安全
  5. 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访问服务端。