TCP/IP 协议就是传输洋葱?一文带你深入了解

  • 时间:
  • 浏览:87
  • 来源:言午博客 - 专注共享福佳博客活动

一、 计算机网络体系底部形态分层

计算机网络体系底部形态分层

计算机网络体系底部形态分层

不难 看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序运行”。

二、 TCP/IP 基础

1. TCP/IP 的具体含义

从字面意义上讲,那么了人肯能会认为 TCP/IP 是指 TCP 和 IP 两种生活协议。实际生活当中有 时也我我觉得而是指一点种生活协议。然而在一点状况下,它而是利用 IP 进行通信时所都要用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。没那么了人与 TCP 或 IP 的关绑紧密,是互联网必不可少的组成偏离 。TCP/IP 一词泛指什么协议,而且,有时也称 TCP/IP 为网际协议群。

互联网进行通信时,都要相应的网络协议,TCP/IP 时候而是为使用互联网而开发制定的协议族。而且,互联网的协议而是 TCP/IP,TCP/IP 而是互联网的协议。

网际协议群

2. 数据包

包、帧、数据包、段、消息

以上一个多术语都用来表述数据的单位,大致区分如下:

  • 包还也能说是全能性术语;
  • 帧用于表示数据链路层中包的单位;
  • 数据包是 IP 和 UDP 等网络层以上的分层中包的单位;
  • 段则表示 TCP 数据流中的信息;
  • 消息是指应用协议中数据的单位。

每个分层中,完整性都是对所发送的数据附加时候首部,在一点首部中中有 了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的淬硬层 看,从上一层收到的包完整性都被认为是本层的数据。

数据包首部

网络中传输的数据包由两偏离 组成:一偏离 是协议所要用到的首部,另一偏离 是上一层传过来的数据。首部的底部形态由协议的具体规范完整性定义。在数据包的首部,明确标明了协议应该怎么才能 才能 读取数据。反过来说,看得人首部,也就也能了解该协议必要的信息以及所要避免的数据。包首部就像协议的脸。

3. 数据避免流程

下图以用户 a 向用户 b 发送邮件为例子:

数据避免流程

① 程序运行运行避免

首先程序运行运行会进行编码避免,什么编码离米 OSI 的表示层功能;

编码转化后,邮件不一定马上被发送出去,一点何时建立通信连接何时发送数据的管理功能,离米 OSI 的会话层功能。

② TCP 模块的避免

TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现一点功能,都要在应用层数据的前端附加时候 TCP 首部。

③ IP 模块的避免

IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做另一方的数据,并在 TCP 首部的前端打上去另一方的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。

④ 网络接口(以太网驱动)的避免

从 IP 传过来的 IP 包对于以太网来说而是数据。给什么数据附打上去以太网首部并进行发送避免,生成的以太网数据包将通过物理层传输给接收端。

⑤ 网络接口(以太网驱动)的避免

主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断否是为发送给另一方的包,若完整性都是则丢弃数据。

肯能是发送给另一方的包,则从以太网包首部中的类型选用数据类型,再传给相应的模块,如 IP、ARP 等。这里的例子则是 IP 。

⑥ IP 模块的避免

IP 模块接收到 数据后也做这类的避免。从包首部中判断此 IP 地址否是与另一方的 IP 地址匹配,肯能匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。

另外吗,对于有路由器的状况,接收端地址往往完整性都是另一方的地址,此时,都要借助路由控制表,在调查应该送往的主机或路由器时候再进行转发数据。

⑦ TCP 模块的避免

在 TCP 模块中,首先会计算一下校验和,判断数据否是被破坏。而且检查否是在按照序号接收数据。最后检查端口号,选用具体的程序运行运行。数据被完整性地接收时候,会传给由端口号识别的程序运行运行。

⑧ 程序运行运行的避免

接收端程序运行运行会直接接收发送端发送的数据。通过解析数据,展示相应的内容。

