登陆注册
8918700000017

第17章 认识计算机网络——网络协议(5)

面向连接服务(connection-oriente dservices)的问题之一是,在可以传送数据之前总是必须经过三次握手的过程。在某些情况下,例如文件传输,因为需要确保成功的传输此文件的所有数据,这时面向连接的服务才有意义。然而在其他情况下,例如只想传送一个信息并且得到回复,或者干脆不需要回复信息时,进行三次握手的过程会增加不必要的额外开销。例如对于DNS查询服务,为了将完全合格域名(Fully Qualified Domain Name,FQDN)解析为IP地址,DNS客户端将会向DNS服务器发送单个查询并等待服务器的回应,在此过程中,只产生了两个消息:客户的查询消息和服务器的回应消息。由于两台设备之间的通信量很少,所以在发送查询消息之前建立可靠的连接没有意义。即使客户端没有收到回应消息,也可以由应用程序再次发送此查询信息,或者交由用户来处理。由于一开始没有建立连接,这种连接被称为无连接的服务。TCP/IP协议栈中的UDP提供了这种不可靠的无连接的服务。

传输层通过窗口的操作减少数据因溢出而丢弃,窗口大小规定在发送站必须等待接收站的确认(ACK)之前可以发送的信息量。一旦收到ACK,发送站就发出下一批信息(取决于窗口大小所定义的最大值)。例如,窗口大小是4,而当前的确认号是3,那么在下一个确认到达之前,发送站可以发送序号是3、4、5、6的数据段,而不需要得到确认。

窗口操作实现了两个功能,首先是基于窗口大小执行流量控制。窗口的大小是预先动态协商的,并且可在连接的使用期限内重新协商,这样就确保了在接收站不丢弃任何信息的情况下使用最佳的窗口大小来传送信息。其次,接收站可以通过窗口操作过程,通知发送站收到了什么信息。如向发送站表明在去往接收站的途中是否丢失了信息,并且允许发送站重发任何已经丢失的信息。这为连接提供了可靠性。

(二)TCP(Transmission Control Protocol,传输控制协议)

TCP/IP是一个包含多个协议的标准。它定义在一个互联网络上的设备之间如何通信。

TCP/IP的传输层主要负责在两台设备之间建立逻辑连接,并且可以提供可靠的连接和流量控制。TCP/IP包括两种传输层协议:TCP和UDP。

TCP的主要职责是在两台设备之间提供可靠的端到端的面向连接的逻辑服务(logicalservice)。TCP在网络层协议的基础上,向应用层进程提供可靠的、全双工的数据传输。它允许两个应用进程之间建立一个连接,应用进程通过该连接可以实现顺序、无差错、无重复和无报文丢失的流传输。

TCP也可以利用滑动窗口操作来实现流量控制,这样发送方设备就不会因为发送过多的数据段而超出接收站的承受能力。TCP协议的主要特点有以下几个方面:

1.面向连接服务(connection-oriente dservice)

面向连接的传输服务对保证数据流传输可靠性非常重要。它在进行实际数据报传输之前必须在源进程与目标进程之间建立连接。一旦连接建立之后,通信的两个进程就可以在此连接上发送和接收数据。

2.高可靠性(highre liability)

由于TCP协议是建立在不可靠的网络层协议的基础上的,在IP协议不提供任何保证分组数据传输可靠性机制的情况下,TCP协议的可靠性需要协议自身来实现。TCP协议支持数据可靠性的主要方法是序号、确认和超时重传。

TCP协议PDU称为数据段或段,它将上层用户数据报分割成一定长度的数据段。TCP将保持它头部和数据的校验和,目标是检测数据在传输过程中是否出现错误。在接收端,当TCP正确接收到报文时,它将发送确认。在发送端,当TCP发出一个报文后,将启动一个定时器,等待目标端确认收到这个报文。如果不能及时收到相应的确认,将重发这个报文。

TCP协议可以采用自适应的超时重传策略。

3.可靠连接的建立和释放(establi shandreleaser eliable connection)

为了保证连接建立和释放的可靠性,TCP协议使用三次握手(three-wayhandshake)机制。在连接建立阶段,防止出现因“失效的连接请求数据报”而造成连接错误。在释放连接时,保证在关闭连接时已经发送的数据报可以正确地到达目标端口。

4.流量控制和拥塞控制(flowcontro landcongestion control)

TCP协议采用大小可变的滑动窗口方法进行流量控制。发送窗口在建立连接时由双方商定。在数据传输过程中,接收端可以根据自身资源的情况,随机、动态地调整发送窗口的大小,而接收端将跟随发送端调整接收窗口。

TCP协议使用称为数据段的协议数据单元在设备间传输数据。

