TCPIP中数据包的传输 - 范文中心

TCPIP中数据包的传输

12/12

路由信息协议(RIP )是一种在网关与主机之间交换路由选择信息的标准。RIP 是一种内部网关协议。在国家性网络中如当前的因特网,拥有很多用于整个网络的路由选择协议。作为形成网络的每一个自治系统,都有属于自己的路由选择技术,不同的 AS 系统,路由选择技术也不同。 TCP/IP协议叫做传输控制/网际协议,它是Internet 国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。

虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP )和网际协议(IP ),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP 协议和IP 协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet 协议族,而不单单是TCP 和IP 。

TCP/IP协议的基本传输单位是数据包(datagram ),TCP 协议负责把数据分成若干个数据包,并给每个数据包加上包头(就像给一封信加上信封),包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式,IP 协议在每个包头上再加上接收端主机地址,这样数据找到自己要去的地方,如果传输过程中出现数据丢失、数据失真等情况,TCP 协议会自动要求数据重新传输,并重新组包。总之,IP 协议保证数据的传输,TCP 协议保证数据传输的质量。TCP/IP协议数据的传输基于TCP/IP协议的四层结构:应用层、传输层、网络层、接口层,数据在传输时每通过一层就要在数据上加个包头,其中的数据供接收端同一层协议使用,而在接收端,每经过一层要把用过的包头去掉,这样来保证传输数据的格式完全一致。

TCP/IP协议介绍

TCP/IP的通讯协议

这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP 协议和IP 协议,UDP (User Datagram Protocol)协议、ICMP (Internet Control Message Protocol)协议和其他一些协议的协议组。

TCP/IP整体构架概述

TCP/IP协议并不完全符合OSI 的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型, 其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP )、文件传输协议(FTP )、网络远程访问协议(Telnet )等。

传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP )、用户数据报协议(UDP )等,TCP 和UDP 给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP )。

网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet 、Serial Line等)来传送数据。

TCP/IP中的协议

以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:

1. IP

网际协议IP 是TCP/IP的心脏,也是网络层中最重要的协议。

IP 层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP 或UDP 层;相反,IP 层也把从TCP 或UDP 层接收来的数据包传送到更低层。IP 数据包是不可靠的,因为IP 并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP 和UDP 服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP 地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP 确认包含一个选项,叫作IP source routing ,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP 和UDP 的服务来说,使用了该选项的IP 包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP 源地址做确认的服务将产生问题并且会被非法入侵。

2. TCP

如果IP 数据包中有已经封好的TCP 数据包,那么IP 将把它们向‘上’传送到TCP 层。TCP 将包排序并进行错误检查,同时实现虚电路间的连接。TCP 数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP 将它的信息送到更高层的应用程序,例如Telnet 的服务程序和客户程序。应用程序轮流将信息送回TCP 层,TCP 层便将它们向下传送到IP 层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet 、FTP 、rlogin 、X Windows 和SMTP )需要高度的可靠性,所以它们使用了TCP 。DNS 在某些情况下使用TCP (发送和接收域名数据库),但使用UDP 传送有关单个主机的信息。

3.UDP

UDP 与TCP 位于同一层,但对于数据包的顺序错误或重发。因此,UDP 不被应用于那些使用虚电路的面向连接的服务,UDP 主要用于那些面向查询---应答的服务,例如NFS 。相对于FTP 或Telnet ,这些服务需要交换的信息量较小。使用UDP 的服务包括NTP (网落时间协议)和DNS (DNS 也使用TCP )。

欺骗UDP 包比欺骗TCP 包更容易,因为UDP 没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP 相关的服务面临着更大的危险。

4.ICMP

ICMP 与IP 位于同一层,它被用来传送IP 的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP 的‘Redirect’信息通知主机通向其他系统的更准确的路径,而

‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP 可以使TCP 连接‘体面地’终止。PING 是最常用的基于ICMP 的服务。

