最近工作需要搞网络相关的内容,由于之前对网络了解比较少,因此开始重点学习一下网络相关的各种知识。博文中的有些内容来自于在学习过程中对于一些互联网上我认为的重点知识的记录,如果侵权请联系删除!

  在之前的博文 Network 之一 国际标准组织介绍、互联网/因特网、以太网概念区分、协议标准 中,曾经学习了互联通信的参考模型:OSI 参考模型和 TCP/IP 参考模型,以及相关的标准。但是受制于篇幅,没有详细介绍各种规约的细节,这篇博文就重点学习协议的细节。

协议战争

  在 20 世纪 70 年代到 90 年代之间,计算机科学领域发生了一场名为 “协议战争”(Protocol Wars) 的长期争论。当时,工程师、组织和国家在哪种通信协议能产生最好、最强大的计算机网络的问题上出现了两极分化。这场辩论在 80 年代末和 90 年代初的 Internet - OSI 标准之战中达到了顶峰,最终在 90 年代中期由 Internet 获胜。

Internet 标准最终形成了互联网协议套件,由于互联网协议套件是从 TCP/IP 协议一步步发展来的,因此也被称为 TCP/IP 协议族。

  在互联网发展的这个阶段中,最先出现的是一些专有网络标准及协议。例如,最早的高级研究计划局网络(ARPANET) 中的 Network Control Program (NCP) ,欧洲邮政、电报和电话服务(PTT)于 1976 年开发了 X.25 标准。OSI 在 20 世纪 80 年代后期开发了其网络标准,完整的互联网协议套件在1989 年开发完成。

  随着完整的互联网协议套件的开发,以及与电信和计算机行业的合作,将 TCP/IP 软件整合到各种操作系统中,为广泛采用 TCP/IP 作为综合协议套件奠定了基础。虽然 OSI 在 20 世纪 80 年代后期开发了其网络标准,但 TCP/IP 在众多供应商网络上被广泛应用,并最终称为了互联网的核心组件。很多协议基本都直接消失或者间接投靠了 TCP/IP 协议。

TCP/IP 协议族

  TCP/IP 协议族,也称为互联网协议套件(Internet Protocol Suite,IPS)是一组实现支持因特网和大多数商业网络运行的协议栈的网络传输协议。这个名称来源于其中两个最重要的协议:传输控制协议(TCP)和因特网协议(IP),它们也是最先定义的两个协议。

  由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又称为 TCP/IP 协议栈(TCP/IP Protocol Stack),也被简称为 TCP/IP 协议。

  目前,TCP/IP 协议族的相关标准由 IEFT 负责指定,所有这些协议都在相应的 RFC 文档中讨论及标准化。其中有个问题我们需要知道,TCP/IP 协议栈的众多协议并没有严格的按照分层的理念来进行设计,它更多的是处于实用的目的。尽管在很多文献中将 TCP/IP 协议栈中的各种协议划分到各层,但没有对应的标准来说明这一点,IEFT 也不负责处理分层的相关标准。

TCP/IP 数据流

  在 TCP/IP 协议工作流程中(TCP/IP 数据流过程),应用层数据通过协议栈发送到网络上时,每一层协议都会添加一个自己的头部,这个过程称为封装(Encapsulation)。

  数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。上图仅仅是两台计算机在同一网段的简单情况,如果两台计算机在不同网段,则还需要经过一个或多个路由器(也可能是广域网节点交换机)。

  每个协议层都有自己的名称来标识数据单元。TCP 将数据单元称为(Segment),UDP 将数据单元称为数据报,IP 将数据单元称为数据包(Packet),数据链路层和物理层或网络接口层将其称为(Frame)。