三、传输层中的 TCP 和 UDP

  • TCP/IP 中有 时候具有代表性的传输层协议,分别是 TCP 和 UDP。
  • TCP 是面向连接的、可靠的流协议。流而是指不间断的数据底部形态,当程序运行运行采用 TCP 发送消息时,我我觉得还也能保证发送的顺序,但还是犹如不难 任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。
  • UDP 是不具有可靠性的数据报协议。细微的避免它会交给上层的应用去完成。在 UDP 的状况下,我我觉得还也能确保发送消息的大小,却不到保证消息完整性都是到达。而且,应用有完整性都是根据另一方的都要进行重发避免。
  • TCP 和 UDP 的优缺点无法简单地、绝对地去做比较:TCP 用于在传输层有必要实现可靠传输的状况;而在一方面,UDP 主要用于什么对高速传输和实时性有较高要求的通信或广播通信。TCP 和 UDP 应该根据应用的目的按需使用。

1. 端口号

数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者用来识别同一链路中不同的计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。在传输层完整性都是一点这类于地址的概念,那而是端口号。端口号用来识别同一台计算机中进行通信的不同程序运行运行。而且,它也被称为程序运行地址。

1.1 根据端口号识别应用

一台计算机上同时还也能运行多个程序运行。传输层协议正是利用什么端口号识别本机中正在进行通信的程序运行运行,并准确地将数据传输。

通过端口号识别应用

1.2 通过 IP 地址、端口号、协议号进行通信识别

  • 仅凭目标端口号识别某时候通信是远远过低的。


通过端口号、IP地址、协议号进行通信识别

  • ① 和② 的通信是在两台计算机上进行的。它们的目标端口号相同,完整性都是30。这还也也能根据源端口号加以区分。
  • ③ 和 ① 的目标端口号和源端口号完整性相同,但它们所那么了人的源 IP 地址不同。
  • 此外,当 IP 地址和端口号一点一样时,没那么了人还还也能通过协议号来区分(TCP 和 UDP)。

1.3 端口号的选用

  • 标准既定的端口号:一点土方法也叫静态土方法。它是指每个程序运行运行完整性都是其指定的端口号。但并完整性都是说还也能随意使用任何时候端口号。这类 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号而是固定的。什么端口号被称为知名端口号,分布在 0~1023 之间;除知名端口号之外,还有一点端口号被正式注册,它们分布在 1024~49151 之间,不过什么端口号可用于任何通信用途。
  • 时序分配法:服务器有必要选用监听端口号,而且接受服务的客户端没必要选用端口号。在一点土方法下,客户端程序运行运行完整性还也能不想另一方设置端口号,而全权交给操作系统进行分配。动态分配的端口号范围在 49152~65535 之间。

1.4 端口号与协议

  • 端口号由其使用的传输层协议决定。而且,不同的传输层协议还也能使用相同的端口号。
  • 此外,什么知名端口号与传输层协议并无关系。假如端口一致都将分配同两种生活程序运行运行进行避免。

2. UDP

  • UDP 不提供复杂化的控制机制,利用 IP 提供面向无连接的通信服务。
  • 而且它是将程序运行运行发来的数据在收到的那一刻,立即按照原样发送到网络上的两种生活机制。即使是一直出现网络拥堵的状况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 此外,传输途中一直出现丢包,UDP 而是负责重发。
  • 甚至当包的到达顺序一直出现乱序时而是难 纠正的功能。
  • 肯能都要以上的细节控制,不得不交由采用 UDP 的程序运行运行去避免。
  • UDP 常用于一下几条方面:1.包总量较少的通信(DNS、SNMP等);2.视频、音频等多媒体通信(即时通信);3.限定于 LAN 等特定网络中的应用通信;4.广播通信(广播、多播)。

