关键词:传输控制协议 IP地址

一、TCP/IP基础

1、TCP/IP协议栈

ip数据包传输过程(通信传输之旅IP基础)(1)

RIP( Routing Information Protocol )路由信息协议

是在一个AS系统中使用地内部路由选择协议,是个非常简单的基于距离向量路由选择的协议。 它路由器生产商之间使用的第一个开放标准,是最广泛的路由协议,在所有IP路由平台上都可以得到。当使用RIP时,一台Cisco路由器可以与其他厂商的路由器连接。

RIP 主要设计来利用同类技术与大小适度的网络一起工作,因此通过速度变化不大的接线连接。RIP 比较适用于简单的校园网和区域网,不适于复杂网络的情况。

RIP有两个版本:RIPv1和RIPv2,它们均基于经典的距离向量路由算法,最大跳数为15跳。

RIP版本1:RIPv1是族类路由(Classful Routing)协议,因路由上不包括掩码信息,所以网络上的所有设备必须使用相同的子网掩码,不支持VLSM。需消耗广域网带宽,消耗CPU、内存资源。

OSPF( Open Shortest Path First,开放最短路径优先)

开放式最短路径优先(Open Shortest Path First,OSPF)协议是一种为IP网络开发的内部网关路由选择协议,由IETF开发并推荐使用。OSPF协议由三个子协议组成:Hello协议、交换协议和扩散协议。其中Hello协议负责检查链路是否可用,并完成指定路由器及备份指定路由器;交换协议完成“主”、“从”路由器的指定并交换各自的路由数据库信息;扩散协议完成各路由器中路由数据库的同步维护

OSPF-分组首部格式

版本 类型 报文长度

源路由器IP地址

区域ID

检验和 身份验证类型

身份验证

OSPF 采用链路状态路由选择技术,开放最短路径优先算法

路由器互相发送直接相连的链路信息和它拥有的到其它路由器的链路信息。每个 OSPF 路由器维护相同自治系统拓扑结构的数据库。从这个数据库里,构造出最短路径树来计算出路由表。当拓扑结构发生变化时, OSPF 能迅速重新计算出路径,而只产生少量的路由协议流量。

此外,所有 OSPF 路由选择协议的交换都是经过身份验证的。

主要优点

收敛速度快;没有跳数限制;

支持服务类型选路

提供负载均衡和身份认证

适用环境

规模庞大、环境复杂的互联网

OSPF协议具有以下优点:

 • OSPF能够在自己的链路状态数据库内表示整个网络,这极大地减少了收敛时间,并且支持大型异构网络的互联,提供了一个异构网络间通过同一种协议交换网络信息的途径,并且不容易出现错误的路由信息。

 • OSPF支持通往相同目的的多重路径。

 • OSPF使用路由标签区分不同的外部路由。

 • OSPF支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信息;并且可以对不同的区域定义不同的验证方式,从而提高了网络的安全性。

 • OSPF支持费用相同的多条链路上的负载均衡。

 • OSPF是一个非族类路由协议,路由信息不受跳数的限制,减少了因分级路由带来的子网分离问题。

 • OSPF支持VLSM和非族类路由查表,有利于网络地址的有效管理

• OSPF使用AREA对网络进行分层,减少了协议对CPU处理时间和内存的需求。

BGP (边界网关协议,Border Gateway Protocol)

是自治系统之间的路由选择协议。BGP用于连接Internet。作为最新的外部网关协议,现有四个版本。

BGP 是唯一一个用来处理像因特网大小的网络协议,也是唯一能够妥善处理好不相关路由域间的多路连接协议。BGPv4是一种外部的路由协议。可认为是一种高级的距离向量路由协议。

在BGP网络中,可以将一个网络分成多个自治系统。自治系统间使用eBGP广播路由,自治系统内使用iBGP在自己的网络内广播路由。

BGP路由选择方法是基于距离向量路由选择