5. TCP和UDP 的端口结构

TCP 和UDP 服务通常有一个客户/服务器的关系,例如,一个Telnet 服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet 客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。

两个系统间的多重Telnet 连接是如何相互确认并协调一致呢?TCP 或UDP 连接唯一地使用每个信息中的如下四项进行确认:

源IP 地址 发送包的IP 地址。

目的IP 地址 接收包的IP 地址。

源端口 源系统上的连接的端口。

目的端口 目的系统上的连接的端口。

端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP 使用25、Xwindows 使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

p2p 数据包传输协议是什么

P2P 是一种技术,但更多的是一种思想,有着改变整个互联网基础的潜能的思想。

P2P 是peer-to-peer 的缩写,peer 在英语里有“(地位、能力等)同等者”、“同事”和“伙伴”等意义。这样一来,P2P 也就可以理解为“伙伴对伙伴”的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。

简单的说,P2P 直接将人们联系起来,让人们通过互联网直接交互。P2P 使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。P2P 就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P 另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C 、B2B 是将现实世界中很平常的东西移植到互联网上一样,P2P 并不是什么新东西。在现实生活中我们每天都按照P2P 模式面对面地或者通过电话交流和沟通。

P2P 的问题很复杂, 关于链路传输有如下几点供参考.

(1) 首先作为P2P 的营运商,可以多设几台P2P 种子服务器,分布在不同的网段中。比如:北方网通设一台(组) ,南方电信设一台(组) ,种子的内容是一样的。种子服务器多了,可以降低优化算法的难度。

(2) 种子服务器和普通节点的优先级:种子服务器的优先级总数低于普通节点的,如果普通节点的速度快了,就减少从种子服务器获取的数据量。

(3) 全球IP 地址表。P2P 节点仲裁服务器中,应该有一个全球IP 地址表,分中国大陆、香港、台湾、北美、欧洲、澳洲、其它。中国大陆先按照营运商分:电信、网通、铁通、联通、教育网等,再按照省份分类。(网上有下载,可以整理)

(4) 高速网段表。在P2P 访问中,节点动态地将速度快的其它节点IP 地址传回服务器,服务器根据全球IP 地址表算出网段,以网段-网段的方式记录在数据库中。

(5) 当一个新用户连入节点时,在全球IP 地址表中找到最近的节点,按照比例依次分配最快网段的节点; 最近的节点; 差一个级别的稍近的节点; 随机节点以及种子服务器。

(6) P2P在数据传送中,可以将30秒数据文件作为1块数据包; 数据包中按照每16KB 作为一个数据块。每个时间段(如2秒) ,本节点向其它节点交换一下数据块的传送情况,然后计算一下数据包中每个数据块的拥有率,优先传送拥有率低的数据块。在拥有率相当的情况下,随机选择。

(7) 在数据交换中,对于传送慢的节点,定期剔除,然后问节点仲裁服务器要新的节点。

(8) 如果数据包中小于10%的数据块没有传送完毕,在时间充足的情况下,对于余下的数据块,可以同一个数据块向多个节点请求。

(9) 节点仲裁服务器也会将新的P2P 节点强行加载到另一个节点上,但不能超过节点最大连接数。

下面解释一下上面的文章中没有提及或者说我觉得比较欠缺的地方.

私有地址/端口和公有地址/端口:我们知道, 现在大部分网络采用的都是NAPT(Network Address/Port Translator) 了, 这个东东的作用是一个对外的对话在经过NAT 之后IP 地址和端口号都会被改写, 在这里把一次会话中客户自己认为在使用的IP 地址和端口号成为私有地址/端口, 而把经过NAPT 之后被改写的IP 地址和端口号称为公有地址/端口. 或者可以这么理解, 私有地址/端口是你家里人对你的昵称而公有地址/端口则是你真正对外公开的名字. 如何获得用户的私用地址/端口号, 这个很简单了, 而要得到公有地址/端口号就要在连接上另一台机器之后由那台机器看到的IP 地址和端口号来表示.