3. TCP

  • TCP 与 UDP 的区别相当大。它充分地实现了数据传输时各种控制功能,还也能进行丢包时的重发控制,还还也能对次序乱掉的分包进行顺序控制。而什么在 UDP 中都不难 。
  • 此外,TCP 作为两种生活面向有连接的协议,不到在确认通信对端地处时才会发送数据,从而还也能控制通信流量的浪费。
  • 根据 TCP 的什么机制,在 IP 一点无连接的网络上也也能实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。

3.1 三次握手(重点)

  • TCP 提供面向有连接的通信传输。面向有连接是地处数据通信结束了了时候先做好两端之间的准备工作。
  • 所谓三次握手是指建立时候 TCP 连接时都要客户端和服务器端总共发送时候包以确认连接的建立。在socket编程中,一点过程由客户端执行connect来触发。

下面来看看三次握手的流程图:

三次握手

  • 第一次握手:客户端将标志位SYN置为1,随机产生时候值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状况,在等待服务器端确认。
  • 第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生时候值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状况。
  • 第三次握手:客户端收到确认后,检查ack否是为J+1,ACK否是为1,肯能正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack否是为K+1,ACK否是为1,肯能正确则连接建立成功,客户端和服务器端进入ESTABLISHED状况,完成三次握手,时候客户端与服务器端之间还也能结束了了传输数据了。

3.2 四次挥手(重点)

四次挥手即终止TCP连接,而是指断开时候TCP连接时,都要客户端和服务端总共发送时候包以确认连接的断开。在socket编程中,一点过程由客户端或服务端任一方执行close来触发。

肯能TCP连接是全双工的,而且,每个方向都都要要单独进行关闭,一点原则是当一方完成数据发送任务后,发送时候FIN来终止一点方向的连接,收到时候FIN而是愿因一点方向上不难 数据流动了,即不想再收到数据了,而且在一点TCP连接上仍然也能发送数据,直到一点方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

下面来看看四次挥手的流程图:

四次挥手

  • 中断连接端还也能是客户端,也还也能是服务器端。
  • 第一次挥手:客户端发送时候FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状况。意思是说"我客户端不难 数据要发时候了",而且肯能你服务器端还有数据不难 发送完成,则并不急着关闭连接,还也能继续发送数据。
  • 第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,而且我还没准备好,请继续你等我的消息。一点时候客户端就进入FIN_WAIT_2 状况,继续在等待服务器端的FIN报文。
  • 第三次挥手:当服务器端选用数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状况。
  • 第四次挥手:客户端收到FIN=N报文后,就知道还也能关闭连接了,而且他还是不相信网络,怕服务器端我那么了乎 要关闭,一点发送ack=N+1后进入TIME_WAIT状况,肯能Server端不难 收到ACK则还也能重传。服务器端收到ACK后,就知道还也能断开连接了。客户端在等待了2MSL后依然不难 收到回复,则证明服务器端已正常关闭,那好,我客户端也还也能关闭连接了。最终完成了四次握手。
  • 里边是一方主动关闭,另一方被动关闭的状况,实际中完整性都是一直出现同时发起主动关闭的状况,

具体流程如下图:

同时挥手

3.3 通过序列号与确认应答提高可靠性

  • 在 TCP 中,当发送端的数据到达接收主机时,接收端主肯能返回时候已收到消息的通知。一点消息叫做确认应答(ACK)。当发送端将数据发出以完整性都是在等待对端的确认应答。肯能有确认应答,说明数据肯能成功到达对端。反之,则数据丢失的肯能性很大。
  • 在一定时间内不难 在等待到确认应答,发送端就还也能认为数据肯能丢失,并进行重发。由此,即使产生了丢包,仍然也能保证数据也能到达对端,实现可靠传输。
  • 未收到确认应答并不愿因数据一定丢失。完整性都是肯能是数据对方肯能收到,而是返回的确认应答在途中丢失。一点状况也会愿因发送端误以为数据不难 到达目的地而重发数据。
  • 此外,完整性都是肯能肯能一点一点愿因愿因确认应答延迟到达,在源主机重发数据时候才到达的状况也屡见不鲜。此时,源主机假如按照机制重发数据即可。
  • 对于目标主机来说,反复收到相同的数据是不可取的。为了对上层应用提供可靠的传输,目标主机都要放弃重复的数据包。为此没那么了人引入了序列号。
  • 序列号是按照顺序给发送数据的每时候字节(8位字节)都标上号码的编号。接收端查询接收数据 TCP 首部中的序列号和数据的长度,将另一方下一步应该接收的序列号作为确认应答返送回去。通过序列号和确认应答号,TCP 也能识别否是肯能接收数据,又也能判断否是都要接收,从而实现可靠传输。

