《部署IPv6网络(修订版)》一2.4 邻居发现协议

简介:

本节书摘来自异步社区《部署IPv6网络(修订版)》一书中的第2章,第2.4节,作者【美】Ciprian Popoviciu , Eric Levy-Abegnoli , Patrick Grossetete,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 邻居发现协议

部署IPv6网络(修订版)
大约在10年以前,RFC 1970初步设计并公布了IPv6邻居发现。从那时之后在RFC 2461中进行了修改,一个新的版本(重点在改错而不是修改)是在RFC 2461bis中进行的。一些扩展已经在反向邻居发现(RFC 3122)、缺省路由器选择(RFC 4191)和自动配置(RFC 2462)中描述。

在这10年当中,Internet团体的重点发生了重大转变,原来没有得到很多关注的领域,如安全性和移动性,现在是大多数努力的重点。该重点的转变导致了许多扩展、修正和相互影响,这在许多RFC和Internet草案中作了描述:在MIPv6中的移动性扩展(RFC 3775)、在安全邻居发现中的安全特征(SEND)(RFC 3971)、检测网络连接(DNA)(RFC 4135)、网络访问的携带认证协议(PANA)(RFC 4058)和优化的DAD(draft-ietf-ipv6-optimistic-dad)。

当连接到相同链路时,IPv6 NDP为路由器和主机运行提供了许多集成的关键特征。这些特征中的某些特征,如地址解析和重定向,在IPv4中出现过,但分别在不同的具体协议如ARP和ICMP中重定向。其他特征——如前缀发现和邻居不可达性检测——是新的,虽然有些可以使用IPv4中的其他方式也能做到。表2-12列出这些特征和在IPv4中的对应特征。

image

NDP以不同方式应用到主机和路由器。依据前面列表中的特征,表2-13试图将主机和路由器角色分开。

image

IPv6 ND和其相应的IPv4协议组(ARP、IPCP等)之间的本质差别之一是,在IP协议栈中的位置不同。虽然IPv4相同链路相关的协议在ARP/RARP(正好在链路层之上)和ICMP(运行于IP之上)之间分割,而IPv6 ND完全在ICMPv6之内实现。图2-20重点突出了协议栈之间的差别。
image

ND在协议栈中的位置,其原因是多方面的,但如果仅有一个原因应该提出的话,那就是简单性。如果能够避免的话,为什么要将地址解析作为一个特例(在IPv4中的ARP和RARP)?当是ICMP内部,而不是与IP并列时,这种特性能够从IP所提供的任何服务中受益,包括安全性(认证头部)、多播等。

为了确保NDP中各种功能的安全,安全邻居发现引入了一组特定的ND选项,它们用来保护NDP消息。虽然在回顾IPv6时没有深入讨论这些选项的细节,但您可以参考RFC 3971获得SEND的更多信息。

2.4.1 协议操作总结

NDP使链路上的每个节点能够运行ND,建立必要的做出正确判定的知识,这些知识在发送IPv6分组到一个邻居时用到。这种知识代表了从路由器和节点接收到的公告的汇总。这些公告可以是请求的或非请求的。这种信息存储在由节点维护的下列列表中:

在线IPv6地址和相应的链路层地址列表;
邻居状态(可达的,不可达的);
特定主机:
在线前缀列表;
在线路由器列表;
缺省路由器列表(乐意成为缺省路由器的在线路由器)。
为了得到上述信息,在NDP中用到下列消息:

路由器请求(RS);
路由器公告(RA);
邻居请求(NS);
邻居公告(NA);
重定向;
反向邻居请求(INS);
反向邻居公告(INA)。
NDP直接位于IPv6/ICMP之上产生了一系列值得澄清的问题。

当进行匹配的一个给定目的地址的链路层地址不知道时,寻求该关联的节点必须将其请求发送到更广大的侦听节点。在IPv4中,使用MAC层广播做到这点。在IPv6中,节点在这个请求中使用多播。使用的多播组是被请求节点多播组(具有链路本地范围),如2.1节所描述。

注释:

注意当知道一个前缀的链路层地址之后,邻居请求可能再次发送,以确认关联信息(IP地址,链路层地址)。在此情况下,请求直接单播到目的地。
当一个节点使用NDP获得其自己的地址时(参见“自动配置”部分),出现了另一个问题。它需要用于其请求的一个源地址,但还没有这样的地址。在这样的情况下,它能够将IPv6非指定地址(::)用做分组的SA。