与传统的距离向量(1个单独的度量,如跳数)协议不同,BGP将AS外部路径的度量复杂化。

BGP系统的主要功能是和其他BGP系统交换网络可达信息。网络可达信息包括列出的AS信息。这些信息有效地构造了 AS互联的拓朴图并由此清除了路由环路,同时在 AS级别上可实施策略决策。

  BGP使用可靠的会话管理,TCP中的179端口用于触发Update和Keepalive信息到它的邻居,以传播和更新BGP路由表。

  当运行BGP的两个路由器开始通信以交换动态路由信息时,使用TCP端口179,他们依赖于面向连接的通信(会话)。  BGP必须依靠面向连接的TCP会话以提供连接状态。因为BGP不能使用Keepalive信息(但在普通头上存放有Keepalive信息,以允许路由器校验会话是否Active)。标准的Keepalive是在电路上从一个路由器送往另一个路由器的信息,而不使用TCP会话。路由器使用电路上的这些信号来校验电路没有错误或没有发现电路。

BGP特点: BGP是一种外部路由协议,与OSPF、RIP不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路由。

 BGP通过携带AS路径信息,可以彻底的解决路由循环问题。

 为了控制路由的传播和路由的选择,为路由附带属性信息。

 使用TCP作为其传输层协议,提高了协议的可靠性。端口号179。

 BGP-4支持CIDR(无类别域间选路),CIDR的引入简化了路由聚合,减化了路由表。

 BGP更新时只发送增量路由,减少了BGP传播路由占用的带宽。

 提供了丰富的路由策略。

ip数据包传输过程(通信传输之旅IP基础)(2)

2、TCP/IP协议栈报文封装

ip数据包传输过程(通信传输之旅IP基础)(3)

ip数据包传输过程(通信传输之旅IP基础)(4)

ip数据包传输过程(通信传输之旅IP基础)(5)

源主机的IP包通过一跳一跳的方式接近其目的地,在每一跳都是查看IP头里的目的IP地址,再和路由表进行最长匹配,然后再决定通过哪个接口进行Forwarding,如果需要分片,用IP层来分片只需要读取IP头信息,至于里面传输的是TCP、UDP、ICMP、OSPF、GRE、ESP也不关心,也不需要关心,在IP眼中它们只是IP Payload,于是通过或硬件、或软件硬件结合、或纯粹软件方式来分片。如果用上层来分片,则要关心是UDP、还是TCP、还是其它,然后提交给特定的处理模块来完成分片,一方面增加路由器的复杂度,另一方面效率也很低,路由器在处理IP层以上的高层协议,一般都是采用纯粹软件来完成的吧,那效率会更低!

尽一切可能避免IP的分片!为什么?因为负责IP分片的那台主机、路由器会花费很多CPU资源来处理分片,同时负责重组IP分片的主机、路由器则需要更多的CPU资源来重组这些IP包的分片。比如一台路由器的数据处理能力是10G,如果处理分片则降低到2G左右,这还是比较高端的平台,采用硬件,软件CPU一起协作才达到的水平,如果比较低端的平台,纯粹采用CPU软件来处理,那数据包处理能力简直惨不忍睹!TCP/IP协议的创造者们也知道这一点,那就是避免IP分片,于是采用了各种措施来避免:

ip数据包传输过程(通信传输之旅IP基础)(6)


二、IP编址与路由

1、IP地址

IP 地址定义

IP 地址是一个唯一地址(标识符),用于标识互联网或本地网络上的设备。IP 代表“互联网协议”,它是控制通过互联网或本地网络发送的数据格式的一组规则。

本质上,IP 地址是允许在网络上的设备之间发送信息的标识符:它们包含位置信息,并使设备可进行通信。互联网需要一种区分不同计算机、路由器和网站的方法。IP 地址提供了一种实现此目标的方式,并且是互联网工作原理中的关键组成部分。