如果明白了上面的东西, 下面进入我们的代码, 在这里解释一下关键部分的实现:

客户端首先得到自己的私有地址/终端, 然后向server 端发送登陆请求,server 端在得到这个请求之后就可以知道这个client 端的公有地址/终端,server 会为每一个登陆的client 保存它们的私有地址/端口和公有地址/端口.

OK, 下面开始关键的打洞流程. 假设client A要向client B对话, 但是A 不知道B 的地址, 即使知道根据NAT 的原理这个对话在第一次会被拒绝, 因为client B的NAT 认为这是一个从没有过的外部发来的请求. 这个时候,A 如果发现自己没有保存B 的地址, 或者说发送给B 的会话请求失败了, 它会要求server 端让B 向A 打一个洞, 这个B->A的会话意义在于它使NAT B 认为A 的地址/端口是可以通过的地址/端口, 这样A 再向B 发送对话的时候就不会再被NAT B 拒绝了. 打一个比方来说明打洞的过程,A 想来B 家做客, 但是遭到了B 的管家NAT B 的拒绝, 理由是:我从来没有听我家B 提过你的名字, 这时A 找到了A,B 都认识的朋友server, 要求server 给B 报一个信, 让B 去跟管家说A 是我的朋友, 于是,B 跟管家NAT B说,A 是我认识的朋友, 这样A 的访问请求就不会再被管家NAT B所拒绝了. 简而言之,UDP 打洞就是一个通过server 保存下来的地址使得彼此之间能够直接通信的过程,server 只管帮助建立连接, 在建立间接之后就不再介入了.

一、介绍

PPP (Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

二、 PPP链路建立

过程

PPP 协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP 协议包含这样几个部分:链路控制协议LCP (Link Control Protocol );网络控制协议NCP (Network Control Protocol);认证协议,最常用的包括口令验证协议PAP (Password

Authentication Protocol )和挑战握手验证协议CHAP (Challenge-Handshake Authentication Protocol )。

LCP 负责创建,维护或终止一次物理连接。NCP 是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。

下面介绍PPP 链路建立的过程:

PPP 链路状态机如图1所示。一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段。

阶段1:创建PPP 链路

LCP 负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP 向对方发送配置信息报文(Configure Packets)。一旦一个配置成功信息包(Configure-Ack packet )被发送且被接收,就完成了交换,进入了LCP 开启状态。

应当注意,在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。 阶段2:用户验证

在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。

在这一阶段里,只有链路控制协议、认证协议,和链路质量监视协议的packets 是被允许的。在该阶段里接收到的其他的packets 必须被静静的丢弃。

最常用的认证协议有口令验证协议(PAP )和挑战握手验证协议(CHAP )。 认证方式介绍在第三部分中介绍。

阶段3:调用网络层协议

认证阶段完成之后,PPP 将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP )。选定的NCP 解决PPP 链路之上的高层协议问题,例如,在该阶段IP 控制协议(IPCP )可以向拨入用户分配动态地址。

这样,经过三个阶段以后,一条完整的PPP 链路就建立起来了。

三、 认证方式

1)口令验证协议(PAP )

PAP 是一种简单的明文验证方式。NAS (网络接入服务器,Network Access Server )要求用户提供用户名和口令,PAP 以明文方式返回用户信息。很明显,这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口令,并利用这些信息与NAS 建立连接获取NAS 提供的所有资源。所以,一旦用户密码被第三方窃取,PAP 无法提供避免受到第三方攻击的保障措施。

2)挑战-握手验证协议(CHAP )

CHAP 是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。NAS 向远程用户发送一个挑战口令(challenge ),其中包括会话ID 和一个任意生成的挑战字串(arbitrary challengestring )。远程客户必须使用MD5单向哈希算法(one-way hashing algorithm)返回用户名和加密的挑战口令,会话ID 以及用户口令,其中用户名以非哈希方式发送。

