计算机网络协议基础知识
1. 网络层次划分
以实现不同厂商生产的计算机间的通信兼容性,从而促进更大范围内的计算机网络构建。国际标准化组织于1978年发布了"开放系统互联参考模型"(Open System Interconnection/Reference Model),即著名的OSI/RM模型。该模型将计算机网络体系结构的通信协议划分为七个层次:底层(Layer 1)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer)。其中第四层负责数据传输功能。
此外,在网络分层划分方法中,常用的还有TCP/IP四层协议体系以及其扩展版本的TCP/IP五层协议体系。两者之间的对应关系如上图所示

2. OSI七层网络模型
TCP/IP协议可被视为互联网运行的核心机制,在没有任何该协议支持的情况下,无法实现网络通信。在各种网络操作中必不可少。无论是基于OSI七层架构的不同实现(如四层或五层设计),每个层级都有特定的协议负责其功能以及与其他层级的信息交互。基于OSI七层架构进行系统分析时,默认会遵循这一严格的分层划分原则。从下至上的逐层解析能够清晰展示各层级之间的协调关系及其作用机制。

1)物理层(Physical Layer)
启动、持续与停止通信端点间的机械属性、电气性质以及功能性质等四个维度。这个物理层为此上层协议提供了可靠的数据传输介质。简单来说,在此层次中保证原始数据可以在各种物理介质中传输。该层次存储了两个关键设备名称:中继器(Repeater或Amplifier)与集线器(HUB)。
2)数据链路层(Data Link Layer)
以下是一些关键知识点
以下是一些关键知识点
1 > 数据链路层向网络层可靠地传输数据;
2> 采用帧作为基本的数据单位;
3> 主要使用的通信协议:以太网协议;
4> 关键设备的名称包括网桥和交换机。
3)网络层(Network Layer)
网络层的主要职责是负责两个端系统之间的高效数据传递 ,其核心功能涵盖了寻址与路由选择机制以及通信连接的建立与管理等环节。通过提供这一系列服务保障了传输层无需深入了解底层网络的具体数据传输机制和技术细节。掌握网络层的关键点在于记住"路径规划与逻辑寻址"这两个核心概念。
在网络体系结构中,网络层包含了大量的关键协议,其中最为核心的是TCP/IP模型中的IP协议——互联网 Protocol (IP) 。相较于其他复杂的技术细节,IP 协议相对较为基础,它仅提供一种不可靠的数据分组传输服务,无需建立持续性的通信连接即可完成信息传递任务。
IP 协议的主要功能包括以下几个方面:一是支持无连接的数据分组传输;二是负责分组数据包的目的地定位;三是执行差错检测与控制等关键操作。为了实现这些基本功能,网络中还配合了其他相关组件:如地址解析机制中的 ARP 协议用于设备地址转换,RARP 协议则负责反向地址解析以便于多网段间的通信支持ICMP 协议在错误报告与响应处理方面发挥重要作用,最后IGMP 协议则用于管理网络内的组广播信息传播这些组件共同构成了支持高效互联的基础架构
1> 网络层承担着对不同子网之间的数据包进行路径选择的任务。除了路由选择外, 网络层还可实现流量控制和全球通信等技术;
2> 基本的数据单元是基于IP的数据包;
3> 包含的主要协议如下:
- IP 协议(Internet Protocol, 因特网互联protocol),主要用于建立和管理互联网上的通信;
- ICMP 协议(Internet Control MessageProtocol, 因特网控制message protocol),用于处理网络错误和错误报告;
- ARP 协议(Address ResolutionProtocol, 地址解析protocol),帮助计算机发现可用的网络接口及其地址;
- RARP 协议(Reverse Address ResolutionProtocol, 逆地址解析protocol),支持局域net中的反向address解析功能。
4> 关键设备包括路由器。
4)传输层(Transport Layer)
第一个端到端,即主机到主机的层次 。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。
有关网络层的重点:
1> 传输层的任务是将上层的数据按块分割,并为实现可靠或不可靠的数据传送以及进行差错检测与流量管理而承担相应的功能;
2>主要涉及的技术包括:
TCP协议(基于可靠链路交换的技术)、
UDP协议(基于无连接的数据包交换);
3> 关键设备包括路由器或其他网络节点。
5)会话层
会话层负责创建、管理和关闭进程之间的会话关系;同时通过在数据中设置校验点来实现数据同步功能。
6)表示层
表示层通过对上层数据或信息的变换完成了对一个主机应用层信息的传达以便另一个主机的应用程序能够理解。表示层的数据转换涵盖了多种数据处理技术手段包括加密压缩以及格式转换等。
7)应用层
支持操作系统和网络应用接入网络服务的接口
1 数据传输的核心单元是报文;
2 所包含的主要协议为:
FTP(文件传送)、Telnet(远程登录);
DNS(域名解析);
SMTP(邮件传送);
POP3(邮局);
HTTP (超文本传输)。
3. IP地址
1)网络地址
IP地址包含网络部分(包括子网部分)以及主机部分。其主机号全部为零。它代表了所有连接的设备。
2)广播地址
广播地址一般称为直接广播地址,其主要目的是为了区分受限广播地址。
在广播地址中,主机号全为1。
若将消息发送至某网络的广播地址,则该网络内的所有主机均可接收该消息。
3)组播地址
D class addresses are specifically designed for multicast services.
让我们回顾一下A、B、C、D四类 address 的区别:
传统的 A 型 address 开始于 0 字节序列的第一个字节作为网络号码段落为 64-bit 的 A 类别 IP 地址范围包括从 ······
典型的 B 型 address 则采用前两个字节作为网络号码段落其有效范围是从 ······
经典的 C 型 address 使用前三个字节指定网络号码段其有效IP 地址覆盖了 ······
而 D 类 address 则采用前四位字节中的特定模式(即 111x)来标识 multicast 网络段其有效IP 地址覆盖了 ······
特别的是 D 类 address 被专门用于组播通信(单播到多播模式);
E 类 address 则采用了全四字节掩码的方式(即 ······
值得注意的是,A、B、C三类 address 具备明确的网络号码与主机号码划分而 D与E两类则不具备此类划分
4)255.255.255.255
该IP地址属于受限 broadcasts 的范畴。
其主要特点是受限 broadcast 地址仅限于本地网络使用。
路由器不会转发目标为受限 broadcast 地址的数据包。
而普通 broadcast 地址则具有更强的传播能力。
它可以实现本地发送并跨网段传播。
例如:
普通数据包通常可在本地发送并跨网段传播。
注:
普通的 broadcast 地址(direct broadcast address)能够通过某些 routers(当然不是所有的 routers),而 limited 的 broadcast 地址不能通过 router 传输。
5)0.0.0.0
常用于确定本机IP地址 ,例如在RARP、BOOTP和DHCP协议家族中 ,当一个无盘机拥有未知 IP 地址时 ,它会将目标 IP 地址设置为 255.255.255.255 ,并发送请求分组至本地网络(即被路由器封禁的范围内)以获取本机 IP 地址 。
6)回环地址
该网络掩码127\.0\.0\.0/8被用作回环地址,在网络中通常表示本地主机的IP地址,在测试本地主机性能时经常使用该接口配置。其中使用频率最高的是127\.0\.0\.1
7)A、B、C类私有地址
该网络实体(network entity)亦被称为专用实体(generic entity),其特征在于不被全球通用而仅限于本地区域内使用。
其中:
- A类网络实体对应网络标识为10.x.x.x/8;
- B类网络实体对应网络标识为172.x.x.x/12;
- C类网络实体对应网络标识为192.168.x.x/16。
这些网络标识的具体应用范围分别是: - A类网络标识涵盖范围为:从IP号段头端点至尾端点均为十进制表示的数值形式给出;
- B类网络标识涵盖范围为:从IP号段头端点至尾端点均为十进制表示的数值形式给出;
- C类网络标识涵盖范围为:从IP号段头端点至尾端点均为十进制表示的数值形式给出。
4. 子网掩码及网络划分
随着互联网应用的范围不断扩大
在进行网络分段的情况下充分利用IP地址。通过提取主机号高位部分来确定子网号,并调整子网掩码以实现扩大或缩减从而为特定类型的IP地址创造更多的细分网络。然而,在创建更多子网上每个 subnet 的可用 host IP 地址数量将较之前有所减少。
什么是子网掩码?
子网掩码用于判断两个IP地址是否属于同一个子网,并且同样采用32位二进制表示。每一位为1则表示该位置为网络部分。而IP地址也采用点式十进制表示法。当两个IP地址与 subnet mask 进行按位与运算后结果相同时,则表明它们共属同一网络。
当处理子网掩码问题时
子网掩码的计算
对于无需进一步划分网络的情况下的一般性IP地址而言,在这种特殊情况下其实现方式较为简便:例如一个 B 类 IP 地址如 10.x.y.z,则可以直接根据定义即可确定其 subnet mask 是 27(二进制全1)。例如一个 B 类 IP 地址如 169.x.y.z,则 subnet mask 设定为 28(二进制全1)。同样地如果是 C 类 IP 地址则 subnet mask 设定为 29(二进制全1),其他情况依此类推不再赘述。重点在于介绍如何根据一个 IP 地址及其高位主机位确定相应的 subnet mask 值以及对应的网络号和主机号分配方案的具体步骤与方法。具体而言我们需要将高位主机位作为新的网络号部分而将低位主机位作为新的主机号部分这样的分隔方式能够实现对原有 IP 地址空间的有效扩展从而实现所需的 subnet 划分功能。
1)利用子网数来计算
第一步是将需要划分的数量转换为二进制形式;
第二步是确定该IP地址对应的类别型网络掩码;
第三步是确定该IP地址对应的类别型网络掩码;然后将主机部分前N位设置为全'1'以生成划分子网络所需的最终掩码值
最后通过应用上述计算方法即可得到最终所需的分组策略
2)利用主机数来计算
如需划分B类IP地址168.195.0.0为若干子网,并使每个子网容纳70台计算机:
步骤说明:
步骤说明:
步骤说明:
步骤说明:
步骤说明:
另一种类型的题目需要根据每个网络中的主机数量来规划子网地址并计算相应的子网掩码值这些计算同样遵循前述的原则
比如一例子网内配置了十台主机,则该子网所需IP地址总数为:十加一加一加一等于十二个
即255.255.255.224
5. ARP/RARP协议
基于IP地址的物理地址解析协议——ARP(Address Resolution Protocol)是典型的TCP/IP协议家族成员之一
ARP工作流程举例:
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程 :
(1)根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
(2)如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
(3)主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
(4)主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
(5)当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
反向地址解析协议、简称RARP
RARP协议工作流程:
(1)向主机发送一个本地RARP广播,在该广播包中声明本地MAC地址并指示任何接收到此广播的数据报的所有RARP服务器分配相应的IP;
(2)本地网段上的RARP服务器接收到此广播后会遍历自身的RARP表查找对应 MAC 地址下的有效 IP;
(3)若能寻得对应IP,则会将响应数据包发送给源主机并将其供对方主机使用以建立通信连接;
(4)若无对应IP可用,则自然不会作出回应;
(5)源主机接收到有效的响应信息后会利用获取到的有效 IP 地址与另一台主机建立通信连接;若长时间未收到有效回应信息则表示初始化失败。
6. 路由选择协议
常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议 :
该协议基于贝尔曼-福特算法运行,在路径评估中采用 hop 计数作为度量标准(metric),其中 hop 表示节点之间的连接次数。系统设定的最大 hop 数值为 15 跳,在此限制下无法接受超过 15 跳的数据包传输请求。
OSPF协议 :
OSPF网络协议其基础采用Dijkstra算法,并作为基于链路状态 routing protocol运行。该协议通过综合考虑网络中的带宽和延迟两个参数进行计算以确定最优路径。
7.TCP/IP协议
TCP/IP 协议是 Internet 的核心协议和互联网互连网络的基础结构,在网络层使用 IP 协议执行数据传输,在传输层则采用 TCP 协议作为通信机制。从非技术角度来看,在出现任何数据传输问题时会发送通知以指示问题所在,并要求重传直至所有数据已安全且正确地送达目的地。其中 IP 负责将因特网上的每一台联网设备分配独特的标识符或地址信息。
网络接口(如以太网设备驱动程序)驱动程序会向下一层次——网络接口(如以太网设备驱动程序)传递过来的数据报;然后将这些报送到更高的层次——TCP或者UDP;反之亦然,在TCP/UDP这一高层中接收的数据报也会被转发至较低一层进行处理。然而,在这种情况下所传递过来的数据报并不具备可靠性保证功能;因为没有机制能够确认其是否按照顺序传输或者是否存在损坏等问题。
TCP是一种基于连接的通信协议,在建立端到端通信的过程中需要经过三步协商以创建关联关系。当通信完成时必须断开相关连接以便释放资源以避免潜在冲突。由于其设计特点使得仅适用于两端之间的通信模式。该协议通过提供一种可靠的实时数据传输服务来保证信息在传输过程中的准确性和完整性。为了实现这一目标TCP采用了滑动窗口机制作为流量控制手段其中窗口大小实际上代表接收方当前能够处理的数据量从而限制发送速率以防止拥塞的发生
TCP报文首部格式:

TCP协议的三次握手和四次挥手:

注释:seq
TCP连接建立过程:
在客户端发起连接请求报文,在服务器端接收到该请求后响应ACK报文,并为其分配通信资源。当客户端接收到服务器的ACK确认后,它会再次发送确认信息给服务器,并完成资源分配工作;这样一来,完整的TCP通信连接也就形成了。
TCP连接断开过程:
当客户端发送FIN报文时,在TCP协议中这是中断连接的一种方式。服务器接收到FIN报文后表示客户端"已无剩余数据待传输";然而如果还有数据未被发送完毕,则无需立即关闭socket;建议先发送ack,“通知客户端我的请求已收悉但我尚未准备好,请继续等待我的消息 ”;此时客户端会切换到FIN_WAIT状态并持续等待server发来的FIN报文;一旦server确认所有数据已传输完毕随后发送FIN报文,“告知客户端我已经处理完毕并准备断开连接了 ”;client接收到fin响应后会切换到close_wait状态并在等待server确认前应坚持等待回复;若 server未及时ack则需重新重传;而一旦 client获得成功ack则表明 server 已经准备好了断开连接;随后 client便可以放心地关闭连接;在此过程中如果客户持续等待超过2毫秒(MSL)却仍未得到 server 的回应则可推断 server 已经正常断开连接至此 tcp连接也就完成了关闭流程。
为什么要三次握手?
在仅有两次"握手"的场景下,当Client试图与Server建立连接时,由于数据包在传输过程中可能被丢弃而导致Client必须重新发送请求以完成连接过程。此时Server端仅接收到一条请求就可正常建立连接。然而,在某些情况下 Client的重传请求并非因数据丢失导致而是由于网络拥塞导致某个节点出现阻塞从而产生了两个独立的响应链路 Server最终将接收并处理这两个请求但客户端连续多次发送数据可能导致 Server等待多个响应从而造成资源的巨大浪费 为了防止这种情况的发生 采用三次握手机制能够有效减少此类问题的发生频率因此该机制具有重要的意义
为什么要四次挥手?
假如你是客户端,请详细说明具体步骤如下:
- 第一步操作是关闭不再发送任何数据包给服务器端;静默等待服务器响应;
- 尽管你在客户端不再发送数据包了;但因为此前双方已保持良好的通信连接;因此在断开连接的过程中还需要确保服务器端停止主动的数据传输并等待客户端确认;
- 其实说白了就是确保整个通信过程能够顺利完成!
使用TCP协议的具体类型包括:File Transfer Protocol (FTP)、Remote Terminal Access Protocol (Telnet)、Simple Mail Transfer Protocol (SMTP)、Passive FTP (POP3)以及HyperText Transfer Protocol (HTTP)等。
8. UDP协议
UDP用户数据报协议,是面向无连接的通讯协议 ,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询—应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。
每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
(1)源端口号;
(2)目标端口号;
(3)数据报长度;
(4)校验值。
使用UDP协议包括:
SFP(Simple File Transfer Protocol); SNMP(Simple Network Management Protocol); DNS(Domain Name System); NFS(Network File Sharing Protocol); BOOTP
TCP 与 UDP 的区别:
TCP是面向连接的,可靠的字节流服务;
UDP是面向无连接的,不可靠的数据报服务。
代码解读
9. DNS协议
DNS是Domain Name System (DNS)的全称,在这一系统中按照层级结构组织并命名计算机及网络服务。它的主要功能即在于将用户提供的统一资源定位符(URL)映射至对应的互联网上的主机或服务。通常由一系列由点号分隔的单词或其缩写构成的字符串来表示一个特定的服务位置信息。每个域名都唯一对应一个国际标准网路地址(IPv4或IPv6),在互联网中存在一对一的映射关系。DNS实际上承担着解析这些域名并将其指向相应主机的任务。而DNS命名则广泛应用于基于TCP/IP协议族的各种互联网环境中,并使得用户能够轻松地通过易于记忆和书写的名字定位到所需的服务和设备
10. NAT协议
NAT(Network Address Translation)属于接入广域网(WAN)技术的一种核心机制,在网络安全领域具有重要地位。其本质是将私有地址转化为合法IP地址的过程,并广泛应用于多种类型的互联网接入架构以及各类复杂的网络系统中。
主要原因在于NAT不仅可以有效解决IP资源短缺的问题,并且能够通过巧妙的设计实现对外部潜在威胁的有效阻挡功能;同时通过将内部设备的通信流量隐匿起来的方式实现了对内部网络资源的安全保护作用。
11. DHCP协议
Dynamic Host Configuration Protocol (dhcp) 作为一种局域网中的网络协议 使用UDP来进行传输操作,并具有两大主要功能:一是为内部网络或由供应商提供的网络服务自动分配IP地址;二是作为对所有计算机进行集中管理的手段。
12. HTTP协议
超文本数据传输协议 (Hypertext Data Transfer Protocol, HDT),也被称为超媒体传输协议(HMT),是互联网上应用最为广泛的互联网网络协议之一。大多数Web页面都遵循这一规范。
HTTP 协议包括哪些请求?
GET 协议用于定位并读取网络上的指定资源。
POST 请求通常用于向服务器提交数据或创建新的资源记录。
PUT 请求允许客户端更新指定位置上的资源内容或保存文件到服务器存储库中。
DELETE 请求则用于从服务器上删除已确认存在的特定资源或文件。
HTTP 中, POST 与 GET 的区别
1)Get是从服务器上获取数据,Post是向服务器传送数据。
2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。
4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
I. 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
II. 幂等 的意味着对同一URL的多个请求应该返回同样的结果。
更详细的区别参考:
13. 一个举例
在浏览器中输入 www.baidu.com 后执行的整个过程如下:
客户端浏览器通过DNS解析得到www.baidu.com对应的IP地址220.181.27.48,并以此IP地址确定客户端至目标服务器的路径。随后客户端向该IP地址发送了一个HTTP连接请求。
在传输层阶段,客户端将HTTP请求拆分为多个报文段,并附加必要的端口信息(如发送方端口和接收方端口)。其中客户端随机选择一个端口(如5000)与服务器进行通信连接,并由服务器返回相应的响应数据给定端口(如80)。
在网络层阶段,在未使用应用层和传输层的情况下,默认由网络层负责根据路由表确定最短路径以达到目标服务器的过程较为简单直接(无需过多细节)。
链路层阶段则负责将数据包转发至相关路由器并完成MAC地址转换工作(通过邻居协议查询对应MAC),最终使得数据包能够顺利到达目标服务器。