每一个IP地址都由网络号和主机号两部分组成,从这个角度讲,IP地址是一个分等级的地址结构。这种分级是有好处的,首先IP地址管理机构在分配IP地址时只分配网络号,主机号由得到该网络号的机构自行分配;其次,路由器仅根据主机所连接的网络号来转发分组,而不考虑主机号,减少路由表的项目数

按照因特网的观点,一个网络是指具有相同网络号net-id的主机的集合

IP地址,标志着一个主机和一条链路的接口,当一个主机同时连接到两个网络时,该主机必须同时具有两个相应的IP地址(路由器就连接在两个不同的网络上)

什么是 IP?

IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。

IP 地址不是随机的。它们由互联网号码分配局 (IANA)(互联网名称与数字地址分配机构 (ICANN) 的一个部门)以数学方式生成和分配。ICANN 是一个非营利组织,于 1998 年在美国成立,旨在帮助维护互联网的安全性并使所有人都能使用互联网。每当有人在互联网上注册域名时,他们都要通过域名注册商注册,域名注册商向 ICANN 支付一小笔费用来注册域名。

子网掩网:IP地址是分为网络号和主机号的,那我们怎么知道哪些是网络号,哪些是主机号呢?通过子网掩码。子网掩码不能单独存在,它必须结合IP地址一起使用

与IP地址相同,子网掩码也是32位,左边是网络号,用1表示,右边是主机号,用0表示。

NAT:网络地址转换。在专用网连接到因特网的路由器上安装NAT软件,装NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机和外界通信时,都要在NAT路由器上将其本地地址转换成全球的IP地址,才能和因特网连接。

IP 地址的工作原理

如果您想了解特定设备为何未按预期方式进行连接,或者想要排查网络无法正常工作的可能原因,它可以帮助您了解 IP 地址的工作原理。

互联网协议的工作原理与任何其他语言相同,即使用设定的准则进行通信以传递信息。所有设备都使用此协议与其他连接的设备查找、发送和交换信息。通过使用相同的语言,任何位置的任何计算机都可以相互通信。

IP 地址通常在后台使用。该过程如下所示:

  1. 您的设备首先连接到一个已连接到互联网的网络,然后该网络再授予您的设备访问互联网的权限,从而让您的设备间接连接到互联网。
  2. 当您在家时,该网络可能是您的互联网服务提供商 (ISP) 提供的网络。在工作中,它将是您的公司网络。
  3. 您的 IP 地址由 ISP 分配给您的设备。
  4. 您的互联网活动将通过 ISP 传输,他们会使用您的 IP 地址将其路由给您。他们为您提供了互联网访问权限,自然也要由他们负责为设备分配 IP 地址。
  5. 但是,您的 IP 地址可能会更改。例如,打开或关闭调制解调器或路由器可能会更改 IP 地址。您也可以联系您的 ISP,他们可以为您更改 IP 地址。
  6. 在您外出(例如旅行)并随身携带设备时,您在家中使用的 IP 地址并不会跟着您一起走。这是因为,您将使用另一个网络(酒店、机场或咖啡厅等地方的 Wi-Fi)访问互联网,并且将使用由酒店、机场或咖啡厅的 ISP 分配给您的其他(临时)IP 地址。

IPv4使用32个二进制位在网络上创建一个唯一的地址。IPv4地址由点号分隔的四个数字表示。每个数字都是八位二进制数(以2为底的数字)(也称为八位字节)的十进制(以10为底)的表示形式。例如:216.27.61.137。

IPv6使用128个二进制位在网络上创建一个唯一的地址。IPv6地址由冒号分隔的八组十六进制(基数为16)数字表示,如2001:cdba:0000:0000:0000:0000:0000:3257:9652。通常会省略包含全零的数字组以节省空间,而用冒号分隔符标记间隙(如2001:cdba :: 3257:9652)。

2、路由器工作原理

路由表

在计算机网络中,路由表(routing table)或称路由择域信息库(RIB, Routing Information Base),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。