鉴于地址解析消息发送到被请求节点多播地址(具有链路本地范围),其他NDP消息则意图到达所有节点或所有路由器。同时,SA可能是发送者的一个全局的或链路本地地址:后者总是优先使用,以最小化节点对重新编址的依赖。下面是所有特殊地址的列表,在NDP消息交换中节点能够将之用做源和目的地地址:

所有节点多播地址(FF02::1,目的地);
所有路由器多播地址(FF02::2,目的地);
被请求节点多播地址(目的地);
链路本地地址(源或目的地);
非指定地址(::,源)。
最后,IPv6节点使用两个算法来处理通过NDP搜集的信息:

下一跳确定算法;
缺省路由器选择。

2.4.2 与IPv4的比较

在相应的IPv4协议之上,IPv6 NDP提供了许多功能提升,如下所示:

路由器发现成为协议的不可分割部分,使主机能够确定它们的缺省路由器。
在ND消息中插入了附加信息,如MTU或链路层地址,这减少了链路上需要的信息交换数量,却取得IPv4中相同的结果。下面是一些示例:
在RA消息中携带路由器的链路层地址。因此链路上的所有节点,在没有任何额外的消息流的情况下,知道了这个地址;
目标链路层地址,插入在重定向消息中,为接收者(被重定向的)节省了任何额外的地址解析信息交换;
MTU,在RA中携带,使链路上的所有节点使用一致的MTU。
地址解析使用多播组(被请求节点多播地址),内嵌目标地址的一部分。因此,大多数情况下可能只有少数(大部分时间仅有目标地址所有者)节点将被这个地址解析请求打断。将此与IPv4 ARP比较,其中除了广播(链路层广播)地址解析请求(因为ARP直接位于链路层之上)之外别无他法。人们希望解析链路层地址的IPv6方法将使拥有大量主机的子网更具有管理性,其方式是通过大量限制链路层广播范围,以使主机软件层能够处理。
有些新的功能是基本协议的一部分,如地址自动配置和邻居不可达性检测,简化了配置并提高了分组分发的鲁棒性。
路由器公告和重定向消息以链路本地地址形式携带路由器地址,这使在主机中的路由器关联信息对重新编址(针对全局前缀)更具有鲁棒性。在IPv4中,当网络每次更改其寻址机制时,在主机上的缺省网关信息必须修改。
地址解析位于ICMP之上,使之在ND消息中可能使用标准的IP认证和安全机制。在IPv4的ARP中不存在这样的机制。

2.4.3 路由器和前缀发现

路由器发现使主机能够定位邻接(在线)的路由器,并学习和地址配置相关的前缀和参数。

为路由器和前缀发现定义了两条消息:路由器请求(RS)消息和路由器公告(RA)消息。

通过在每个接口发送RA,路由器周期性地公告自身(引入一点随机性以避免同步,这可能会出现在某些时间段内没有路由器被公告的情况发生)。这些非请求RA发送到所有节点“链路本地范围多播地址”(FF02::1)。除了提供路由器地址外,RA能够包含主机执行下一跳判定的有用信息,如下所示:

缺省路由器的候选路由器列表(参见“缺省路由器选择”部分所描述的算法)。
应该用于自动配置的参数(参见“自动配置”部分)。
在线前缀列表(参见2.4.8小节),该信息使路由器发现消息在前缀发现过程中非常有用。
RA消息也能作为来自主机请求(RS)的一个响应发送。这个选项在移动性中证明非常有用,用来加速自动配置。这些被请求的RA或者发往所有节点地址或发往RS的主机的单播地址。由于RS请求来自在线路由器的一个响应,典型情况下它发往所有路由器多播组。图2-21给出了一个被请求的和一个非请求的RA信息交换的流程。

image

注释:

在一种被请求的RA情况下,当RS没有提供任何IPv6 SA时(典型情况是依靠RA自动配置自身的主机),RA响应发送到所有节点。
图2-22给出一个简单示例,其中一台Cisco路由器(Valbonne)发送周期性的RA给一台主机(主机1)。接口配置是灰色的,打开了NDP排错,debug输出显示在RA流程下面。