序列号和确认应答

3.4 重发超时的选用

  • 重发超时是地处重发数据时候,在等待确认应答到来的那个特定时间间隔。肯能超过一点时间仍未收到确认应答,发送端将进行数据重发。最理想的是,找到时候最小时间,它能保证“确认应答一定能在一点时间内返回”。
  • TCP 要求不论地处何种网络环境下完整性都是提供高性能通信,而且无论网络拥堵状况地处何种变化,都都要保持一点底部形态。为此,它在每次发包时完整性都是计算往返时间及其偏差。将一点往返时间和偏差时间相加,重发超时的时间而是比一点总和要稍大一点的值。
  • 在 BSD 的 Unix 以及 Windows 系统中,超时都以0.5秒为单位进行控制,而且重发超时完整性都是0.5秒的整数倍。不过,最初其重发超时的默认值一般设置为6秒左右。
  • 数据被重发时候若还是收不到确认应答,则进行再次发送。此时,在等待确认应答的时间肯能以2倍、4倍的指数函数延长。
  • 此外,数据而是会被无限、反复地重发。达到一定重发次数时候,肯能仍不难 任何确认应答返回,就会判断为网络或对端主机地处了异常,强制关闭连接。而且通知应用通信异常强行终止。

3.5 以段为单位发送数据

  • 在建立 TCP 连接的同时,也还也能选用发送数据包的单位,没那么了人也还也能称其为“最大消息长度”(MSS)。最理想的状况是,最大消息长度正好是 IP 中不想被分片避免的最大数据长度。
  • TCP 在传送少量数据时,是以 MSS 的大小将数据进行分割发送。进行重发时也是以 MSS 为单位。
  • MSS 在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在 TCP 首部中写入 MSS 选项,告诉对方另一方的接口也能适应的 MSS 的大小。然完整性都是在两者之间选用时候较小的值投入使用。

3.6 利用窗口控制提高传输速率

  • TCP 时候来段为单位,每发送时候段进行一次确认应答的避免。时候的传输土方法有时候缺点,而是包的往返时间越长通信性能就越低。
  • 为避免一点问提报告 ,TCP 引入了窗口一点概念。确认应答不再是以每个分段,而是以更大的单位进行确认,转发时间肯能被大幅地缩短。也而是说,发送端主机,在发送了时候段时候并并不一直在等待确认应答,而是继续发送。如下图所示:

窗口控制

  • 窗口大小而是指不想在等待确认应答而还也能继续发送数据的最大值。上图中窗口大小为时候段。一点机制实现了使用少量的缓冲区,通过对多个段同时进行确认应答的功能。

3.7 滑动窗口控制

滑动窗口

  • 上图中的窗口内的数据即便不难 收到确认应答也还也能被发送出去。不过,在整个窗口的确认应答不难 到达时候,肯能其中偏离 数据一直出现丢包,不难 发送端仍然要负责重传。为此,发送端主机都要设置缓存保留什么待被重传的数据,直到收到没那么了人的确认应答。
  • 在滑动窗口以外的偏离 包括未发送的数据以及肯能确认对端已收到的数据。当数据发出后若如期收到确认应答就还也能不想再进行重发,此时数据就还也能从缓存区清除。
  • 收到确认应答的状况下,将窗口滑动到确认应答中的序列号的位置。以还也也能顺序地将多个段同时发送提高通信性能。一点机制也别称为滑动窗口控制。