以太网帧

  以太网(Ethernet)是一种计算机局域网技术。IEEE 制定的 IEEE 802.3 标准定义了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问控制的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网标准如令牌环、FDDI 和 ARCNET。各种以太网类型参见博文 Network 之三 Ethernet(以太网)物理介质(10Base、100Base-T、100Base-TX等)介绍。

  IEEE 802 的相关标准主要规定了以太网数据链路层和物理层,且将数据链路层又分为了介质访问控制 (MAC) 层 和逻辑链路控制 (LLC) 层 这两层。其中,前者负责控制网络中的设备如何获得对介质的访问权限和传输数据的权限,后者负责识别和封装网络层协议,并控制错误检查和帧同步。

  以太网的雏型是施乐以太网(Xerox Ethernet),在 1982 年,Xerox 与 DEC 及 Intel 组成 DIX 联盟,并共同发表了 Ethernet Version 2(EV2)的规格,并将它投入商场市场,且被普遍使用。后来,DIX 将其递交到了 IEEE 802 工作组,1983 IEEE 802 工作组发布 IEEE 802.3 以太网标准,开始负责制定后续以太网标准。

  以太网帧有多种类型,Ethernet Version 2 和 IEEE 802.3 是目前最常见的以太网帧(Ethernet II 格式相对使用广泛),其他如子网接入协议(SNAP)帧、Novell raw 802.3 帧等我们基本接触不到。Ethernet Version 2(EV2)帧格式与 IEEE 802.3 帧格式有些不一样,但是,一般认为他们是兼容的,并且可以同时出现在以太网链路上。

Ethernet Version 2

  1982 年,DIX 联盟发表了 Ethernet Version 2(EV2)。以太帧起始部分由前同步码和帧开始定界符组成,后面紧跟着一个以太网报头,以 MAC 地址说明目的地址和源地址。以太帧的中部是该帧负载的包含其他协议报头的数据包。以太帧由一个 32 位冗余校验码结尾,用于检验数据传输是否出现损坏。

  • 前导码:同于帧同步
  • 目的 MAC:指定要将数据帧发送到哪个适配器,标识帧的接收者
  • 源 MAC:消息源自哪个适配器,标识帧的发送者
  • 类型:用于标识数据字段种包含的高层协议。由 IEEE 注册机构分配,下图是一些常见协议分配情况
  • 数据:网络层数据。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。
  • FCS:循环冗余校验码。

  Ethernet Version 2 帧格式是目前使用最多的以太网帧,以太网帧的整体大小必须在 64~1518 字节之间(不包含前导码)。有些系统支持更大的帧,最大可以支持 9000 字节。

  1. MAC 地址的前三个字节由 IEEE 分配给适配器的供应商,并且特定于供应商。
  2. 使用 Wireshark 抓包是抓不到前导码和校验和的,因为数据到达抓包驱动层时,前导码和校验和已经被过滤掉了

IEEE 802.3 帧

  IEEE 802.3 帧是在 Ethernet Version 2 帧基础上制定出来的。在 IEEE 802.3 初期,IEEE 802.3 帧与 Ethernet Version 2 帧并不相同, IEEE 802.3 对其进行了扩展。然而随着 Ethernet Version 2 的流行,后续的 IEEE 802.3 标准也在不断改变,下面是最新的 IEEE 802.3-2018 标准中给出的帧格式:

  • 前导码: IEEE 802.3 对原来 Ethernet Version 2 帧的前导码进行了扩展

    • 前同步码:7 字节固定数字 0xAA
    • 帧界定符:1 字节固定数字 0xAB
  • 目的 MAC:指定要将数据帧发送到哪个适配器,标识帧的接收者
  • 源 MAC:消息源自哪个适配器,标识帧的发送者
  • 长度/类型:IEEE 802 规定所有以太网类型的值都要大于十六进制 0x05DC,由于以太网中的最大帧大小为 1518 字节,因此以太网类型和长度之间没有重叠的意义。如果源地址后面的字段大于 0x05DC,则该帧为 Ethernet Version 2,否则为 IEEE 802.3。这里的类型就是 Ethernet Version 2 中的类型,由 IEEE 注册机构分配。
  • 数据:上层协议数据或者填充到最小 46 字节
  • FCS:循环冗余校验码