image

图2-22显示了和RA流程交织在一起的debug跟踪信息。

show ipv6 routers命令在Cisco路由器上用来显示从其他在线路由器接收到的RA信息。仅有1台路由器发送RA,仅有1台主机将之安装到它们的数据库(译者注:路由数据库)中。因此在图2-22的配置中,这条命令仅适用于主机1(在主机模式中的一台Cisco路由器)。例2-10显示了该命令的输出。

例2-10 从主机角度来看被公告的路由器
image

2.4.4 地址解析

邻居请求和邻居公告分组用来执行几个关键的节点操作:

链路层地址解析;
重复地址检测(DAD);
邻居不可达性检测(NUD)。
DAD和NUD在下一小节中描述。ND链路层解析提供了与IPv4中ARP类似的服务,虽然使用的方法有些不同。

为IPv6地址解析定义了两条ICMPv6消息:邻居请求(NS)消息和邻居公告(NA)消息。NS是请求并包含目标(被请求的)IPv6地址。NA是响应且包含了匹配接口的链路层地址。

当一个节点得知一个特定的下一跳或目的IPv6地址在线时(参见2.4.8小节的“下一跳判定”部分),它在确定的链路上发送一条NS,以获得匹配IPv6地址的链路层地址。预期的响应是一条NA。

NS是到被请求节点多播组的多播分组,内嵌了被请求IPv6地址的右面24位。潜在地存在多个节点注册到相同的被请求节点多播地址,该地址的“拥有者”是其中一个。拥有者和多播组的其他成员均收到这个NS,但只有拥有者以NA回答。

注释:

NDP是一种可靠的协议。在大多数链路类型上,这工作得很好,因为“丢失”一条消息(如一条NS或NA)的概率较低。但在无线链路上,这可能成为一个问题。特别地,DAD可能断定一个地址是可以自由使用的,但事实上,NA丢了。
一台主机也能够发送一条非请求的NA。当然节点期望通知链路上的其他节点,通知它的链路层地址发生了变化。非请求的NA发送到所有节点多播地址。

在节点接收到NA之后,断定从其接收到这条信息的邻居是“可达的”。监测可达性是NUD的目的。参见2.4.8小节有关“邻居不可达性检测”和“可达性的状态机”部分以了解细节。图2-23显示出地址解析过程的流程。

在Cisco路由器上,关联(第3层地址,链路层地址)存储在邻居缓存中。在每台路由器上运行命令show ipv6 neighbor,列出邻居缓存的内容。在例2-11中,biot邻居缓存有两个条目与路由器valbonne相关:地址是2001:200::72b和FE80::A8BB:CCFF:FE01:F600。它们列出的是“可达”状态,同时还有相应的链路层地址。

image

2.4.5 将一台主机重定向到一个更合适的下一跳

路由器发送重定向消息,通知主机一个更合适的下一跳,无论是另一台路由器还是最后的目的地自身,它应该在相同链路上。IPv6重定向机制类似于IPv4重定向机制。仅有一条消息,即重定向消息,是获得重定向功能所必要的。它包含更合适下一跳的IP地址和重定向的目的地IP地址。如果更合适下一跳(R2)的链路层地址已知,它能够插入到由发出重定向消息的路由器(R1)所发送的重定向分组中。

注释:

在理论上,前面所描述的过程能够在主机和路由器R2之间节省一次地址解析信息交换。在实际中,这可能受限。路由器R2在某些情况下可能将某些流量路由到主机。如这样做的话,它将需要发起一个NS/NA交换以确定主机的链路层地址。如果主机已经发起过一个寻找R2链路层地址的地址解析流,那么这个流就是不必要的。NS发起者的链路层地址可能确实作为一个选项已经插入到NS分组中。
图2-24显示了重定向消息的流程。

image

2.4.6 反向邻居发现

如前所述,ND为IPv6执行了IPv4中ARP的相同功能。在此上下文中,驱使产生反向ARP协议的类似原因导致对IPv6 ND的扩展,称为IPv6反向邻居发现(IND)。这个扩展的详细内容在RFC 3122中规范。