3.8 窗口控制中的重发控制

在使用窗口控制中, 一直出现丢包一般分为两种生活状况:

① 确认应答未能返回的状况。在一点状况下,数据肯能到达对端,是不都要再进行重发的,如下图:

偏离 确认应答丢失

② 某个报文段丢失的状况。接收主机肯能收到时候另一方应该接收的序列号以外的数据时,会针对当前为止收到数据返回确认应答。如下图所示,当某一报文段丢失后,发送端会一直收到序号为301的确认应答,而且,在窗口比较大,又一直出现报文段丢失的状况下,同时候序列号的确认应答肯能被重复不断地返回。而发送端主机肯能连续3次收到同时候确认应答,就会将其对应的数据进行重发。一点机制比时候提到的超时管理更加高效,而且也被称为高速重发控制。

高速重发控制

四、网络层中的 IP 协议

  • IP(IPv4、IPv6)离米 OSI 参考模型中的第3层——网络层。网络层的主要作用是“实现终端节点之间的通信”。一点终端节点之间的通信也叫“点对点通信”。
  • 网络的下一层——数据链路层的主要作用是在互连同两种生活数据链路的节点之间进行包传递。而一旦跨不要 种数据链路,就都要借助网络层。网络层还也能跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。
  • IP 大致分为三大作用模块,它们是 IP 寻址、路由(最终节点为止的转发)以及 IP 分包与组包。

1. IP 地址

1.1 IP 地址概述

  • 在计算机通信中,为了识别通信对端,都要要有时候这类于地址的识别码进行标识。在数据链路中的 MAC 地址正是用来标识同时候链路中不同计算机的两种生活识别码。
  • 作为网络层的 IP ,完整性都是一点地址信息,一般叫做 IP 地址。IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。而且,在 TCP/IP 通信中所有主机或路由器都要设定另一方的 IP 地址。
  • 不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。
  • IP 地址(IPv4 地址)由32位正整数来表示。IP 地址在计算机内内外部以二进制土方法被避免。然而,肯能没那么了人并不习惯于采用二进制土方法,没那么了人将32位的 IP 地址以每8位为一组,分成4组,每组以 “.” 隔开,再将每组数转打上去十进制数。如下:

1.2 IP 地址由网络和主机两偏离 标识组成

如下图,网络标识在数据链路的每个段配置不同的值。网络标识都要保证相互连接的每个段的地址不相重复。而相同段内相连的主机都要有相同的网络地址。IP 地址的“主机标识”则不允许在同时候网段内重复一直出现。由此,还也能通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的 IP 地址完整性都是会相互重叠。即 IP 地址具有了唯一性。

IP地址的主机标识

如下图,IP 包被转发到途中某个路由器时,正是利用目标 IP 地址的网络标识进行路由。肯能即使不看主机标识,假如一见到网络标识就能判断出否是为该网段内的主机。

IP地址的网络标识

1.3 IP 地址的分类

  • IP 地址分为一个多级别,分别为A类、B类、C类、D类。它根据 IP 地址中从第 1 位到第 4 位的比特列对其网络标识和主机标识进行区分。
  • A 类 IP 地址是首位以 “0” 开头的地址。从第 1 位到第 8 位是它的网络标识。用十进制表示语录,0.0.0.0~127.0.0.0 是 A 类的网络地址。A 类地址的后 24 位离米 主机标识。而且,时候网段内可容纳的主机地址上限为16,777,21时候。
  • B 类 IP 地址是前两位 “10” 的地址。从第 1 位到第 16 位是它的网络标识。用十进制表示语录,128.0.0.0~191.255.0.0 是 B 类的网络地址。B 类地址的后 16 位离米 主机标识。而且,时候网段内可容纳的主机地址上限为65,53时候。
  • C 类 IP 地址是前三位为 “110” 的地址。从第 1 位到第 24 位是它的网络标识。用十进制表示语录,192.0.0.0~223.255.255.0 是 C 类的网络地址。C 类地址的后 8 位离米 主机标识。而且,时候网段内可容纳的主机地址上限为25时候。
  • D 类 IP 地址是前四位为 “1110” 的地址。从第 1 位到第 32 位是它的网络标识。用十进制表示语录,224.0.0.0~239.255.255.255 是 D 类的网络地址。D 类地址不难 主机标识,常用于多播。
  • 在分配 IP 地址时关于主机标识有一点都要注意。即要用比特位表示主机地址时,不到能完整性为 0 或完整性为 1。肯能完整性为 0 不到在表示对应的网络地址或 IP 地址不到能获知的状况下才使用。而完整性为 1 的主机通常作为广播地址。而且,在分配过程中,应该打上去一点种生活状况。这也是为什么么 C 类地址每个网段最多不到有 254( 28 - 2 = 254)个主机地址的愿因。