IEEE 802.3 规定发送帧的时候,每个字节的低位在前高位在后

  从上面的帧格式可以看出,最新的 IEEE 802.3 帧与 Ethernet Version 2 基本是一致的。但是早期的 IEEE 802.3 帧格式分为 IEEE 802.3/802.2 LLC 和 IEEE 802.3/802.2 SNAP 这两种,但实际并没有流行开来。大部分 TCP/IP 协议栈也没有实现 IEEE 802.2 所定义的 LLC 层,而且部分标准已经不再维护及更新了(IEEE 相应的工作组已经解散)。

IEEE 802.3/802.2 LLC

  这是 IEEE 802.3 发布初期定义的 802.3 以太帧,它由 Ethernet V2 发展而来。它将 Ethernet V2 帧头的协议类型字段替换为帧长度字段(取值为 0x0000 ~ 0x05DC),并加入 802.2 LLC 头用以标志上层协议。

  • DSAP Destination Service Access Point,目标服务接入点
  • SSAP Source Service Access Point 来源服务接入点
  • Control 控制字段,8 或16bits。为了便于区分,有三种 LLC PDU 控制字段,分别叫做 U,I,S 帧。
    • U(Unnumbered)帧,8 位的控制字段,特别用于无连接的应用
    • I(Information)帧,16 位的控制和帧编号字段,用于面向连接的应用
    • S(Supervisory)帧,16 位的控制字段,用于在 LLC 层中进行管理监督。

在这三种格式中,只有 U 帧在广泛使用。用第一个字节的最后两位来区分这三种 PDU 帧格式。

IEEE 802.3/802.2 SNAP

这是 IEEE 为保证在 802.2 LLC 上支持更多的上层协议同时更好的支持 IP 协议而发布的标准。

Novell raw 802.3

  这是 1983 年 Novell 发布其划时代的 Netware/86 网络套件时采用的私有以太网帧格式,该格式以当时尚未正式发布的802.3标准为基础;但是当两年以后 IEEE 正式发布 802.3 标准时,IEEE 在 802.3 帧头中又加入了 802.2 LLC(Logical Link Control)头,这使得Novell 的 RAW 802.3 格式跟正式的 IEEE 802.3 标准互不兼容。

IP

  网际协议(Internet Protocol,IP),又称互联网协议,是用于分组交换数据网络的协议。IP 是 TCP/IP 协议族中网络层的最主要协议之一,任务是根据源主机和目的主机的地址来传送数据。

  IP 是一种无连接协议,它以尽力而为的交付模式运行,因为它不保证交付,也不保证正确的顺序或避免重复交付。这些方面(包括数据完整性)由上层传输协议(如传输控制协议 (TCP))解决。

  IP 的第一个主要版本是互联网协议版本 4(IPv4),它的继任者是互联网协议版本 6(IPv6)。IPv4 使用地址解析协议(ARP)将 IP 地址解析成相应的数据链路地址(MAC 地址),而 IPv6 则采用邻居发现协议(NDP)。目前仍然是广泛使用的是 IPv4。

  • 版本: 标识正在使用的 IP 版本。当前版本为 4,此版本称为 IPv4。

  • 头长度(IHL): Internet Header Length (IHL)指示 IP 头的长度,单位是 4 字节。这个字段的最小值是 5,最大十进制值是 15。

  • 服务类型/DS Field: 在 RFC 791 中被定义为服务类型,实际上并未使用。1998 年被 IETF 在 RFC 2474 中重定义为 Differentiated Services Field(DS Field)。

    • IP 优先级:用于标识数据包在网络中收到的服务级别。
    • DSCP: 差分服务代码点 (Differentiated Services Code Point,DSCP)用于标识数据包在网络中接收的服务级别。
    • ECN:显式拥塞通知(Explicit Congestion Notification,ECN)在 RFC 3168 中定义,允许在不丢弃报文的同时通知对方网络拥塞的发生。

      ECN 是一种可选的功能,仅当两端都支持并希望使用,且底层网络支持时才被使用。

  • 总长度: IP 头+ 数据的长度。因此该字段的最小值是 20(20 字节头 + 0 字节数据),最大为 65535 字节。

  • 标识符: 用来唯一地标识一个报文的分片。因为分片不一定按序到达,所以在重组时需要知道分片所属的报文。

  • 标志: 用于控制和识别分片。下面是它们可能的配置

    • Bit 0: 保留的,必须设置为零
    • Bit 1: 禁止分片(Don’t Fragment,DF),当 DF = 0 时才允许分片
    • Bit 2: 更多分片(More Fragment,MF),MF = 1 代表后面还有分片,MF = 0 代表已经是最后一个分片。
  • 片段偏移量: 指明了每个分片相对于原始报文开头的偏移量,以 8 字节作单位。

  • 生存时间(TTL): 避免报文在互联网中永远存在。以秒为单位,小于一秒的时间均向上取整到一秒。实际使用中,TTL 最初设置为一个数字,并由通过的每个路由器递减,当 TTL 达到 0 时,数据包将被丢弃。

  • 协议: 在分层协议模型中,用于指示该报文的数据区使用的协议。IANA 维护着一份协议列表(最初由 RFC 790 定义),详细参见 IP协议号列表

  • 头校验和: 只对首部查错,不包括数据部分。具体方法参见 RFC 1071。在计算时,先将校验和字段置为 0,计算之后填实际值,下面是 Wireshark 的一个示例:

      TCP 报文中经常出现校验和错误(其他报文貌似好一些),关于为何 Wireshark 抓取的 TCP 报文为何出现大量校验和错误,参见 Wireshark 官网解释。

  • 源 IP 地址: IPv4 地址,指出报文的发送端。

  • 目标 IP 地址: IPv4 地址,指出报文的接收端。

  • 选项和填充: 以 4 字节为单位,从1 到 40个字节不等,一般不用。如果选项值不是 4 的倍数,则填充 0 以确保 4 字节对齐。如果 IHL 大于 5,那么选项字段必然存在并必须被考虑。

  • 数据: 数据字段不是首部的一部分,因此并不被包含在首部检验和中。数据的格式在协议首部字段中被指明,并可以是任意的传输层协议