TCP报头的固定部分长度为20字节,选项部分最多为40字节且必须是0或是32比特(bit)的整数倍。

下面我们分别介绍TCP数据段结构的主要部分:

端口号(Port number)包括源端口号和目标端口号。每个端口号字段长度为16bits,分别表示发送该报文的应用进程的端口号和接收该报文的应用进程的端口号。

序号(Sequence number)字段长度为32bits。由于TCP协议是面向数据流的,它所传送的报文可以看作是连续的数据流。因此需要给发送的每一个字节进行编号。序号字段中的“序号”是指本报文数据的第一个字节的顺序号。例如,某个报文的序号为“101”,大小为100字节,那么该报文的第一个字节的顺序号为101,最后一个字节的顺序号是200。通过该字段,我们可以维持数据的完整性和对数据进行排序。

确认号(Ac knowledgement number)长度为4bytes(32bits),表明期望下次对方发送数据的第一个字节的序号(注意是字节而不是比特),也就是期望收到的下一个报文的首部中的序号。从这里我们可以知道,确认号具有与数据链路层中帧的捎带确认相似的作用,表明在此序号之前的所有数据都已成功接收。由于序号字段有32bits长,可对4GB的数据进行编号,这样就保证了当序号重复使用时,旧序号的数据已经在网络中消失了。

报头长度(Header length)占4bits,它指出数据开始的地方离TCP报文的长度有多远,因此也可称其为数据偏移字段。它表明了报头的长度。由于报头长度的不固定(报头的选项字段长度是不确定的),因此报头长度字段是必需的。这里需要注意,报头长度的单位是32bits(即4bytes),而不是字节和比特。

保留字段(Reserved field)的长度是6bits,留做今后使用。目前使用全部为零。

编码位(Codebits)定义了6种不同的控制字段或标志,每种一位,使用时在同一时间可设置其中的一个或者多个。编码位用于TCP的流量控制、连接的建立和释放、数据传输的方式和控制。下面我们分别介绍每位的意义。

窗口大小(Windo wsize)为2bytes。窗口大小实际上是报文发送方的接收窗口,单位为字节。通过该窗口告诉对方:“在未收到我的确认时,你能发送的数据的字节数至多是此窗口的大小。”窗口所对应的最大数据长度为65,535bytes。

校验和(Chec ksum)字段长度为2bytes。校验和字段检验的范围包括报头和数据这两部分。在计算校验和时,需要在TCP头部增加一个12字节的伪头部,伪头部中包括源IP和目标IP地址,1个byte的全0位,一个字节的TCP协议号(6),以及两个字节的TCP长度。对于TCP来说,伪头部是必须采用的。

紧急字段(Urg ent field)长度为2bytes。它与紧急比特URG共同使用,表明该报文中存在紧急数据。

选项(Options)TCP报头的选项是可变的。最多可以有40bytes的选项。选项包括以下两类:单字节选项和多字节选项。单字节选项包括选项结束和无操作。多字节选项包括最大报文长度、窗口扩大因子和时间戳。

数据(Data)上层协议数据,不包括TCP报头部分。

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

UDP是一种无连接的、不可靠的传输层协议,它在完成端到端的通信时没有流量控制机制,也没有确认机制,只提供了有限的差错控制。因此协议简单,在特定的应用中协议运行的效率高。设计UDP协议的目标是希望以较小的开销实现网络环境中的进程通信的目标。UDP适用于可靠性较高的局域网。如果进程需要发送一个很短的报文,同时对报文的可靠性要求不高,那就可以使用UDP协议。

某些实时应用,如IP电话、视频会议,它们要求主机以恒定的速度发送数据,在网络拥塞时可以丢失一些数据,并且不希望数据延时太大等特点,UDP正好满足了这种需求。此外,域名系统(DNS)、路由选择协议(RIP)、简单网络管理协议(SNMP)、网络文件服务(NFS)和多播(Multicast)服务在传输层也使用UDP协议。

UDP用户数据报有固定的8字节报头,其字段分别为:

端口号(portnu mber)

端口号包括源端口号和目标端口号,分别标识发送和接收数据的应用进程。端口号长度为16位。

长度字段(Length)

长度字段为2bytes。它定义了包括报头在内的用户数据报的总长度。因此,用户数据报的总长度最大为65,535bytes,最小为8bytes。

校验和(Chec ksum)

校验和字段长度为2bytes,用于提供整个UDP数据报的差错校验,使用循环冗余码校验CRC。UDP的校验范围包括3部分:伪头部(fakeheader)、UDP报头和应用层数据。伪头部是IP分组的一部分,只在校验过程,临时与UDP数据报结合在一起,即不向低层传输,也不向高层传送。如果应用程序对通信效率的要求高于可靠性时,应用进程可以选择不进行校验。