1.4 广播地址

  • 广播地址用于在同时候链路中相互连接的主机之间发送数据包。将 IP 地址中的主机地址偏离 完整性设置为 1,就成了广播地址。
  • 广播分为本地广播和直接广播两种生活。在本网络内的广播叫做本地广播;在不同网络之间的广播叫做直接广播。

1.5 IP 多播

  • 多播用于将包发送给特定组内的所有主机。肯能其直接使用 IP 地址,而且而是地处可靠传输。
  • 相比于广播,多播既还也能穿透路由器,又还也能实现只给什么必要的组发送数据包。请看下图:

IP 多播

  • 多播使用 D 类地址。而且,肯能从首位结束了了到第 4 位是 “1110”,就还也能认为是多播地址。而剩下的 28 位还也能成为多播的组编号。
  • 此外, 对于多播,所有的主机(路由器以外的主机和终端主机)都要属于 224.0.0.1 的组,所有的路由器都要属于 224.0.0.2 的组。

1.6 子网掩码

  • 现在时候 IP 地址的网络标识和主机标识已不再受限于该地址的类别,而是由时候叫做“子网掩码”的识别码通过子网网络地址细分出比 A 类、B 类、C 类更小粒度的网络。一点土方法实际上而是将时候 A 类、B 类、C 类等分类中的主机地址偏离 用作子网地址,还也能将原网络分为多个物理网络的两种生活机制。
  • 子网掩码用二进制土方法表示语录,也是时候 32 位的数字。它对应 IP 地址网络标识偏离 的位完整性为 “1”,对应 IP 地址主机标识的偏离 则完整性为 “0”。由此,时候 IP 地址还也能不再受限于另一方的类别,而是还也能用时候的子网掩码自由地定位另一方的网络标识长度。当然,子网掩码都而是 IP 地址的首位结束了了连续的 “1”。
  • 对于子网掩码,目前有两种生活表示土方法。第两种生活是,将 IP 地址与子网掩码的地址分别用两行来表示。以 172.20.30.52 的前 26 位是网络地址的状况为例,如下:

第二种表示土方法是,在每个 IP 地址里边追加网络地址的位数用 “/ ” 隔开,如下:

2. 路由

发送数据包时所使用的地址是网络层的地址,即 IP 地址。然而仅仅有 IP 地址还过低以实现将数据包发送到对端目标地址,在数据发送过程中还都要这类于“指明路由器或主机”的信息,以便真正发往目标地址。保存一点信息的而是路由控制表。

该路由控制表的形成土方法有两种生活:两种生活是管理员手动设置,另两种生活是路由器与一点路由器相互交换信息时自动刷新。前者也叫做静态路由控制,而后者叫做动态路由控制。

IP 协议始终认为路由表是正确的。而且,IP 两种生活并不难 定义制作路由控制表的协议。即 IP 不难 制作路由控制表的机制。该表示由时候叫做“路由协议”的协议制作而成。

2.1 IP 地址与路由控制

  • IP 地址的网络地址偏离 用于进行路由控制。
  • 路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
  • 在发送 IP 包时,首不难 选用 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下时候路由器。肯能路由控制表中地处多条相同网络地址的记录,就选用时候最为吻合的网络地址。