TCP/UDP

  TCP 和 UDP 是 TCP/IP 协议中最具有代表性的传输层协议。其中,TCP 协议全称是传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义;UDP 协议全称是用户数据报协议(User Datagram Protocol)是一种无连接的协议,由 IETF 的 RFC 768 定义。下面是两个的简单对比:

类型 TCP UDP
服务类型 TCP 是一种面向连接的协议。连接定向是指通信设备在传输数据之前要建立连接,在传输数据之后要关闭连接。 UDP 是面向数据报的协议。它没有打开连接、维护连接和终止连接的开销。UDP 对于广播和组播类型的网络传输十分有效。
可靠性 可靠的,因为 TCP 保证将数据的传输到目标路由器。 不可靠,因为 UDP 无法保证将数据传送到目的地。
错误检查机制 提供了广泛的错误检查机制。因为它提供了流控制和数据确认。 UDP 只有使用校验和的基本错误检查机制。
确认 有确认 无确认
时序 数据的排序是 TCP 的一个特性。数据包按顺序到达接收器。 在 UDP 中没有数据排序。如果需要顺序,则必须由应用层管理。
速度 比 UDP 慢 比 TCP 更快、更简单、更高效
重发 可以重传丢失的数据包 不能重发
报头长度 20 - 60 字节的可变长度头 8 字节的固定长度头
量级 重量级 轻量级
握手技术 使用 SYN、ACK、SYN-ACK 等握手方式 没有握手
广播 不支持 支持
协议 用于 HTTP、HTTPs、FTP、SMTP 和 Telnet 用于 DNS、DHCP、TFTP、SNMP、RIP、VoIP等协议
流类型 字节流 消息流
开销 低但高于 UDP 非常低