(四)传输层端口与应用层协议

TCP/IP的传输层提供了多路复用的功能,允许多个应用程序同时收发数据,并使用端口号来区别不同的连接。TCP和UDP使用端口号把信息传给上层,端口号被用于解释同时通过网络的不同连接会话间的区别。端口号由IANA(Internet Assigned Numbers Authority,因特网地址分配管理机构)分配,应用软件开发者同意使用IANA约定的端口号,如,约束FTP应用的连接会话使用标准的端口号:20和21。端口20用于数据传输,端口21用于连接控制。

某些特定范围的端口是不可以随便分配给网络应用或服务使用,端口号基本分为三类:

熟知端口号、注册端口号和临时端口号。端口号的分配范围如下:

(1)0~1023的端口号码被称为熟知端口号(或称为保留端口号)。

(2)1024~49151是注册端口号,某些厂商用于特定的应用或服务,需要向IANA注册。

(3)49152~65535是动态分配的端口号。这是由运行在客户端的应用程序随机选取的,可以被任何进程使用。

当发起一个远程应用程序连接时,操作系统(operating system)将选择一个系统中当前没有使用的大于1023的端口号,并将此号码指定为数据段的源端口号。根据所运行的应用程序,将其熟知端口号作为目标端口字段。接收站在接收到该数据段时,查看目标端口号,得知该数据应该定向到哪个应用程序中。

UDP与TCP协议一样,也是通过端口号来标识进程,实现多路复用。然而某些特定的端口类型是TCP端口或UDP端口,而有些端口可能既是TCP端口,又是UDP端口,如DNS的端口号53。

应用层是网络体系结构(networ ksystem structure)中的最高层,在应用层之上不存在其他的层。因此,应用层的任务不是为上层提供服务,而是向最终用户提供服务。每一个应用层的服务都是为了解决某一类具体的应用问题,而问题的解决往往通过位于不同主机中的多个进程之间的通信和协作来完成。为了解决具体的应用问题而彼此通信的进程称为应用进程(application process)。应用层的具体内容就是规定应用进程在通信时所遵循的协议。

同类推荐
  • 现代企业财务软件应用教程

    现代企业财务软件应用教程

    本书内容包括财务软件概论、系统管理、企业应用平台、总账管理、报表管理、薪资管理、固定资产管理、应收款管理、应付款管理等。
  • 网络知识

    网络知识

    一般地说,将分散的多台计算机、终端和外部设备用通信线路互联起来,彼此间实现互相通信,并且计算机的硬件、软件和数据资源大家都可以共同使用,实现资源共享的整个系统就是计算机网络。
  • 三维动画审美谈

    三维动画审美谈

    数字时代,美的标准充满更多的不确定性。而三维动画以数字图像形式成为这个图时代的代表。三维动画及三维图像不仅仅是由于应用了仿真数字图像技术而带来的虚拟空间,还有更多的是由三维图像技术所引发或引导的被扩展的图像技术,这些技术无不应用在现代视觉设计领域的各个方面,并且,由此引起社会的追热,引起审美观念的改变。这些改变是在进行中的,变化中的,也是在发展中的。对于未知的美,我们做的只是追寻和记录,我们不知道以后的美将会是什么样,尽管我们苦苦追寻,孜孜探讨,同时也在默默审视。我们在追寻中享受美,在探讨中认知美,在审视中体验美……
  • 小型局域网组建与维护

    小型局域网组建与维护

    本书以组建和维护小型局域网为主线,面向实际工程应用,按照项目化课程模式的要求组织编排。全书共分8个项目,主要包括认识计算机网络一概述、绘制小型网络拓扑图、连接网络一传输介质、连接网络一联网设备、认识计算机网络一网络协议、连接网络一网络寻址、组建小型交换网络——配置交换机、连接互联网——配置宽带路由器。每个项目都有明确的工作目标、工作任务、实现过程和知识点分析,力求集教、学、做于一体,从而更好地激发学生的学习兴趣,培养学生的动手能力。
