• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 其它相关 > 正文

    面向连接和无连接中如何构建TCP协议

    来源:六七范文网 时间:2023-06-11 01:50:06 点击:

    本文计算机网络技术中面向连接(connection-oriented)和无连接(connectionless)区别,不可靠的无连接数据报协议是构建可靠的面向连接协议的基础,还简单介绍了可靠的TCP协议是如何构建在不可靠的IP协议上的。

    【关键词】面向连接 无连接 区别 TCP协议

    1 面向连接和无连接区别概述

    网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。面向连接和无连接协议可以,而且通常也确实会共享同一条物理介质。

    无连接协议中的分组被称为数据报(datagram),每个分组都是独立寻址,并由应用程序发送的。从协议的角度来看,每个数据报都是一个独立的实体,与在两个相同的对等实体之间传送的任何其他数据报都没有关系。

    通常这就意味着客户端和服务器不会进行长期的对话--客户端发起一条请求,服务器回送一个应答。这还意味着协议很可能是不可靠的。也就是说,网络会尽最大努力传送每一个数据报,但并不保证数据报不丢失、不延迟或者不错序传输。

    另一方面,面向连接的协议则维护了分组之间的状态,使用这种协议的应用程序通常都会进行长期的对话。记住这些状态,协议就可以提供可靠的传输。典型的面向连接协议有三个阶段。第一阶段,在对等实体间建立连接。接下来是数据传输阶段,在这个阶段中,数据在对等实体间传输。最后,当对等实体完成数据传输时,连接被拆除。

    一种标准的类比是:使用面向连接的协议就像打电话,而使用无连接协议就像寄信。给朋友寄信时,每封信都是一个独立寻址且自包含的实体。邮局不会维护以往通信者的历史记录--也就是说,它不会维护信件之间的状态。邮局也不保证信件不丢失、不延迟、不错序。这种方式就对应于无连接协议发送数据报的方式。

    这种类比虽然很形象,但并不是非常贴切的。电话系统有实际的物理连接。而我们的"连接"则完全是想象的--它只是由两端记录的状态构成的。为了说明这一点,我们来看看当一个空闲连接一端的主机崩溃并重启时会发生什么情况。

    2 TCP\IP协议应用

    既然无连接协议有这么多的缺点,大家可能会奇怪,为什么还要使用这种协议呢?我们会看到,在很多情况下,使用无连接协议构建应用程序都是有意义的。但更重要的是,无连接协议是构建面向连接协议的基础。为了更具体地说明这个问题,来看看TCP/IP协议族,TCP/IP基于一个4层的协议栈。

    栈的底部是接口层,直接与硬件相连。栈的顶部是应用程序,比如Telnet、ftp和其他标准的以及用户编写的应用程序。因此,IP是构建整个TCP/IP协议族的基础。但IP提供的是一种尽力而为的、不可靠的无连接服务。它接收来自其上层的分组,将它们封装在一个IP分组中,根据路由为分组选择正确的硬件接口,从这个接口将分组发送出去。一旦将分组发送出去了,IP就不再关心这个分组了。和所有无连接协议一样,它将分组发送出去之后就不再记得这个分组了。

    现在我们来看看TCP是怎样利用这种简单的无连接服务来提供可靠的面向连接服务的。TCP的分组被称为段(segment),是放在IP数据报中发送的,因此,根本无法假定这些分组会抵达目的地,更不用说保证分组无损坏且以原来的顺序到达了。

    首先,它为TCP段中的数据提供了校验和。这样有助于确保抵达目的地的数据在传输过程中不会被网络损坏。

    第二,它为每字节分配了一个序列号,这样,如果数据抵达目的地时真的错序了,接收端也能够按照恰当的顺序将其重装起来。

    第三,TCP提供了一种确认-重传机制,以确保最终每个段都会被传送出去。

    确认/重试机制是到目前为止我们讨论的三种附加机制中最复杂的一种,我们来研究一下它是怎样工作的。

    TCP连接的每一端都维护了一个接收窗口(receive window),接收窗口就是可以从对等实体接收的数据序列号范围。最小值表示窗口的左边界,是所期望的下一字节的序列号。最大值表示窗口的右边界,是TCP缓冲区空间所能容纳字节的最大编号。使用接收窗口而不只是所期望的下一字节计数器,就可以通过流量控制来提高可靠性。流量控制机制可以防止TCP传输的数据使其对等实体的缓冲区空间溢出。

    我们要注意这样一个事实:RTO定时器超时并不意味着原来的数据没有到达目的地。有可能是ACK丢失了,或者原来的段在网络中延迟的时间太长,以至于在其ACK到达之前RTO定时器就超时了。但这并不会造成什么问题,因为如果原来的数据确实到达了,那么重传的数据就会处于接收端TCP接收窗口范围之外,会被丢弃。

    IP地址(这些地址通常都是以因特网标准的点分十进制表示法给出的)用来将一个IP数据报传送给一台特定的主机。数据报到达目的主机时,还需要将其数据传送给恰当的应用程序。例如,一个UDP分组的目标可能是回声服务,而另一个的目标则可能是时间查询服务。分组到达时,内核会搜索其套接字列表,查找一个与分组中的协议、地址和端口号相匹配的套接字。如果找到了匹配的套接字,就由指定的协议(在我们所讨论的情形中,就是TCP或UDP)来处理数据,并将这些数据提供给所有打开了匹配套接字的应用程序。

    3 小结

    总之,在本文中,我们研究了无连接和面向连接协议的区别。可知道,不可靠的无连接数据报协议是构建可靠的面向连接协议的基础,还简单介绍了可靠的TCP协议是如何构建在不可靠的IP协议上的。对TCP来说,连接完全是想象的。它是由端点所记忆的状态组成的,并不存在"物理"连接,而打电话的时候是有物理连接的。

    参考文献

    [1]朱加强编著.计算机网络技术[D].北大燕工教育研究院,2007(06).

    [2]魏大新,李育龙编著.Cisco网络技术教程(第2版)[M].北京:电子工业出版社,2007(04).

    [3] 陈涓,赵振平译.TCP/IP高效编程:改善网络程序的44个技巧[M].北京:人民邮电出版社,2011(04).

    [4]王达编著.网络工程师必读—网络工程基础[M].北京:电子工业出版社,2006(07).

    [5]网管员世界杂志社编著.网管员世界2011超值精华本[M].北京:电子工业出版社,2011(06).

    作者单位

    1.贵州大学 贵州省贵阳市 550025

    2.铜仁职业技术学院 贵州省铜仁市 554300

    推荐访问:连接 构建 面向 协议 TCP