ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

下篇:网络层、数据链路层与应用层:IP、NAT、ARP、DNS 一网打尽

下篇:网络层、数据链路层与应用层:IP、NAT、ARP、DNS 一网打尽 下篇网络层、数据链路层与应用层IP、NAT、ARP、DNS 一网打尽传输层解决了“端到端”的可靠性问题但数据包如何在复杂网络中找路本篇从网络层 IP 协议讲起再到数据链路层以太网、MAC、MTU、ARP最后落到应用层 DNS 与 NAT 技术。一、网络层在复杂环境中确定路径网络层的作用在复杂的网络环境中确定一个合适的路径。基本概念主机配有 IP 地址但不进行路由控制的设备。路由器既配有 IP 地址又能进行路由控制。节点主机和路由器的统称。IP 协议头格式IP 首部关键字段4 位版本号IPv4 为 4。4 位头部长度IP 头部长度是多少个 32bit最大 15因此 IP 头部最大 60 字节。8 位服务类型包括最小延时、最大吞吐量、最高可靠性、最小成本等四者冲突只能选一个。16 位总长度IP 数据报整体占多少字节。16 位标识唯一标识主机发送的报文。如果 IP 报文在数据链路层被分片每个分片的 id 相同。3 位标志字段第二位为 1 表示禁止分片第三位表示“更多分片”。13 位分片偏移分片相对于原始 IP 报文开始处的偏移实际偏移字节数是该值 ×8。8 位生存时间 TTL数据报到达目的地的最大报文跳数一般是 64。每经过一个路由TTL 减 1减到 0 还没到达就丢弃。用于防止路由循环。8 位协议表示上层协议类型。16 位头部校验和CRC 校验鉴别头部是否损坏。32 位源地址和 32 位目标地址。选项字段不定长最多 40 字节。二、地址管理网络号与主机号IP 地址分为两部分网络号保证相互连接的两个网段具有不同标识。主机号同一网段内主机之间具有相同网络号但必须有不同的主机号。通过合理设置主机号和网络号可以保证在相互连接的网络中每台主机的 IP 地址都不相同。手动管理子网内 IP 很麻烦于是有 DHCP 技术能自动给子网内新增主机节点分配 IP 地址。一般路由器都带有 DHCP 功能因此路由器也可以看做一个 DHCP 服务器。分类划分方案过去曾把所有 IP 地址分为五类A 类0.0.0.0 到 127.255.255.255B 类128.0.0.0 到 191.255.255.255C 类192.0.0.0 到 223.255.255.255D 类224.0.0.0 到 239.255.255.255E 类240.0.0.0 到 247.255.255.255随着 Internet 飞速发展这种划分方案局限性显现大多数组织申请 B 类地址导致 B 类很快分配完而 A 类浪费大量地址。CIDR 与子网掩码新的划分方案叫 CIDR引入额外的子网掩码来区分网络号和主机号。子网掩码是 32 位正整数通常以一串“0”结尾。将 IP 地址和子网掩码进行“按位与”操作得到的结果就是网络号。网络号和主机号的划分与 IP 地址是 A 类、B 类还是 C 类无关。例如IP140.252.20.68子网掩码255.255.255.0网络号140.252.20.0子网地址范围140.252.20.0 ~ 140.252.20.255更简洁的表示140.252.20.68/24表示子网掩码高 24 位是 1。特殊 IP 地址主机地址全 0网络号代表这个局域网。主机地址全 1广播地址用于给同一链路中所有主机发送数据包。127.*本机环回测试通常是 127.0.0.1。私有 IP 与公网 IPRFC1918 规定了用于组建局域网的私有 IP 地址10.*前 8 位是网络号共 16,777,216 个地址。172.16. 到 172.31.前 12 位是网络号共 1,048,576 个地址。192.168.*前 16 位是网络号共 65,536 个地址。包含在这些范围中的都称为私有 IP其余称为全局 IP 或公网 IP。三、NAT 与 NAPT解决 IP 不够用一个路由器可以配置两个 IP 地址WAN 口 IPLAN 口 IP子网 IP路由器 LAN 口连接的主机都从属于当前路由器的子网。不同路由器的子网 IP 通常一样比如 192.168.1.1。子网内主机 IP 不能重复但子网之间可以重复。子网内主机需要和外网通信时路由器将 IP 首部中的 IP 地址进行替换替换成 WAN 口 IP。这样逐级替换最终数据包中的 IP 地址成为一个公网 IP。这种技术称为NAT。如果局域网内多个主机都访问同一个外网服务器服务器返回数据的目的 IP 都相同。NAT 路由器如何判定转发给哪个局域网主机这时使用NAPT用 IP port 来建立关联关系。这种关联关系由 NAT 路由器自动维护。TCP 建立连接时生成表项断开连接后删除表项。NAT 的优缺点优点不需要更新硬件设备只更新软件就可以解决 IP 地址不够用的问题。缺点无法从 NAT 外部向内部服务器建立连接转换表生成和销毁有额外开销通信过程中一旦 NAT 设备异常即使存在热备所有 TCP 连接也可能断开。四、路由选择一跳一跳问路路由的过程是一跳一跳“问路”的过程。所谓“一跳”就是数据链路层中的一个区间具体在以太网中指从源 MAC 地址到目的 MAC 地址之间的帧传输区间。IP 数据包到达路由器时路由器先查看目的 IP决定这个数据包是能直接发送给目标主机还是需要发送给下一个路由器。依次反复一直到达目标 IP 地址。如何判定当前数据包该发送到哪里依靠每个节点内部维护的路由表。路由表可以使用route命令查看。如果目的 IP 命中了路由表就直接转发。路由表最后一行主要由下一跳地址和发送接口组成当目的地址与其他行都不匹配时就按缺省路由条目规定的接口发送到下一跳地址。五、数据链路层以太网、MAC、MTU 与 ARP认识以太网“以太网”不是一种具体网络而是一种技术标准。既包含数据链路层内容也包含一些物理层内容例如网络拓扑结构、访问控制方式、传输速率等。以太网是当前应用最广泛的局域网技术。以太网帧格式目的地址6 字节源地址6 字节类型2 字节数据46~1500 字节CRC4 字节源地址和目的地址指网卡硬件地址也叫 MAC 地址长度 48 位网卡出厂时固化。帧协议类型字段有三种值分别对应 IP、ARP、RARP。帧末尾是 CRC 校验码。MAC 地址与 IP 地址的区别IP 地址描述的是路途总体的起点和终点。MAC 地址描述的是路途上的每一个区间的起点和终点。MTUMTU 相当于发快递时对包裹尺寸的限制。以太网帧中的数据长度规定最小 46 字节最大 1500 字节。最大值 1500 称为以太网的最大传输单元 MTU。MTU 对 IP 协议的影响较大的 IP 数据包要进行分片。每个小包 IP 协议头的 16 位标识都相同。到达对端后再按顺序重组。一旦任意小包丢失接收端重组就会失败但 IP 层不会负责重新传输数据。MTU 对 UDP 协议的影响UDP 携带数据超过 14721500 - 20 IP 首部 - 8 UDP 首部就会在网络层分成多个 IP 数据报。任意一个丢失都会引起接收端网络层重组失败整个数据丢失概率大大增加。MTU 对 TCP 协议的影响TCP 单个数据报最大消息长度称为 MSS。TCP 建立连接过程中通信双方会进行 MSS 协商。双方在发送 SYN 时会在 TCP 头部写入自己能支持的 MSS 值然后选择较小的作为最终 MSS。ARP 协议ARP 不是单纯的数据链路层协议而是介于数据链路层和网络层之间的协议。ARP 协议建立了主机 IP 地址和 MAC 地址的映射关系。工作流程源主机发出 ARP 请求询问“IP 地址是 X 的主机的硬件地址是多少”并将请求广播到本地网段。目的主机接收到广播 ARP 请求发现 IP 与本机相符则发送 ARP 应答数据包给源主机将自己的硬件地址填写在应答包中。每台主机都维护一个 ARP 缓存表可以用arp -a查看。表项有过期时间一般 20 分钟。六、应用层DNS 与 URL 过程DNS 是一整套从域名映射到 IP 的系统。TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序但 IP 地址不方便记忆。于是人们发明了主机名并使用 hosts 文件描述主机名和 IP 地址的关系。DNS 是应用层协议底层使用 UDP 进行解析浏览器会缓存 DNS 结果。浏览器中输入 URL 后发生的事情是一个经典面试题没有固定答案越详细越好。可以围绕 DNS 解析、TCP 连接、HTTP 请求、服务器处理、HTTP 响应、浏览器渲染、连接关闭等步骤展开。七、全文总结与面试重点数据链路层作用两个设备同一种数据链路节点之间传递数据。以太网是一种技术标准。理解以太网帧格式、MAC 地址、ARP 协议、MTU。网络层作用在复杂网络环境中确定合适路径。理解 IP 地址、IP 地址与 MAC 地址区别。理解 IP 协议格式。了解网段划分方法。理解如何解决 IP 数目不足CIDR、NAT、IPv6。理解私有 IP 和公网 IP。理解路由过程、IP 数据包分片原因、NAT 工作原理。传输层作用负责数据从发送端传输到接收端。理解端口号概念。认识 UDP了解其特点。认识 TCP理解可靠性、状态转化。掌握连接管理、确认应答、超时重传、滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答。理解 TCP 面向字节流、粘包问题及解决方案。能够基于 UDP 实现可靠传输。理解 MTU 对 UDP/TCP 的影响。应用层作用满足日常需求的网络程序都在应用层。能够根据需求设计应用层协议。理解 DNS 原理和工作流程。TCP 之所以复杂是因为它既要保证可靠性又要尽可能提高性能。可靠性靠校验和、序列号、确认应答、超时重发、连接管理、流量控制、拥塞控制。提高性能靠滑动窗口、快速重传、延迟应答、捎带应答。其他还有超时重传定时器、保活定时器、TIME_WAIT 定时器等。下篇小结本篇从网络层 IP 协议出发覆盖了IP 协议头与地址管理CIDR、私有 IP、公网 IPNAT 与 NAPT路由选择数据链路层以太网、MAC、MTU、ARP应用层 DNS 与 URL 过程全文面试重点总结至此TCP/IP 网络原理的上、中、下三篇博客全部完成。建议复习时按“分层”建立知识树应用层 → 传输层 → 网络层 → 数据链路层再横向串联端口、五元组、TCP 可靠性、UDP、IP、NAT、ARP、DNS 等核心概念。
返回列表