热门推荐
  • 魅颜:吃货毒后

    魅颜:吃货毒后

    一朝穿越,遭到下毒,变成小女孩,尼玛,肿么会介个样子?“丫头,你……”某仙谪男轻叹了口气。“丫头,我请你吃好吃的!”某腹黑谷主宠溺的伸手揉了揉某女的刘海!“夫君?你有什么事么?”某女眨巴着眼睛,一脸的不解。“娘子,咱俩什么时候把婚事给定了!”美男笑得无比妩媚诱惑!“容我考虑考虑……”某女一脸的为难!【情节虚构,请勿模仿】
  • 罪时空之神迹

    罪时空之神迹

    大道无尽,文武皆同,武者一剑,可斩奸邪,可毁天地,可错时空,文人一笔,可造寰宇,可观历史长河,可立法苍穹。惊鸿大陆,百族林立,人族鼎盛,一人族精英,携灵力异能,重生异世,且看他如何独步寰宇,闯荡无尽时空!三生镜花月,一念成苍穹。破碎记忆,吾应为孰?众女妖娆,汝今为孰?身世迷离,吾归何处?登临绝顶,蓦然回首,竟知恩恩怨怨,生死离合,皆因吾一念矣……
  • 福妻驾到

    福妻驾到

    现代饭店彪悍老板娘魂穿古代。不分是非的极品婆婆?三年未归生死不明的丈夫?心狠手辣的阴毒亲戚?贪婪而好色的地主老财?吃上顿没下顿的贫困宭境?不怕不怕,神仙相助,一技在手,天下我有!且看现代张悦娘,如何身带福气玩转古代,开面馆、收小弟、左纳财富,右傍美男,共绘幸福生活大好蓝图!!!!快本新书《天媒地聘》已经上架开始销售,只要3.99元即可将整本书抱回家,你还等什么哪,赶紧点击下面的直通车,享受乐乐精心为您准备的美食盛宴吧!)
  • 不死之躯:恶鬼来袭

    不死之躯:恶鬼来袭

    她天生一双鬼瞳,能见到常人见不到的东西,一桩桩离奇的事件发生在她身边,这一切显得刻意又巧合,似乎在引她入局?
  • 火影之一本贯手

    火影之一本贯手

    我名秦苍翔,我是忍者。我是木叶人。我只用一招,雷之贯手!虽然是忍术系的,但我信奉拳拳到肉!体忍术。超越空间的力量!所有阻碍,野蛮撕开!三代雷影啊。有种,咱俩打一架!
  • 毕业生

    毕业生

    刚刚大学毕业的青年孔岩,是个不折不扣的凤凰男,从穷困农村考入大学,只想凭个人奋斗改变人生。毕业后他选择了北漂,为了爱情、理想,希望用青春和激情创造一个斑斓的未来。他先后经历了大学时的都市女孩刘夏,以及后来同样北漂的女孩成月两段完全不同的情感,在接连不断的事件中,他逐渐寻找到了自我,明白哪种生活和爱情才真正属于自己的,然而当从毕业时的茫然逐渐转入人生正轨之时,青春却已悄然而逝……故事以孔岩为线索人物,又牵扯出仲恺、郝雷、佟嘉惠、董凡等一系列年轻面孔,他们性格各异,但是在经历了生活的磨砺之后,却不约而同对人生的价值判断发生着改变。他们在这个充满诱惑、谎言、爱与恨、坚守与背叛的现实生活的旋涡中,在理想、事业、爱情和友情的挣扎、追寻中,上演了一部属于80后自己真正的青春奋斗史。【尊敬的书友,本书选载最精华部分供您阅读。阅读更多章节,请购买纸质书】
  • 我不是你的良人

    我不是你的良人

    "他是我青春的金主,我是他牢笼里的金丝雀。一张冰冷的支票是我们给予彼此最初的位置。从女孩到女人,从躲避到追寻,许光北,你给我的是一场万劫不复,而我不是你的良人。"
  • 噩梦日记

    噩梦日记

    温杰是一个自由撰稿人。一个自称没有了13年记忆的男人,带来了奇怪的几本《噩梦日记》,里面写着一个个扑朔迷离的密码,这一切联接起来,闯进了温杰的生活,犹如链条般困住了温杰。这一切都来源于远古流传下来的刺青。那是一种能在身体表肤上活动,并会给宿主身体带来不同影响的刺青……
  • 尼罗河上的宠猫

    尼罗河上的宠猫

    天真的创伤,美丽的誓言,指尖滑落与花瓣,琥珀色的瞳人,冷清的寒月,黑夜席卷我冰冷的身躯,抬眼望向迷茫的尼罗河,注定要面对这一切,注定要低头,可爱的猫咪,甜美的声音,今夜,我要为你放声歌唱,让你与我一起沦入尘世中,让歌声在尘世中飘扬,让永恒在心中回荡,让宠爱成为千古绝唱……
  • 格斗至尊

    格斗至尊

    对搏击的热血已经全部倾洒在八角笼中擂台上无畏的斗士们,他们挥洒着热血,只为那神圣的金色腰带。他们带着不屈的战意,只为竖起自己最强的丰碑!谁才是格斗之王?谁才是终极的武者?血与血的碰撞,肉与肉的搏击,武者的尊严,永不允许被践踏!