登陆注册
13105900000017

第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)。应用层的具体内容就是规定应用进程在通信时所遵循的协议。

同类推荐
  • 一本书读懂大数据

    一本书读懂大数据

    本书是深入研究互联网思维的经典之作,从互联网思维的定义到互联网思维应用的具体案例表现。作者深入浅出、条分缕析,全面阐述互联网思维的内核与精神,逐一点评当前关于互联网思维的各种观点。本书从最初级的互联网思维应用到高端的粉丝经济,平台建设,自媒体营销的方法都有详细讲解介绍。让读者了解什么是互联网思维的同时还能学会把互联网思维运用到自己的工作学习已经生活中。
  • 中国3D打印的未来

    中国3D打印的未来

    自2012年以来,有关3D打印的报道屡见报端,这一新型制造技术引起了全世界的广泛关注。《中国3D打印的未来》作者、中国3D打印技术产业联盟秘书长罗军认为,中国从20世纪90年代初开始涉足3D打印技术,并取得了巨大进展,但与国外同行相比仍存在一定差距。特别是中国3D打印企业普遍存在“小而散”、各自为政的现象,如何发挥整合优势、抱团发展是目前亟需解决的问题。如果能够加强同行合作,抱团发展,形成合力,相信3D打印会成为唯一一项中国有可能赶超世界先进水平的技术。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 体感交互技术

    体感交互技术

    本书提出了体感计算的研究,探讨了基于体验性认知的个性化电子学习方式,并且分析了面向儿童的艺术创造体验,在体感虚拟化身的帮助下,用户可以通过身体运动,促进情感心智的全面发展,
热门推荐
  • 蛊鼠

    蛊鼠

    如果不是那次相亲,我可能依然烂在河南的一个农村里。我叫程大力,是个孤儿。这样的我,做梦也没想到,居然会被介绍去跟千井村的养蛇西施桃花相亲。没想到刚进千眼井。桃花家的蛇突然炸了窝,对我群起攻击。我狼狈逃窜,总算保住一条小命。惴惴不安回到破烂不堪的家中,没想到祸不单行,又被家中的老鼠袭击。机缘巧合之下,我和桃花发现我破烂不堪的老宅下居然有一个深不可测的鼠洞。经历了一系列不可思议得事件,我开始根据一些线索寻找上古神器。我逐渐发现,世界上充满了一个个谜团。我这个普通的农村孤儿,竟然可能是上古遗民的后代……
  • 都市邪医

    都市邪医

    小职员意外成了一所三流医院的妇科大夫,不管再难的疑难杂症,到了这里全都药到病除,咱就是都市邪医!
  • 天舞魅影

    天舞魅影

    “我会回来找你的,枫儿!”这是她对他的承诺。可是二十年过去了,她还没有回来,让他还在苦苦寻觅着他的幻姐姐。再次相遇,她该如何面对他,他已经不再是当年的小孩子了。从没有想过,再次的相遇竟让她对他产生了不该有的情感。--情节虚构,请勿模仿
  • 人生绝不能走错的9步棋

    人生绝不能走错的9步棋

    人生犹如下棋。高者能顾大局,谋大势,不以一子一地为重,以最终赢棋为目标;低手则寸土必争,结果辛辛苦苦地屡犯错误,以失败告终。在棋盘廝杀,棋子总是愈下愈少,人生总是愈来愈短,于是早时落错了子,后来都要加倍苦恼地应付。所幸者,人生的棋局,虽也是“起手无回”,观棋的人,却不必“观棋不语”,于是生命中,总有那么几个参谋,常助己开创美好的局面。
  • 大集譬喻王经

    大集譬喻王经

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 天才魂圣

    天才魂圣

    林凡!一个天才炼丹师,却被奸人所害。本应就此消亡天地间的他却被一条金龙所吃,而后转世重生在以修炼魂力为主的沧魂大陆。看林凡如何修炼魂力登上沧魂大陆的巅峰!
  • tfboys之三生缘定

    tfboys之三生缘定

    大家好!我是本文的作者夏雅恋,若读者觉得好看的话请推荐本文!2015.7.26.
  • 蜜糖誓言:萌妻千次逃离

    蜜糖誓言:萌妻千次逃离

    一次顶级学院探险,让她被两只狼吃的死死的。“我允许你拿我的名字开玩笑了吗?”东院惹上一只恶狼,性格狡诈为人嚣张。“是……臣再也不敢了。”“狡兔,我就算不要的东西,也不会拱手让人。”西院惹上一只凶狼,性格霸道身份不菲。“放我走吧……”毕业之后,没想到,逃离学院才是噩梦的开始。“狡兔,你还敢走吗?”“狡兔,呆在我身边。”两大总裁齐追围堵。俞狡兔眼泪哗啦啦的流。“明总裁,即总裁……你们就放过臣吧!”《双狼豪门》读者群【147314275】
  • 言佛

    言佛

    生逢乱世是出世还是当如世是舍一人而救天下,还是舍天下而救一人无念将会做出抉择
  • 神魔枪

    神魔枪

    东皇、西决、北魑、南音历经洪荒传承到今的上古四大家族,牵扯出一个扑朔迷离的神魔秘密……三次元素高潮,上古神魔之秘,贯穿整个星空大陆的空间裂痕,天魔宗的目的到底是什么?人字卷现世,命运的轮盘悄然转动,天地密卷,太古魔尊,神魔枪的苏醒是救世还是灭世?上古云帝转世到宁家,取名宁释,却遇到了同时投胎到本家的“人字卷”,天赋异禀的二人,从小便开始了在修炼一道上的比拼。为了提升实力,宁释和舅父端木雄川外出历练,恰逢宁少炎勾结天魔宗,半路引起冲突,雄川身死,宁释却意外结识了被灭族的南音一家的阴魂,得到神器南音琴。一个惊天大秘,便从这里开始一步步揭露出来……