
目录1、网络层1.1 IP协议格式1.2 网段划分1.3 私有 IP 地址和公网 IP 地址1.4 路由2、数据链路层2.1 以太网2.2 MTU2.3 ARP 协议1、网络层1.1 IP协议格式4 位版本号指定 IP 协议的版本对于 IPv4 来说就是 44 位头部长度IP 头部的长度是多少个 32bit也就是 length 4的字节数4bit 表示最大的数字是 15因此 IP 头部最大长度是 60 字节8 位服务类型3 位优先权字段(已经弃用)4 位 TOS 字段和1 位保留字段(必须置为 0)。4 位 TOS 分别表示最小延时最大吞吐量最高可靠性最小成本这四者相互冲突只能选择一个对于 ssh/telnet 这样的应用程序最小延时比较重要对于 ftp 这样的程序最大吞吐量比较重要16 位总长度(total length)IP 数据报整体占多少个字节16 位标识(id)唯一的标识主机发送的报文如果 IP 报文在数据链路层被分片了那么每一个片里面的这个 id 都是相同的3 位标志字段第一位保留第二位置为 1 表示禁止分片这时候如果报文长度超过 MTUIP 模块就会丢弃报文第三位表示更多分片如果分片了的话最后一个分片置为 0其他是 113 位分片偏移是分片相对于原始 IP 报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置实际偏移的字节数是这个值乘以8得到的2^13 * 2^3 2^16。因此除了最后一个报文之外其他报文的长度必须是 8 的整数倍8 位生存时间数据报到达目的地的最大报文跳数一般是64每次经过一个路由TTL - 1 一直减到 0 还没到达就丢弃了这个字段主要是用来防止出现路由循环8 位协议表示上层协议的类型16 位头部校验和使用 CRC 进行校验来鉴别头部是否损坏32 位源地址和 32 位目标地址表示发送端和接收端1.2 网段划分IP 地址分为两个部分网络号和主机号网络号保证相互连接的两个网段具有不同的标识主机号同一网段内主机之间具有相同的网络号但是必须有不同的主机号不同的子网其实就是把网络号相同的主机放到一起如果在子网中新增一台主机则这台主机的网络号和这个子网的网络号一致但是主机号必须不能和子网中的其他主机重复通过合理设置主机号和网络号就可以保证在相互连接的网络中每台主机的 IP 地址都不相同DHCP 能够自动的给子网内新增主机节点分配 IP 地址一般的路由器都带有 DHCP 功能下面是以前一种划分网络号和主机号的方案把所有 IP 地址分为五类但是随着互联网的飞速发展这种划分方案的局限性很快显现出来A 类地址很容易浪费于是提出了新的划分方案CIDR(Classless Interdomain Routing)引入一个额外的子网掩码(subnet mask)来区分网络号和主机号子网掩码也是一个 32 位的正整数通常用一串 “0” 来结尾将 IP 地址和子网掩码进行 “按位与” 操作得到的结果就是网络号网络号和主机号的划分与这个 IP 地址是 A 类、 B 类还是 C 类无关特殊的IP地址将 IP 地址中的主机地址全部设为 0就成为了网络号代表这个局域网将 IP 地址中的主机地址全部设为 1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据包1.3 私有 IP 地址和公网 IP 地址如果一个组织内部组建局域网IP 地址只用于局域网内的通信而不直接连到互联网上理论上使用任意的 IP 地址都可以但是 RFC 1918 规定了用于组建局域网的私有 IP 地址10.* 前 8 位是网络号共 16,777,216 个地址172.16.* 到 172.31.* 前 12 位是网络号共 1,048,576 个地址192.168.* 前 16 位是网络号共 65,536 个地址包含在这个范围中的都是私有 IP其余的则称为全局 IP(或公网 IP)。一个路由器可以配置两个 IP 地址一个是 WAN 口 IP一个是 LAN 口 IP(子网IP)路由器 LAN 口连接的主机都从属于当前这个路由器的子网中子网内的主机需要和外网进行通信时路由器将 IP 首部中的 IP 地址进行替换(替换成 WAN 口 IP)这样逐级替换最终数据包中的 IP 地址成为一个公网 IP。这种技术称为NAT(Network Address Translation 网络地址转换)1.4 路由路由Routing是指在网络中把信息从源地点通过网络传输到目的地的过程。IP 数据包的传输过程和问路一样当 IP 数据包到达路由器时路由器会先查看目的 IP路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个路由器依次反复一直到达目标 IP 地址如何判定当前这个数据包该发送到哪里需要依靠每个节点内部维护一个路由表。如果目的 IP 命中了路由表就直接转发即可。当目的地址与路由表中其它行都不匹配就按缺省路由条目规定的接口发送到下一跳地址。2、数据链路层用于两个设备(同一种数据链路节点)之间进行传递。2.1 以太网| 什么是以太网“以太网” 不是一种具体的网络而是一种技术标准既包含了数据链路层的内容也包含了一些物理层的内容。例如规定了网络拓扑结构访问控制方式传输速率等以太网中的网线必须使用双绞线传输速率有 10M、100M、1000M 等以太网是当前应用最广泛的局域网技术和以太网并列的还有令牌环网、无线LAN 等以太网帧格式源地址和目的地址是指网卡的硬件地址(MAC 地址)长度是 48 位是网卡出厂时固化的帧协议类型字段有三种值分别对应 IP、 ARP、 RARP帧末尾是 CRC 校验码Mac 帧的数据部分长度在 46-1500 字节。设置最小长度的目的是为了确保在网络传输过程中有足够的时间进行冲突检测避免因为帧长度过短而导致冲突检测失效的问题最大长度的设置是为了适应不同的网络环境和数据传输需求同时避免因为帧长度过长而导致网络设备处理效率下降或网络拥塞等问题。| 以太网交换机用于连接多个计算机或网络设备的网络设备能够在网络节点之间提供高速、低延迟的数据传输。在一个局域网中如果主机数量过多则发生数据碰撞的概率增加交换机可以划分碰撞域以降低数据碰撞的概率。交换机的主要工作原理是通过对MAC地址的寻址和转发来实现数据的交换。同时交换机还会自动学习发送数据帧的设备的MAC地址并将其添加到自己的MAC地址表中以便将来能够更高效地转发数据帧。2.2 MTUMTU 相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层产生的限制。以太网帧中的数据长度规定最小 46 字节最大 1500 字节ARP 数据包的长度不够 46 字节要在后面补填充位最大值 1500 称为以太网的最大传输单元(MTU)不同的网络类型有不同的MTU如果一个数据包从以太网路由到拨号链路上数据包长度大于拨号链路的 MTU则需要对数据包进行分片| MTU 对 IP 协议的影响所以由于数据链路层 MTU 的限制对于较大的 IP 数据包要进行分包。将较大的 IP 包分成多个小包并给每个小包打上标签每个小包 IP 协议头的 16 位标识(id) 都是相同的每个小包的 IP 协议头的 3 位标志字段中第 2 位置为 0表示允许分片第 3 位来表示结束标记(当前是否是最后一个小包, 是的话置为 0, 否则置为 1)到达对端时再将这些小包按顺序重组拼装到一起返回给传输层一旦这些小包中任意一个小包丢失接收端的重组就会失败并且 IP 层不负责重新传输数据| MTU 对 UDP 协议的影响一旦 UDP 携带的数据超过 1472(1500 - 20(IP 首部) - 8(UDP 首部))那么就会在网络层分成多个 IP 数据报这多个 IP 数据报有任意一个丢失都会引起接收端网络层重组失败所以如果 UDP 数据报在网络层被分片, 整个数据被丢失的概率就大大增加了| MTU 对于 TCP 协议的影响TCP 的一个数据报也不能无限大还是受制于 MTUTCP 的单个数据报的最大消息长度称为MSS(Max Segment Size)TCP 在建立连接的过程中通信双方会进行 MSS 协商双方在发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值然后双方得知对方的 MSS 值之后选择较小的作为最终的 MSSMSS 的值在 TCP 首部的40 字节变长选项中(kind2)2.3 ARP 协议ARP协议全称为地址解析协议Address Resolution Protocol是一种用于将网络层的地址IP 地址转换为数据链路层地址Mac地址的重要网络协议。ARP 不是一个单纯的数据链路层的协议而是一个介于数据链路层和网络层之间的协议。ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系在网络通讯时源主机的应用程序知道目的主机的 IP 地址和端口号却不知道目的主机的硬件地址数据包首先是被网卡接收到再去处理上层协议的如果接收到的数据包的硬件地址与本机不符则直接丢弃因此在通讯前必须获得目的主机的硬件地址| ARP协议的工作原理当一个主机A向另一个主机B发送数据包时如果它不知道主机B的MAC地址就会发送一个ARP请求包这个ARP请求包中包含主机A的IP地址和MAC地址以及主机B的IP地址。该请求包以广播的方式发送即发送到局域网内的所有设备位于同一局域网内的所有设备都会收到这个ARP请求包包括主机B。主机B发现请求包中的IP地址与自己的IP地址匹配就会生成一个ARP应答包ARP应答包中包含主机B的MAC地址主机B将ARP应答包发送回主机A主机A收到ARP应答包后就知道了主机B的MAC地址然后可以将数据包发送给主机B每台主机都会维护一个 ARP 缓存表可以用arp -a命令查看缓存表中的表项有过期时间(一般为 20 分钟)。| ARP数据报格式硬件类型指链路层网络类型1 为以太网协议类型指要转换的地址类型0x0800 为 IP 地址硬件地址长度对于以太网地址为 6 字节协议地址长度对于和 IP 地址为 4 字节op 字段为 1 表示 ARP 请求op 字段为 2 表示 ARP 应答其中需要注意的是任何主机在任何时刻都可能会收到 ARP 请求或 ARP 应答所以主机在收到 ARP 请求或 ARP 应答先看 op再确定动作。本篇文章的分享就到这里了如果您觉得在本文有所收获还请留下您的三连支持哦~