IPv6 IND使一个节点能够学习已知链路层地址的IPv6地址。为了获得这个信息,它发送请求并接收公告。IND最早是为帧中继网络开发的,但也可以应用到其他具有类似行为的数据链路层技术。两条信息——反向邻居发现请求(INS)和反向邻居发现公告(INA)——已经定义。INS包含源链路层地址和目标链路层地址(发送者意图得到它的IPv6地址)。应答(INA)包含源链路层地址、目标链路层地址和一个目标地址列表。它包含接口的一个或多个IPv6地址列表,该接口由触发INA的INS消息中的目标链路层地址标识。

请注意,在撰写本书之时,在Cisco路由器上不支持RFC 3122。

2.4.7 代理邻居发现

一个IPv4节点具有为不理解子网的主机代理子网(或者被错误配置)或缺省路由器的能力。这项功能有时指代理ARP,在RFC 1027中规范。IPv6没有传承该概念;相反,它要求IPv6主机处理RA并且在非本地流量能够发送之处配置一台缺省路由器。对多数系统而言,代理整个子网可能是不可操作的。它们将接口设置在混杂模式,或所有多播模式以接收所有NS,但是除了可能引发性能问题之外,不是所有系统都支持这些模式。

在一些情况下,对路由器可能证明是有用的,即它代替远离链路的节点,但这些节点不想让其邻居知道它们不在线上。一个典型范例是一个移动节点已经离开链路。为了获得这种有限的代理地址解析功能,路由器必须注册到它想代理的被请求节点多播地址并代替它们应答NS。

2.4.8 邻居发现算法

已经定义了许多ND算法描述主机和路由器在多种运营环境中的预期行为。下面的小节讨论了这些算法。

一、下一跳判定
像在IPv4中一样,一个需要转发分组的节点必须判断目的地是在线还是离线。在后一种情况中,它之后必须找到一个在线邻居(下一跳),该邻居能够将分组转发到目的地。最后,它必须解析在线目的地地址或在线下一跳,将之解析成一个链路层地址。

不像IPv4,一个目的地(或下一跳)能够是在线的,不必转发节点具有匹配目的地址的前缀。如果满足下列情况,节点认为一个地址是在线的:

通过它的链路地址前缀之一它将能被覆盖到;
从那个地址收到一条NA;
从那个地址收到任意ND消息;
它收到一条RA,其中在前缀信息选项中有这个前缀;
它收到一条重定向消息,其目标地址等于那个地址。
用来转发分组的算法在主机和路由器上有不同设置。一台路由器有一个路由选择表和一个邻居缓存(和IPv4的ARP缓存相同)。前者(路由信息库或RIB)包含匹配给定目的地的下一跳(最长匹配);后者包含在线节点的链路层地址,或者是最终目的地或者是下一跳。Cisco路由器也有一个转发表(转发信息库,或FIB),它将RIB更进一步,通过预解析递归表项以加快转发过程。在路由器中,常规路由机制优先于从邻居路由器通过前缀发现或路由器发现机制获得的信息。之后NS/NA消息激活链路层解析。

例2-12显示出图2-24中一台路由器的路由选择表和邻居。

例2-12 在一台IPv6路由器上的路由选择和邻居信息
image

另一方面,在主机上,如路由选择表或路由选择协议等信息是不必要的。

RFC 2461描述了一组在主机中支持下一跳判定的概念性数据结构:

目的地缓存——包含最近有流量转发到的目的地,还有下一跳(邻居)选择用来提供到邻居缓存的连接。这个缓存由从重定向消息获得的信息进行更新。
前缀列表——包含匹配在线地址的前缀列表。这个列表从RA消息构建而来。
缺省路由器列表——包含分组能够发送到的在线路由器列表。
图2-25显示出基于RFC 2461的下一跳判定算法的主机模型。

image

主机首先在目的地缓存中进行搜索,期望搜索到近期发送分组的目的地。如果是,目的地缓存给出使用的下一跳(可能是目的地自身),对邻居缓存的后续搜索可能给出链路层地址。以粗线表示的路径,在确定的流程中将最常用到。如果目的地不在目的地缓存中,将在前缀列表中搜索(由来自RA的信息维护)。作为最后的方法,通过缺省路由器选择从所有在线路由器(通过发送RA获知)中选择一台缺省路由器。