CHAP 对PAP 进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照。CHAP 为每一次验证任意生成一个挑战字串来防止受到再现攻击(replay attack)。在整个连接过程中,CHAP 将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remote client impersonation)进行攻击。

四、PPP 协议的应用

PPP 协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP 分配等。

家庭拨号上网就是通过PPP 在用户端和运营商的接入服务器之间建立通信链路。 目前,宽带接入正在成为取代拨号上网的趋势,在宽带接入技术日新月异的今天,PPP 也衍生出新的应用。典型的应用是在ADSL (非对称数据用户环线,Asymmetrical Digital Subscriber Loop)接入方式当中,PPP 与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE (PPP over Ethernet ),PPPoA (PPP over ATM)。

利用以太网(Ethernet )资源,在以太网上运行PPP 来进行用户认证接入的方式称为PPPoE 。PPPoE 即保护了用户方的以太网资源,又完成了ADSL 的接入要求,是目前ADSL 接入方式中应用最广泛的技术标准。

同样,在ATM (异步传输模式,Asynchronous Transfer Mode )网络上运行PPP 协议来管理用户认证的方式称为PPPoA 。它与PPPoE 的原理相同,作用相同;不同的是它是在ATM 网络上,而PPPoE 是在以太网网络上运行,所以要分别适应ATM 标准和以太网标准。

PPP 协议的简单完整使它得到了广泛的应用,相信在未来的网络技术发展中,它还可以发挥更大的作用。

数据包在TCP/IP中的传输

数据的封装与拆封

在TCP/IP协议栈中,当数据通过协议栈向下流动时,每一层都要给数据增加控制信息用于确保正确的传递。控制信息放置在被传送数据的开始,称之为包头,这种在协议栈中每一层都增加传递信息的过程称为封装。也就是说,栈中每层软件对传递的数据都要进行格式化,使之与特定的协议相适应,即每层都在上层的基础上加一个与协议相对应的包头;而当数据在协议栈中反方向(由底层向上)流动时,协议软件就以相反的方式处理数据,即每一层都剥去栈中对应层增加的包头,然后将数据传递给上一层,这就是拆封。数据在协议栈中的传输过程见图1。

图1:数据在TCP/IP协议栈中的传输过程

如图1所示,数据在TCP/IP协议栈中可以双向流动。当应用程序要发送数据时,首先要收集好用户数据,并加上应用头以便在接收方确认(注:应用数据和应用头长度是不固定的,所以用虚框框起),然后每层将数据封装成相邻层要求的格式。当数据到达链路层时,为了替网络互连层发送IP 数据报,链路层要将数据翻译成所用的网络技术要求的帧格式。例如,对Ethernet 来说,链路层将IP 数据报封装成以太网帧;对于令牌环网,链路层将IP 数据报封装成令牌环帧;而对于通过Modem 接入Internet 的网来说,链路层将IP 数据报封装成SLIP 帧或PPP 帧格式。总之,最后在各种物理介质中传送的是能够适应所在网络技术要求的数据帧。

相反,当一台主机接收数据时,TCP/IP协议栈要做和封装相反的工作——拆封。拆封首先是将各种格式的数据帧转换成IP 数据报,再根据协议号转换成TCP 或UDP 报文格式,最后通过端口号到达正确的进程,还原成原始数据。

另外,在网络互连层和链路层之间通常要进行数据包的分割与重组。分割是将单个数据包分成两个或多个小包的过程。当应用程序传送的数据包大于网络的MTV (网络最大传输单元)时,或所经过的路由器其MTU 小于本地网络发送方的MTU 时,网络软件自动将数据包分成小块,并当成多个数据包进行传输;重组是在接收方将已分割的数