TCP

  • 源端口号: 标识发送端口

  • 目的端口号: 标识接收端口

  • 序列号: 主要有两个作用

    • 如果 SYN 位被置 1,则此为最初的序列号。实际的第一个数据字节的序列号和相应的 ACK 中确认的序列号是这个序列号加上 1。
    • 如果 SYN 位被清 0,那么这是当前会话的这个段的第一个数据字节的累积序列号。
  • 确认号: 如果设置了 ACK 标志,那么该字段的值就是 ACK 发送方期望的下一个序列号。

  • 数据偏移: 以 4 字节为单位计算出的数据段开始地址的偏移量。TCP 头的最小大小为 20 个字节,最大大小为 60 个字节,因此该值最小值为 5,最大值为 15。当该值大于 5 时,就需要在 选项 字段中添加内容。

  • 保留: 留将来使用,必须置 0

  • 标志符

    • NS: 显式拥塞通知(Explicit Congestion Notification,ECN)是对 TCP 的扩展,定义于 RFC 3540(2003)。ECN 允许拥塞控制的端对端通知而避免丢包。ECN 为一项可选功能,如果底层网络设施支持,则可能被启用 ECN 的两个端点使用。
    • CWR: Congestion Window Reduced,定义于 RFC 3168(2001)。
    • ECE: ECN-Echo 有两种意思,取决于 SYN 标志的值,定义于 RFC 3168(2001)。
    • URG: 为 1 表示高优先级数据包,紧急指针字段有效。
    • ACK: 为 1 表示确认号字段有效
    • PSH: 为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满。
    • RST: 为 1 表示出现严重差错。可能需要重新创建 TCP 连接。还可以用于拒绝非法的报文段和拒绝连接请求。
    • SYN: 为 1 表示这是连接请求或是连接接受请求,用于创建连接和使顺序号同步
    • FIN: 为 1 表示发送方没有数据要传输了,要求释放连接。
  • 窗口大小: 接收窗口的大小,它指定了这个段的发送者目前愿意接收的窗口大小单位(默认是以字节为单位)的数量。

  • 校验和: TCP 头 + 数据 + IP 伪报头计算的校验和。IP 伪报头由源 IP 地址、目的 IP 地址、TCP 协议的协议号组成。完整的计算内容如下所示:

    IP 伪报头仅用于计算校验和,不传输。伪头中的 TCP 长度(字节为单位)不含伪头本身。 下面在来看个实例:

    关于为何 Wireshark 抓取的 TCP 报文为何出现大量校验和错误,参见 Wireshark 官网解释。

  • 紧急指针: 如果设置了 URG 标志,那么该字段是表示最后一个紧急数据字节的序号的偏移量,否则,该字段固定为 0。

  • 选项: 以 4 字节为单位,最多 40 个字节。该字段的长度和数据偏移字段的值相关。该部分又由三个字段组成:

    • Option-Kind: 固定占 1 字节,表示选项的类型,该字段是必须的。根据 Option-Kind 值,后面两个字段内容可变。Option-Kind 的分配由 IANA 维护。
    • Option-Length: 如果存在该字段,则固定占 1 字节,表示该选项的总长度(Option-Kind + Option-Length + Option-Data)。
    • Option-Data: 包含与该选项相关的数据(如果有数据的话),长度根据 Option-Kind 不同而变化。

    注意,这里其实是个列表,可以包含上面多个 Option-Kind + Option-Length + Option-Data 的组合。 如下图是 Wireshark 抓取一个报文示例:

  • 填充: 如果 TCP 头长度不是 32 对齐的,则需要在头尾部用 0 进行填充。

UDP

  • 源端口号: 标识发送者使用的端口号,如果(IPv4 和 IPv6 中)不使用,则应为零。
  • 目标端口号: 标识接收者使用的端口号,并且是必需的。
  • 报文长度: 指定 UDP 标头和 UDP 数据的长度(以字节为单位)。最小长度为 8 个字节,即头的长度。字段大小将 UDP 数据报的理论限制设置为 65535 字节(8 字节标头 + 65527 字节数据)。但是,底层 IPv4 协议对数据长度的实际限制为 65507 字节(65535 字节 − 8 字节 UDP 标头 − 20 字节 IP 标头)。
  • 校验和: 这里的校验和是 UDP 头 + 数据 + IP 伪报头 计算的校验和。该字段在 IPv4 中是可选的,在 IPv6 中是必需的。如果未使用,该字段将全为零。用于计算校验和的方法在 RFC 768 中定义,而 RFC 1071 给出了一个更高效的计算方法。要计算的整个内容如下图所示:
    IP 伪报头仅用于计算校验和,不传输。伪头中的 UDP 长度(字节为单位)不含伪头本身。 下面在看个示例:

ARP

  地址解析协议 (ARP) 用于发现与给定的互联网层地址(通常是 IPv4 地址)关联的链路层地址(如 MAC 地址)。于 1982 年由 RFC 826 定义。IPv4 使用地址解析协议(ARP)将 IP 地址解析成相应的数据链路地址(MAC 地址),而 IPv6 则采用邻居发现协议(NDP)。

  • 协议地址: 就是 IP 地址。
  • 目标硬件地址:在不知道目标硬件地址时,通常这里全部填写 00,Ethernet II 帧中 MAC 为全 FF。

  在每台安装有 TCP/IP 协议的电脑或路由器里都有一个 ARP 缓存表,表里的 IP 地址与 MAC 地址是一对应的。当首次不知道目标硬件地址时,就需要发送 ARP 广播(Ethernet II 帧中 MAC 为全 FF),所有设备都会收到有 ARP 广播,但是只有符合条件(协议地址一致的)的设备就会进行应答:

  地址解析协议是一种请求-响应协议。ARP 请求是广播的,ARP 回复是单播,且它在单个网络的边界内进行通信,从不跨互联节点进行路由。下面是 Wireshark 抓取的 ARP 请求-响应帧:

ICMP

  互联网控制消息协议(Internet Control Message Protocol,ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。IPv4 中的 ICMP被称作 ICMPv4(RFC 792),IPv6 中的 ICMP 则被称作 ICMPv6(RFC 4443)。

  • 类型和代码: 类型标识生成的错误报文,代码进一步划分 ICMP 的类型,用来查找产生错误的原因。类型及代码的定义见下表(部分):
  • 校验和: 用于进行错误检查,该校验和是从 ICMP 头和以该字段替换为 0 的数据计算得出的。
  • 剩余部分: 以 4 字节为单位,理论值是 0 ~ 65507(IP 长度限制),但实际内容根据 ICMP 类型和代码而有所不同。

  ICMP 主要被用于网络设备之间(如两台路由器)进行消息传递,除了 traceroute 和 ping(其实就是 traceroute 的简化版)之外,计算机用户一般不会直接使用到该协议。

  在互联网层上运行的 IP 协议是一种无连接协议。 因此,如果 IP 数据包传输失败,则无法检测到失败,ICMP 就负责跟踪 IP。ICMP 通常被认为是 IP 的一部分(分担了 IP 纠错功能),虽然与其他上层协议一样,ICMP 消息也包含在标准 IP 数据包中,但 ICMP 消息通常作为特殊情况进行处理。

Ping

  Ping 命令通过指定目标 IP 地址发送 Ping 请求,如果可以到达该目标,则向源返回 Ping 响应。它是 ICMP 的一个典型应用,使用就是 ICMP 的 Echo Request (Type 8) 和 Echo Reply (Type 0)。

  其中数据可以填充任意内容,一般都是 4 的整数倍。且 Reply 的内容与 Request 是一样的。下面是 Windows 的 Ping 和 Ubuntu 的 Ping 对比情况:

参考

  1. https://en.wikipedia.org/wiki/Protocol_Wars
  2. https://www.geeksforgeeks.org/differences-between-tcp-and-udp/
  3. https://en.wikipedia.org/wiki/Internet_protocol_suite
  4. https://codeburst.io/understanding-tcp-internals-step-by-step-for-software-engineers-system-designers-part-1-df0c10b86449
  5. https://en.wikipedia.org/wiki/Ethernet_frame
  6. https://www.cnblogs.com/feitian629/archive/2012/11/16/2774065.html
  7. https://www.cnblogs.com/smartjourneys/articles/8124490.html
  8. https://www.ibm.com/support/pages/ethernet-version-2-versus-ieee-8023-ethernet
  9. https://www.cnblogs.com/smartjourneys/articles/8124490.html
  10. https://www.cnblogs.com/qishui/p/5437301.html
  11. https://en.wikipedia.org/wiki/EtherType
  12. https://zh.wikipedia.org/wiki/IPv4
  13. https://www.techtarget.com/searchnetworking/tutorial/Routing-First-Step-IP-header-format
  14. https://en.wikipedia.org/wiki/Transmission_Control_Protocol
  15. https://www.tspweb.com/key/%E4%BA%92%E8%81%94%E7%BD%91%E5%8D%8F%E8%AE%AE%E5%9C%B0%E5%9D%80%E5%AE%9A%E4%BD%8D.html
  16. https://www.practicalnetworking.net/series/arp/traditional-arp/
  17. https://fasionchan.com/network/icmp/icmp/
  18. https://blog.51cto.com/ccieh3c/4886604

Network 之五 TCP/IP 协议族、工作流程、常用协议格式相关推荐

  1. OSI 模型 TCP/IP 各层的作用以及协议 vlan的三种端口 (交换部分二)

    目录 OSI模型 OSI各层的作用 各层的协议 数据通信 物理层的主要功能 网卡 中继器 集线器 数据链路层功能 数据链路层协议 以太网概述 以太网地址(MAC地址) 数制概念 网络层作用 协议 IP ...

  2. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  3. TCP/IP第二章笔记链路层协议

    二.链路层 2.1 引言 链路层由三个目的: 主要为IP模块发送和接受IP数据包: 为ARP模块发送请求和接受ARP应答: 为RARP发送RARP请求和接收RARP应答: TCP/IP协议支持不同的链 ...

  4. 又白又菜study:《TCP/IP 详解 :卷1 协议》

    Introduction: TCP/IP 协议族能够让电脑之间互相通信: TCP/IP 历史: 起源于20世纪60年代由政府出资研究的项目分组交换网络: 20世纪90年代,演变成计算机之间最广泛使用的 ...

  5. TCP/IP四层模型及各层协议首部详述

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

  6. 《TCP IP 详解卷1:协议》阅读笔记 - 第十章

    阅读须知:笔记为阅读<TCP IP 详解卷1:协议>后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别 ...

  7. 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  8. 《TCP/IP详解卷1:协议》第3章 IP:网际协议(2)-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  9. TCP/IP四层模型及各层协议首部详述(包含IOS7层)

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

最新文章

  1. OBJC依赖库管理利器cocoapods 安装及使用详细图解
  2. 【SURF+GTM】基于SURF特征提取,GTM去除错误配准点的图像匹配算法的MATLAB仿真
  3. 信息系统项目管理师-项目采购管理知识点
  4. java spring 校验框架_Springboot 使用校验框架validation校验
  5. boost::contract模块实现friend功能的测试程序
  6. 大厂面试官最喜欢问的面试难点
  7. 巨省显存的重计算技巧在TF、Keras中的正确打开方式
  8. mysql 傻瓜式管理_傻瓜式教学【数据库管理工具Navicat】
  9. oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表
  10. Mysql 远程登陆配置
  11. 博时基金的大数据平台建设之道
  12. java jackson注意_Jackson注意事项
  13. linux可运行的steam游戏吗,Steam现在可以在Linux上玩仅Windows游戏
  14. 烘培赛道的2021:资本重押下,老字号向左,新秀向右?
  15. Promise 与 RXJS的区别
  16. Ubuntu设置开机自启动
  17. echarts基本用法
  18. 基于YOLOv7的室内场景智能识别系统(源码&教程)
  19. 实验7-3-3 统计大写辅音字母(15 分)
  20. orb-slam系列 LoopClosing线程 DetectLoop(十)

热门文章

  1. JavaScript正则替换去除字符串中特殊字符
  2. RequiredFieldValidator----验证控件不起作用
  3. Java删除文件和目录
  4. 【LeetCode】70 - Climbing Stairs
  5. nginx随机变换图片服务器网址来防止盗链
  6. MapInfo之格式说明(转载)
  7. sts(eclipse)安装svn插件
  8. Linux parted分区工具使用示例
  9. 基于Docker本地运行k8s(单节点)
  10. Rust:集所有语言之大成者