网络协议

ARP 与 RARP 协议

在传输一个 IP 数据报的时候,确定了源 IP 地址和目标 IP 地址后,就会通过主机「路由表」确定 IP 数据包下一跳。然而,网络层的下一层是数据链路层,所以我们还要知道「下一跳」的 MAC 地址。由于主机的路由表中可以找到下一跳的 IP 地址,所以可以通过 ARP 协议,求得下一跳的 MAC 地址。ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的。

  1. 主机会通过广播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址。

  2. 当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包里的内容,如果 ARP 请求包中的目标 IP 地址与自己的 IP 地址一致,那么这个设备就将自己的 MAC 地址塞入 ARP 响应包返回给主机。 ARP 协议是已知 IP 地址求 MAC 地址,那 RARP 协议正好相反,它是已知 MAC 地址求 IP 地址。例如将打印机服务器等小型嵌入式设备接入到网络时就经常会用得到。 RARP

DNS 域名解析

DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。DNS 协议运行在 UDP 协议之上,使用 53 端口。 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。在域名中,越靠右的位置表示其层级越高。 域名的层级关系类似一个树状结构:根 DNS 服务器–顶级域 DNS 服务器(com)–权威 DNS 服务器(server.com) 根域名服务器的 IP 地址通常由 DNS 软件、DNS 递归解析器或操作系统中的默认 DNS 配置指定。 DNS 域名解析的过程

浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts,如果还是没有,就会 DNS 服务器进行查询,查询的过程如下: 只有上级域名,才知道下一级域名的 IP 地址,需要逐级查询。当我们查询一个域名时,必须从根服务器开始,逐层查询,这就是所谓的 迭代查询 ( iterative query )。

  1. 先查询 根域名服务器

  2. 根据根服务器返回结果,继续查询负责 .com 解析的服务器,一般叫做 顶级域名服务器(TLD top-level domain)

  3. 根据顶级域名服务器返回结果,继续查询负责 fasionchan.com 解析的服务器,一般叫做 权威域名服务器 DNS 域名解析的过程蛮有意思的,整个过程就和我们日常生活中找人问路的过程类似,只指路不带路。 演示:

# 首先查询13个根域名服务器
dig
# 根据返回的根域名服务器选择一台服务器进行TLD顶级域名查询
dig @199.7.91.13 www.baidu.com
# 再从返回的TLD服务器中选择一台查询
dig @192.12.94.30 www.baidu.com
# 再从返回的一级域名服务器中选择一台查询
dig @220.181.33.31 www.baidu.com
# 最后返回结果
ANSWER SECTION
www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.

DNS 服务器可以分成四种:根域名服务器、TLD 服务器、权威域名服务器、递归域名服务器 根域名服务器全世界一共有13台(都是服务器集群) 递归 DNS 服务器(recursive DNS server),可以自动递归查询。 一级域名服务器的正式名称叫做权威域名服务器(Authoritative Name Server,”权威”的意思是域名的 IP 地址由它给定。

DHCP

DHCP 协议(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网协议,用于给入网的设备自动分配 IP 地址。 DHCP 协议使用 UDP 协议工作,使用端口号 67 和 68。DHCP 协议分为两个部分:服务端和客户端。DHCP 服务器端运行在 DHCP 服务器上,DHCP 客户端运行在需要获取 IP 地址的设备上。 DHCP

DHCP中继代理

NAT 网络地址转换

简单的来说 NAT 就是同个公司、家庭、教室内的主机对外部通信时,把私有 IP 地址转换成公有 IP 地址。 NAT NAPT

  1. 外部无法主动与 NAT 内部服务器建立连接,因为 NAPT 转换表没有转换记录

  2. 转换表的生成与转换操作都会产生性能开销。

  3. 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。解决的方法主要有两种方法。第一种就是改用 IPv6;第二种 NAT 穿透技术

ICMP 协议

ICMP 协议是 IP 协议的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP ICMP 协议主要分为两类:一类是查询报文,另一类是差错报文。查询报文主要有两类,一类是 Echo Request/Reply(ping 命令),另一类是 Timestamp Request/Reply(时间戳请求/应答)。差错报文主要有四种,分别是 Unreachable(不可达)、Source Quench(源抑制)、Redirect(重定向)和 Time Exceeded(超时)。 ICMP类型

IGMP 因特网组管理协议

IGMP 协议是因特网组管理协议,是 IP 网络中用于实现组播协议的一个协议。IGMP 协议运行在主机和路由器之间,且路由器需要支持 IGMP 协议才能实现组播。 IGMP IGMP 协议主要有两个版本,IGMPv1 和 IGMPv2。IGMPv1 协议主要是在路由器和主机之间进行组播组成员的注册和注销。IGMPv2 协议除了 IGMPv1 协议的功能外,还增加了组成员报告抑制机制,以减少网络流量。

OSI协议

互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。 记忆口诀:

  • 物联网,传输应用(五层)

  • 物联网传话,表示应用(七层)

  • please do not tell stupid people anything OSI七层模型

TCP/IP协议

TCP/IP协议是互联网通信的基石,它定义了计算机如何进行通信的规则。TCP/IP协议由一系列的协议组成,其中最核心的是TCP和IP协议。 TCP/IP协议

HTTP协议

HTTP协议是互联网中应用最为广泛的一种网络协议,它定义了客户端和服务器之间的通信规则。HTTP协议使用TCP协议作为传输层协议,保证了数据的可靠传输。HTTP协议是无状态的,每次请求都需要携带完整的请求头和请求体,服务器处理完请求后返回响应,然后连接关闭。HTTP协议的版本有1.0、1.1和2.0,其中1.1和2.0是目前使用最为广泛的版本。 HTTP协议

HTTPS协议

HTTPS协议是HTTP协议的安全版本,它在HTTP协议的基础上加入了SSL/TLS协议,保证了数据传输的安全性。HTTPS协议使用TCP协议作为传输层协议,保证了数据的可靠传输。HTTPS协议的版本有1.0、1.1、1.2和1.3,其中1.1和1.2是目前使用最为广泛的版本。 HTTPS与HTTP