据按正确的顺序合并在一起,重组比分割复杂,它有时间要求,不能无限制的等待。如果在规定的时间内主机未收到全部分块,它就会放弃已收到的分块,并停止处理这个数据包。分块的小数据包重组完成后传送到网络互连层,此时网络互连层处理数据包就好象网络从未分割它一样。

2 数据包

数据是网络和TCP/IP协议栈传输的实体和服务对象,当用户向网上发送数据时,首先将用户组成包(即应用数据包),再向下传送到传输层,见图1。数据传到各层后,因每层都增加了与协议相对应的包头,数据实体的名称也随之发生了变化,具体见下表1。

表1:数据在协议栈中的名称


相关内容

  • 校园一卡通系统方案
    校园一卡通系统方案 目 录 一. IC 卡简介 1.1 卡片发展简介 - - - - - - - - - - - - - - - - - - - - - - - 2 1.2 IC卡定义 - - - - - - - - - - - - - - ...
  • 20**年.9.1亲测解决WIN7网络延迟过高的办法
    换过一台电脑,装了WIN7系统之后,网络出现了严重的问题,症状体现在网络连接正常,迅雷下载速度可以稳定在400KB/S(我家4M电信),但是玩游戏(魔兽世界,DOTA)延迟居高不下,魔兽世界延迟 本地和世界基本长期维持在1000MS延迟,后 ...
  • 怎样用Ping命令轻松解决检测网络故障
    怎样用Ping 命令轻松解决检测网络故障+排除网络故障从Ping 命令开始 2009年11月25日 星期三 23:58 正常上网取决于三条:1.网卡及其驱动程序没有问题:2.系统网络连接设置没有问题:3.网络供应商"高速公路&qu ...
  • [数据通信原理]教案
    <数据通信原理>教案 第二章 概论 第一节 数据与数据通信 一.数据与数据信号 数据信号 用传输代码表示 二.数据通信 定义 P39 ● 数据终端设备计算机 一般) 数据终端 第二节 数据通信系统的构成 一.数据通信系统的概念 ...
  • 网络体系结构与协议
    第3章 网络体系结构与协议电子教案 本章教学目标 1. 理解网络分层设计思想,掌握网络体系结构的概念: 2. 理解开放系统互联参考模型体系,掌握各层的主要功能及数据传输情况: 3. 掌握TCP/IP的层次结构及各层的功能,理解TCP/IP协 ...
  • 电信传输网类型
    ISDN (Integrated Service Digital Network)中文名称是综合业务数字网,就是采用的数字交换和数字传输的电信网的简称,中国电信将其俗称为" 一线通" . ISDN 是以电话综合数字网为基 ...
  • 电信笔试题
    1.什么是中断?中断发生时cpu做什么工作? 中断:是指当主机接到外界硬件(如I/O设备)发来的信号时,马上停止原来的工作,转去处理这一事件,在处理完了以后,主机又回到原来的工作继续工作.中断是机器BIOS中最重要的概念,当系统外部设备有请 ...
  • 3-网络技术
    1. . 为网络提供共享资源并对这些资源进行管理的计算机称为( ). A.网卡 B.工作站 C.超级计算机 D.服务器 参考答案 D 2. . IP地址为202.204.120.32的地址是( )类网地址. A.C B.B C.D D.A ...
  • 因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
    因特网使用的IP协议是无连接的,因此其传输是不可靠的.这样容易使人们感到因特网很不可靠,那为什么当初不直接把它设计为可靠的? 先打一个比方.邮局寄送的平信很像无连接的IP数据报.每封平信可能走不同的传送路径,同时平信也不保证不丢失.当我们发 ...
  • 计算机网络作业
    1. 下列各网络设备属于通信子网的是( ). A .客户机 B .接口信息处理机 C .终端 D .服务器 2.下列设备属于资源子网的是( ). A .打印机 B .集中器 C .路由器 D .交换机 3. 基带系统是使用( )进行传输的. ...