三、传输协议介绍

1、TCP协议/UDP协议

TCP 不管是建立连接、断开连接的过程,还是数据传输的过程,都不能放过,针对数据可靠传输的特性,又可以拆解为超时重新、流量控制、滑动窗口、拥塞控制等等知识点,学完这些只能算对 TCP 有个「感性」的认识,另外我们还得知道 Linux 提供的 TCP 内核的参数的作用,这样才能从容地应对工作中遇到的问题。

ip数据包传输过程(通信传输之旅IP基础)(7)

首先,源端口号和目标端口号是不可少的,如果没有这两个端口号,数据就不知道应该发给哪个应用。

接下来有包的序号,这个是为了解决包乱序的问题。

还有应该有的是确认号,目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达,这个是为了解决不丢包的问题。

接下来还有一些状态位。例如 SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等。TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更。

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。 一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂, 只简单的描述下这三次对话的简单过程:

1)主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2)主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发送,一个在接收,协调工作)的数据包 :“可以,你什么时候发?”,这是第二次对话;

3)主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”, 这是第三次对话。

三次“对话”的目的是使数据包的发送和接收同步, 经过三次“对话”之后,主机A才向主机B正式发送数据。

还有一个重要的就是窗口大小。TCP 要做流量控制,通信双方各声明一个窗口(缓存大小),标识自己当前能够的处理能力,别发送的太快,撑死我,也别发的太慢,饿死我。

除了做流量控制以外,TCP还会做拥塞控制,对于真正的通路堵车不堵车,它无能为力,唯一能做的就是控制自己,也即控制发送的速度。不能改变世界,就改变自己嘛。

①、主机需要网络传输数据,网络本质上是一种服务,主机和网络之间靠传输层接口,就好比你要叫快递送东西;2,网络可以提供两种服务:1)可靠,面向连接;(TCP) 就像靠谱的快递,每一步都有反馈和监控,当然价格也是呵呵...2)不可靠,尽力而为的传输 (UDP) 就像某些不靠谱的快递或者听都没听过的XX快递,价格低,但是能不能到就靠运气了。3,两种服务无所谓好坏,TCP 的可靠是需要消耗很多资源的,效率低 (大块,重要的文件等)UDP 不保证可靠性,但是效率高(视频,语音,不重要的小文件等)

②、而其他的“HTTP、FTP、SMTP 等所谓的“Application-layer Protocol”协议”指的是在TCP/IP 通讯协议框架下具体实现特定功能的应用(HTTP 用来实现超文本传输,FTP文件传输,SMTP处理邮件等等),两者的关系,咳咳,关系通俗的说:TCP和UDP以及IP 协议是互联网络通讯的基础,就像《宪法》,而应用协议就像具体的《刑法》、《民法》、《婚姻法》、《未成年人保护法》......等等,在某个领域的特定应用和具体实现,但是最基本的一条:违宪无效。

ip数据包传输过程(通信传输之旅IP基础)(8)

ip数据包传输过程(通信传输之旅IP基础)(9)

ip数据包传输过程(通信传输之旅IP基础)(10)

UDP(User Data Protocol,用户数据报协议)

1、UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制; 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

2、 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等, 因此一台服务机可同时向多个客户机传输相同的消息。

3、UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

4、吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、 源端和终端主机性能的限制。

5、UDP使用尽最大努力交付,即不保证可靠交付, 因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

6、UDP是面向报文的。发送方的UDP对应用程序交下来的报文, 在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界, 因此,应用程序需要选择合适的报文大小。

我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常, 其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包, 如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

小结TCP与UDP的区别:

1、基于连接与无连接;

2、对系统资源的要求(TCP较多,UDP少);

3、UDP程序结构较简单;

4、流模式与数据报模式 ;

5、TCP保证数据正确性,UDP可能丢包;

6、TCP保证数据顺序,UDP不保证。

,