路由控制表与 IP 包发送

3. IP 分包与组包

  • 偏离 数据链路的最大传输单元(MTU)完整性都是尽相同,肯能每个不这类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。
  • 任何一台主机完整性都是必要对 IP 分片进行相应的避免。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行避免。
  • 经过分片时候的 IP 数据报在被重组的时候,不到由目标主机进行。路由器我我觉得做分片但不想进行重组。

3.1 路径 MTU 发现

  • 分片机制完整性都是它的过低。如路由器的避免负荷加重这类。而且,假如允许,是不希望由路由器进行 IP 数据包的分片避免的。
  • 为了应对分片机制的过低,“路径 MTU 发现” 技术应运而生。路径 MTU 指的是,从发送端主机到接收端主机之间不都要分片是最大 MTU 的大小。即路径中地处的所有数据链路中最小的 MTU 。
  • 进行路径 MTU 发现,就还也能避免在中途的路由器上进行分片避免,也还也能在 TCP 中发送更大的包。

4. IPv6

  • IPv6(IP version 6)是为了根本避免 IPv4 地址耗尽的问提报告 而被标准化的网际协议。IPv4 的地址长度为 4 个 8 位字节,即 32 比特。而 IPv6 的地址长度则是时候的 4 倍,即 128 比特,一般写成 8 个 16 位字节。

4.1 IPv6 的特点

  • IP 得知的扩大与路由控制表的聚合。
  • 性能提升。包首部长度采用固定的值(40字节),不再采用首部检验码。复杂化首部底部形态,减轻路由器负担。路由器不再做分片避免。
  • 支持即插即用功能。即使不难 DHCP服务器也还也能实现自动分配 IP 地址。
  • 采用认证与加密功能。应对伪造 IP 地址的网络安全功能以及避免线路窃听的功能。
  • 多播、Mobile IP 成为扩展功能。

4.2 IPv6 中 IP 地址的标记土方法

  • 一般没那么了人将 128 比特 IP 地址以每 16 比特为一组,每组用冒号(“:”)隔开进行标记。
  • 而且肯能一直出现连续的 0 时还还也能将什么 0 省略,并用时候冒号(“::”)隔开。而且,时候 IP 地址中只允许一直出现一次时候连续的冒号。

4.3 IPv6 地址的底部形态

IPv6 这类 IPv4,也是通过 IP 地址的前几位标识 IP 地址的种类。

在互联网通信中,使用两种生活全局的单播地址。它是互联网中唯一的时候地址,不都要正式分配 IP 地址。

4.4 全局单播地址

全局单播地址是指世界上唯一的时候地址。它是互联网通信以及各个域内内外部通信中最为常用的时候 IPv6 地址。

格式如下图所示,现在 IPv6 的网络中所使用的格式为,n = 48,m = 16 以及 128 - n - m = 64。即前 64 比特为网络标识,后 64 比特为主机标识。

全局单播地址

4.5 链路本地单播地址

链路本地单播地址是地处同时候数据链路内唯一的地址。它用于不经过路由器,在同时候链路中的通信。通常接口 ID 保存 64 比特版的 MAC 地址。

链路本地单播地址

4.6 唯一本地地址

  • 唯一本地地址是不进行互联网通信时所用的地址。
  • 唯一本地地址我我觉得不想与互联网连接,而且也会尽肯能地随机生成时候唯一的全局 ID。
  • L 通常被置为 1
  • 全局 ID 的值随机决定
  • 子网 ID 是指该域子网地址
  • 接口 ID 即为接口的 ID


唯一本地地址

4.7 IPv6 分段避免

  • IPv6 的分片避免只在作为起点的发送端主机上进行,路由器不参与分片。
  • IPv6 中最小 MTU 为 1230 字节,而且,在嵌入式系统中对于什么有一定系统资源限制的设备来说,不都要进行“路径 MTU 发现”,而是在发送 IP 包时直接以 1230 字节为单位分片送出。