二、缺省路由器选择
这又是一个针对主机的算法。路由器仅依赖于路由选择协议(和路由选择表)做出正确的下一跳判定。

不像IPv4,在一台IPv6主机上不必定义一个缺省网关。主机为转发其流量选择一台路由器作为下一跳的过程,在Internet草案“缺省路由器优先和更具体的路由”中描述。它确定了3种不同类型的主机如下:

A类——忽略缺省路由器优先级以及在RA选项路由信息中的更具体路由的主机。(参见“路由器和前缀发现”部分以了解详细信息)。这些主机简单地运行在RFC 2461中描述的路由器选择算法。基本情况下,A类主机从其缺省路由器列表中(从和主机共享一条链路的路由器收到的RA中构建的)选择一台缺省路由器。如果存在任何可达路由器(依据状态机,称之为可达的;见“可达性状态机”部分),它应倾向于选择之,否则如果存在任何其他在列表中的路由器,则选择之。如果选中的路由器是不可达的,应从列表中的所有其他路由器中按序选择(因此,确保列表上的所有路由器由邻居不可达性检测算法进行探测)。
B类——类似于A类主机,其中缺省路由器列表由RA中接收到的优先级(低、中、高)获得增强。缺省路由器选择能够基于这个优先级而不是基于轮询方式。
C类——实现路由选择表的主机。当它们接收到一条含有多个路由信息选项的RA时,它们安装一条缺省路由::/0,指向发出RA的路由器;它们也安装(或如果生命时间为0就卸载)指向在路由信息选项中发现的前缀路由,出现几次就安装几次。当一台C类主机执行下一跳判定并关于一个离线的目的地查询它的路由选择表时,它首先倾向于选择可达路由器,之后才是不可达路由器;之后它使用最长匹配前缀;再后,它使用路由优先级数值。
注意,不同类型的主机,在接收到相同RA分组时(在链路上的多播),选择缺省路由器时,可能最终作出不同的判定。

注释:

如前所述,链路上的每台路由器可能公告前缀的一个列表,并建议将自己作为缺省路由器。一台双接入的主机可能潜在地从两台或多台路由器接收到不连续的前缀列表,并从一个列表中选择一个前缀用于自动配置,形成一个SA。它之后可能使用这个地址(使用SAS选定)离开子网(译者注:发送分组),通过的路由器是不通告形成这个地址的前缀的。
三、重复地址检测
如在RFC 2462中所描述的,NS和NA消息也用来执行重复地址检测(DAD)。在将所有单播地址配置到一个接口之前,都要对其执行DAD。基本原则是节点发送一条NS,请求一个IPv6地址所有者,仅在没有收到关于此请求的响应时才将地址配置到其自身的一个接口上。

优化的DAD正在建议对现有IPv6 ND(RFC 2461)和无状态地址自动配置(RFC 2462)算法进行修改。其目的是最小化成功情况下的地址配置延迟(被节点选中的地址是唯一的),并在失败情况下尽可能地减少中断时间。优化的DAD仅在自动配置地址情况下执行。它是一个有用的优化,因为对于良好分布的随机地址或从唯一MAC以修改EUI-64格式构建的基于接口ID的地址,DAD成功的几率远高于失败。

注释:

DAD不必在任意播地址上执行,因为从定义角度而言,一个任意播地址属于多个节点。
四、邻居不可达性检测
与一个邻居的通信由于多种原因可能失败。如果到目的地的路径(在链路上)已经出现故障,恢复是可能的。当检测到故障时所触发的恢复机制,依据邻居是否是最终目的地而不同。如果是,应该初始地址解析。否则,应该选择一个不同的下一跳。这就落在了下一跳判定算法范畴(在“下一跳判定”中已解释),其中能够使用两种机制。路由器通常使用它们的路由选择表,而主机运行路由器选择算法(参见“缺省路由器选择”部分)。

邻居不可达性检测(NUD)用来处理检测故障。一个邻居的可达性以两种可能的方式获得。第一种方法是来自于高层的确认,即与这个邻居的通信正在进行(例如,接收到TCP分组确认了以前发送的分组)。第二种方法是接收到一条NA,这是对一条NS的响应,由节点发出用于寻求可达性确认。任何其他方法,例如RA,不能用来确认一个邻居的可达性。除非有新的确认开始,邻居之后保持一段有限时间的可达性。如果确认不是按照时序方式接收到,邻居就被认为是不可达的,恢复机制就发生作用。在ND缓存中的邻居表项的完全状态图在下面详细描述。