4.8 IP 首部(暂略)

5. IP 协议相关技术

  • IP 旨在让最终目标主机收到数据包,而且在一点过程中仅仅有 IP 是无法实现通信的。都要还有也能解析主机名称和 MAC 地址的功能,以及数据包在发送过程中异常状况避免的功能。

5.1 DNS

  • 没那么了人平常在访问某个网站时不适用 IP 地址,而是用一串由罗马字和点号组成的字符串。而一般用户在使用 TCP/IP 进行通信时而是使用 IP 地址。也能时候做是肯能有了 DNS (Domain Name System)功能的支持。DNS 还也能将那串字符串自动转换为具体的 IP 地址。
  • 一点 DNS 不仅适用于 IPv4,还适用于 IPv6。

5.2 ARP

  • 假如选用了 IP 地址,就还也能向一点目标地址发送 IP 数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个 IP 地址所对应的 MAC 地址。
  • ARP 是两种生活避免地址问提报告 的协议。以目标 IP 地址为线索,用来定位下时候应该接收数据分包的网络设备对应的 MAC 地址。不过 ARP 只适用于 IPv4,不到用于 IPv6。IPv6 中还也能用 ICMPv6 替代 ARP 发送邻居探索消息。
  • RARP 是将 ARP 反过来,从 MAC 地址定位 IP 地址的两种生活协议。

5.3 ICMP

  • ICMP 的主要功能包括,确认 IP 包否是成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体愿因,改善网络设置等。
  • IPv4 中 ICMP 仅作为时候辅助作用支持 IPv4。也而是说,在 IPv4 时期,即使不难 ICMP,仍然还也能实现 IP 通信。然而,在 IPv6 中,ICMP 的作用被扩大,肯能不难 ICMPv6,IPv6 就无法进行正常通信。

5.4 DHCP

  • 肯能逐一为每一台主机设置 IP 地址会是非常繁琐的事情。怪怪的是在移动使用笔记本电脑、不到终端以及平板电脑等设备时,每移动到时候新的地方,完整性都是重新设置 IP 地址。
  • 于是,为了实现自动设置 IP 地址、统一管理 IP 地址分配,就产生了 DHCP(Dynamic Host Configuration Protocol)协议。有了 DHCP,计算机假如连接到网络,就还也能进行 TCP/IP 通信。也而是说,DHCP 让即插即用变得肯能。
  • DHCP 不仅在 IPv4 中,在 IPv6 中也还也能使用。

5.5 NAT

  • NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。
  • 除转换 IP 地址外,还一直出现了还也能转换 TCP、UDP 端口号的 NAPT(Network Address Ports Translator)技术,由此还也能实现用时候全局 IP 地址与多个主机的通信。
  • NAT(NAPT)实际上是为正在面临地址枯竭的 IPv4 而开发的技术。不过,在 IPv6 中为了提高网络安全也在使用 NAT,在 IPv4 和 IPv6 之间的相互通信当中常常使用 NAT-PT。

5.6 IP 隧道



夹着 IPv4 网络的时候 IPv6 网络

  • 如上图的网络环境中,网络 A 与网络 B 之间无法直接进行通信,为了让它们之间正常通信,这时都要得采用 IP 隧道的功能。
  • IP 隧道还也能将什么从网络 A 发过来的 IPv6 的包统合为时候数据,再为之追加时候 IPv4 的首部时候转发给网络 C。
  • 一般状况下,紧接着 IP 首部的是 TCP 或 UDP 的首部。然而,现在的应用当中“ IP 首部的里边还是 IP 首部”肯能“ IP 首部的里边是 IPv6 的首部”等状况与日俱增。一点在网络层的首部里边追加网络层首部的通信土方法就叫做“ IP 隧道”。

【编辑推荐】

【责任编辑:

武晓燕

TEL:(010)68476306】



点赞 0