五、可达性状态机
邻居缓存维持一个邻居列表,其中流量最近向它们发送过。

图2-26显示出邻居缓存的一个状态图。

在图2-26中,下列事件将产生5个状态之一的状态迁移(INCOMPLETE、REACHABLE、DELAY、STALE和PROBE):

NA1——收到一条Solicited=0(被请求=0)的NA。
NA2——收到一条Solicited=1(被请求=1)的NA。
NA3——收到一条NA,其中Solicited=1(被请求=1)且
Override=1(改写=1);
Override=0(改写=0),链路层地址与缓存的内容相同。
NA4——收到一条NA,其中Solicited=1(被请求=1)、Override=0(改写=0),链路层地址不同于缓存内容。
NA5——收到一条NA,其中Solicited=0(被请求=0)、Override=1(改写=1),链路层地址不同于缓存内容。
O——收到其他ND分组,例如NS、RS、RA、重定向,链路层地址不同于缓存内容。
S——发送分组。
T——超时(注意每个状态有一个定时器,进入状态时开始计时)。
Te——超时且重试次数。
U——高层可达性确认。
image

一个表项的典型生命期示于(以双重方式)图2-26中的状态图中。一个表项是一个IPv6地址和一个链路层地址间的映射。表项创建时状态为INCOMPLETE(链路层地址不可知),这时发送一条NS以获得链路层地址。一旦收到响应(NA),表项就移到REACHABLE状态,并且流量被转发。如果在某个时间段内(通常为30s)路由器看不到邻居流量,表项移到STALE状态。从那里,表项可能直接移回REACHABLE(典型情况下是收到高层可达性确认)或者转到DELAY(如果有分组发送到这个邻居),其中要发送一条新的NS,或者在STALE状态(典型情况以小时计)一段时间之后被删除(在我们的例子中)。

六、自动配置
地址自动配置用来自动为一台主机配置地址。在RFC 2462中规范了地址自动配置。它使用NDP(更具体的是RA)来获得前缀,基于这个前缀构建地址,接着ND(更具体的是NS和NA消息)测试构建的地址是否已经在用。自动配置的缺省机制是无状态的。另外一种机制,即有状态的,能够使用且在RFC 3315中规范。这两种机制在第3章的3.2.1小节中描述。

2.4.9 邻居发现一瞥

表2-14总结了ND信息以备快速查阅。

表2-14 NDP一瞥

image

1SLLA:源链路层地址。

2TLLA:目标链路层地址。

3必要的选项。

IPv6丝毫不限于本章所提到(回顾)的协议。但本章讲到了基础元素(基本协议),为您提供了理解IPv6和IPv4间大多数差异的工具。牢记这些内容,下一章考察IPv6网络服务,这些协议全部构建于IPv6寻址、ICMPv6和邻居发现协议之上。

相关文章
|
24天前
|
数据采集 监控 安全
快速部署:基于Kotlin的公司网络流量控制方案
本文介绍了使用Kotlin构建网络流量控制系统的方案,该系统包括数据采集、分析和自动提交到网站的功能。`TrafficMonitor`类负责监控网络流量,收集流量数据并进行分析,然后通过HTTP POST请求将数据安全提交到指定网站,以实现对公司网络流量的有效管理和安全优化。此方案有助于提升网络安全性和性能,支持数字化业务发展。
65 5
|
1月前
|
JavaScript Linux 区块链
DApp测试网络Ganache本地部署并实现远程连接
DApp测试网络Ganache本地部署并实现远程连接
|
2月前
|
算法 PyTorch 计算机视觉
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
90 1
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
|
1月前
|
网络协议 安全 网络性能优化
7. 构建简单 IPv6 网络
7. 构建简单 IPv6 网络
49 0
|
2天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
3天前
|
存储 网络协议 安全
15.网络协议-Radius协议
15.网络协议-Radius协议
|
3天前
|
存储 网络协议 网络安全
14.网络协议-邮件协议
14.网络协议-邮件协议
|
7天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
20 0
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)