tcp协议可提供多播服务(TCp协议可以提供)

      最后更新:2023-07-08 14:13

      图解TCP/IP

      计算机使用模式的演变:20世纪50年代 批处理时代20世纪60年代 分时系统时代20世纪70年代 计算机间通信时代20世纪80年代 计算机网络时代20世纪90年代 互联网普及时代2000年以互联网为中心的时代2010年无论何时何地地一切皆TCP/IP的网络时代在计算机网络与信息通信领域,人们经常提及“协议”。简单来说。协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能实现通信。换句话说,协议就是计算机之间的通信语言,只有支持相同的协议,计算机之间才能相互通信。计算机通信也会在每一个分组中附加上源主机地址和目标主机地址送给通信线路。这些发送端地址、接收端地址以及分组序号写入的部分称为“报文首部”。TCP/IP协议并非ISO(国际标准化组织)所制定的某种国际标准,而是由IETF(Internet Engineering Task Force国际互联网工程任务组)所建议的、致力于推进器标准化作业的一种协议。OSI参考模型应用层:针对特定应用的协议。以电子邮件为例,用户A在主机A上新建一封电子邮件,指定收件人为B,并输入邮件内容为“早上好”。应用层协议会在所要传递数据的前端附加一个首部(标签)信息,该首部标明了邮件内容为“早上好”和收件人为B。表示层:设备固有数据格式和网络标准数据格式的转换。用户A和用户B使用的邮件客户端一致,便能够顺利收取和阅读邮件,不一致时表示层就发挥作用了:将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后再发送出去,接收端也进行相应处理。表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据转交给下一层处理。会话层:通信管理。负责建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层。假定用户A新建了5封电子邮件准备发送给用户B,是建立一次连接一起发送,还是分别建立5次连接各自发送,都是会话层决定的,会话层和表示层一样,也会在数据前段附加首部或标签信息再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息。传输层:管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠传送到目标地址)。用主机A将“早上好”这一数据发送给主机B,期间可能因为某些原因导致数据损坏,主机B只收到“早上”,此时也会将这一事实告诉主机A,主机A得知情况会将后面的“好”重发给主机B。保证数据传输的可靠性是传输层的一个重要作用。为了确保可靠性,这一层所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的。网络层:地址管理与路由选择。两端主机之间虽然有众多数据链路,但能够将数据从主机A送到主机B也都是网络层的功劳。相当于TCP/IP协议中的IP协议,网络层不能保证数据的可达性,所以需要传输层TCP协议确保可达性,所以TCP/IP协议实现了可靠传输。数据链路层:互连设备之间传送和识别数据帧。网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据。物理层:以“0”、“1”代表电压的高低、灯光的闪灭。界定连接器和网线的规格。将数据的0、1转换为电压和脉冲光传输给物理的传输介质。计算机之间的网络连接通过电缆相互连接。任何一台计算机连接网络时,必须要使用网卡(网络适配器、NIC、LAN卡),中继器的作用是将电缆传过来的信号调整和放大再传给另一个电缆,可以完成不同媒介之间的连接工作。网桥是数据链路层面上连接两个网络的设备,提供的是传递数据帧的作用,并且还具备自学机制。路由器是在网络层面上(OSI七层模型网络层)连接两个网络、并对分组报文进行转发的设备。网桥是根据物理地址(MAC地址)进行处理,而路由器/3层交换机则是根据IP地址进行处理的。由此,TCP/IP中网络层的地址就成为了IP地址。对于并发访问量非常大的一个企业级Web站点,使用一台服务器不足以满足前端的访问需求,这时通常会架设多台服务器来分担。这些服务器的访问的入口地址通常只有一个,为了能通过同一个URL将前端访问分发到后台多个服务器上,可以将这些服务器的前端加一个负载均衡器。这种负载均衡器就是4-7层交换机的一种。网关是OSI参考模型中负责将从传输层到应用层的数据进行转换和转发的设备。在两个不能进行直接通信的协议之间进行翻译,最终实现两者的通信。非常典型的例子就是互联网邮件和手机邮件之间的转换服务。防火墙也是一款通过网关通信,针对不用应用提高安全性的产品。美国军方利用分组交换技术组件的ARPANET网络是互联网的鼻祖。而BSD UNIX操作系统实现了TCP/IP协议,随着UNIX系统的普及,TCP/IP协议开始盛行。TCP/IP可以单纯的指这两种协议,然而在很多情况下,它指的是包含HTTP、SMTP、FTP、TCP、UDP、IP、ARP等很多协议的网际协议族。发送数据包的过程,和上节OSI参考模型中介绍的差不多。数据链路层是由网络接口(以太网驱动)来处理的,它会改数据附加上以太网首部,以太网首部中包含接收端的MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。在以太网普及之初,一般多台终端使用同一根同轴电缆的共享介质型连接方式,访问控制一般以半双工通信为前提采用CSMA/CD方式。随着ATM交换技术的进步和CAT5 UTP电缆的普及很快发生了变化,逐渐采用像非共享介质网络那样直接与交换机连接的方式。网络层与数据链路层的关系某人要去一个很远的地方旅行,并计划先后乘坐飞机、火车、公交车到达目的地。旅行社不仅帮他预订好了飞机票和火车票,甚至还为他指定了一个详细的行程表,详细到几点几分需要乘坐飞机或火车都一目了然。机票和火车票只能够在某一限定区间内移动,此处的“区间内”就如同通信网络上的数据链路。这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等首部信息。整个行程表的作用就相当于网络层。DNS:将域名和IP地址相匹配。ARP:以目标IP地址为线索,用来定位下一个应该接受数据分包的网络设备对应的MAC地址。ARP只适用于IPv4,IPv6可以用ICMPv6替代ARP发送邻居探索消息。ICMP:在IP通信中如果某个IP包因为某种原因未能送达目标地址,那么这个具体的原因将由ICMP负责通知。DHCP:使用移动设备时,每移动到一个新地方,都要重新设置IP地址,为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP协议。NAT:是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。IP隧道:IPv4和IPv6之间进行通信的技术就是IP隧道。TCP用于低速可靠传输UDP用于高速不可靠传输端口号就是用来识别同一台计算机中进行通信的不同应用程序,也被称为程序地址。TCP传输利用窗口控制提高速度,无需等到每次应答来进行下一次发送,而是有个窗口进行缓冲,来提高吞吐量。TCP拥塞控制,利用拥塞窗口来调节发送的数据量,拥塞时减小窗口,流畅是增大窗口来控制吞吐量。我们日常网络访问的http用的是tcp ,那还是看一下这个过程吧tcp可以提供全双工的数据流传输服务,全双工说白了,就是同一时间A可以发信息给B , B也可以发消息给A ,俩人同时都可以给对方发消息;半双工就是某个时间段A可以发给B ,但B不能给A ,换个时间段,就反过来了。这个过程理解起来,就像两人在喊话:A:喂,有人吗,我想建立连接B:有哇,你建立吧,等你吆A:好哒,我来啦然后俩人就建立连接了...一定要三次握手么,两次行不行?这么一个场景:A->B: 洞幺洞幺,我是洞拐,收到请回复。B->A: 洞拐洞拐,洞幺收到。请问根据以上对话判断:1、B是否能收到A的信息? (答案是肯定的)2、A是否能收到B的信息? (你猜?)tcp的核心思想是保证数据可靠传输,如果2次,显然不行,但3次就一定行么?未必,可能第三次的时候网络中断了,然后A就认为B收到了,然后一通发消息,其实B没收到,但这是无法完全保证的。无论握手多少次都不能满足传输的绝对可靠,为了效率跟相对可靠而看,3次刚刚好,所以就3次了(正好AB相互确认了一次)。举个栗子:把客户端比作男孩,服务器比作女孩。通过他们的分手来说明“四次挥手”过程:"第一次挥手" :日久见人心,男孩发现女孩变成了自己讨厌的样子,忍无可忍,于是决定分手,随即写了一封信告诉女孩。“第二次挥手” :女孩收到信之后,知道了男孩要和自己分手,怒火中烧,心中暗骂:你算什么东西,当初你可不是这个样子的!于是立马给男孩写了一封回信:分手就分手,给我点时间,我要把你的东西整理好,全部还给你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。随后等待女孩把自己的东西收拾好。“第三次挥手” :过了几天,女孩把男孩送的东西都整理好了,于是再次写信给男孩:你的东西我整理好了,快把它们拿走,从此你我恩断义绝!“第四次挥手” :男孩收到女孩第二封信之后,知道了女孩收拾好东西了,可以正式分手了,于是再次写信告诉女孩:我知道了,这就去拿回来!为什么连接的时候是三次握手,关闭的时候却是四次握手?答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文 。其中ACK报文是用来应答的, SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET ,所以只能先回复一个ACK报文 ,告诉Client端 ,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文 ,因此不能一起发送。故需要四步握手。静态路由是指事先设置好路由器和主机中并将路由信息固定的一种方法。缺点是某个路由器发生故障,基本上无法自动绕过发生故障的节点,只有在管理员手工设置以后才能恢复正常。动态路由是管理员先设置好路由协议,其设定过程的复杂程度与具体要设置路由协议的类型有直接关系。在路由器个数较多的网络,采用动态路由显然能够减轻管理员负担。网络发生故障,只要有一个可绕的其他路径,数据包会自动选择这个路径,但路由器需要定期相互交换必要的路由控制信息,会增加一定程度的负荷。根据路由控制范围分为IGP(内部网关协议)和EGP(外部网关协议)路由算法分为距离向量算法和链路状态算法距离向量算法:通过距离与方向确定通往目标网络的路径链路状态算法:链路状态中路由器知道网络的连接状态,并根据链路信息确定通往目标网络的路径。IGP包含RIP、RIP2、OSPFEGP包含EGP、BGPRIP是距离向量型的一种路由协议,广泛应用于LANRIP2是RIP的第二版。新增以下特点:使用多播、支持子网掩码、路由选择域、外部路由标志、身份验证密钥OSPF是一种链路状态型路由协议。在RIP和OSPF中利用IP的网络地址部分进行着路由控制,然而BGP则需要放眼整个互联网进行路由控制。BGP的最终路由控制表有网络地址和下一站的路由器组来表示,不过它会根据所要经过的AS个数进行路由控制。有了AS编号的域,就相当于有了自己一个独立的“国家”。AS的代表可以决定AS内部的网络运营和相关政策。与其他AS相连的时候,可以像一位“外交官”一样签署合约再进行连接。正是有了这些不同地区的AS通过签约的相互连接,才有了今天全球范围内的互联网。转发IP数据包的过程中除了使用路由技术外,还在使用标记交换技术。最有代表性的就是多协议标记交换技术(MPLS)。MPLS的标记不像MAC地址直接对应到硬件设备。因此,MPLS不需要具备以外网或ATM等数据链路层协议的作用,而只需要关注它与下面一层IP层之间的功能和协议即可。MPLS优点:1.转发速度快2.利用标记生成虚拟路径,并在它的上面实现IP等数据包的通信。
      图解TCP/IP

      TCP是否支持多播?为什么?

      支持,如: JGroup是一种可靠的群组通讯工具,用Java实现。JGroup以IP多播为基础并且提供可靠性和群组功能。其中,可靠性包括1,消息不丢失2,大消息拆分和重组功能3,保证消息有序性4,消息原子性(某条消息要么全部成员都收到,或都收不到) 群组功能包括……
      如下:
      TCP是否支持多播?为什么?

      简单的电脑知识

      TCPTCP建立连接时的三次握手TCP:Transmission Control Protocol 传输控制协议 TCP简介TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK); 如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用慢启动算法。[1][2]什么是TCP/IP?TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。它是由ARPANET网的研究机构发展起来的。有时我们将TCP/IP描述为互联网协议集"Internet Protocol Suite",TCP和IP是其中的两个协议(后面将会介绍)。由于TCP和IP是大家熟悉的协议,以至于用TCP/IP或IP/TCP这个词代替了整个协议集。这尽管有点奇怪,但没有必要去争论这个习惯。例如,有时我们讨论NFS 是基于TCP/IP时,尽管它根本没用到TCP(只用到IP,和另一种交互式 协议UDP而不是TCP)。Internet是网络的集合,包括ARPANET、NSFNET、分布在各地的局域网、以及其它类型的网络,如(DDN,Defense Data Network美国国防数据网络),这些统称为Internet。所有这些大大小小的网络互联在一起。(因为大多数网络基本协议是由DDN组织开发的,所以以前有时DDN与Internet在某种意义上具有相同的含义)。网络上的用户可以互相传送信息,除一些有授权限制和安全考虑外。一般的讲,互联网协议文档案是Internet委员会自己采纳的基本标准。 TCP/IP标准与其说由委员会指定,倒不如说由"舆论"来开发的。 任何人都可以提供一个文档,以RFC(Request for Comment需求注释) 方式公布。TCP/IP的标准在一系列称为RFC的文档中公布。文档由技术专家、特别工作组、或RFC编辑修订。公布一个文档时,该文档被赋予一个RFC量,如RFC959说明FTP、RFC793说明TCP、RFC791说明IP等。 最初的RFC一直保留而从来不会被更新,如果修改了该文档,则该文档又以一个新号码公布。因此,重要的是要确认你拥有了关于某个专题的最新RFC文档。文后会列出主要的RFC文档号。不管怎样,TCP/IP是一个协议集。为应用提供一些"低级"功能,这些包括IP、TCP、UDP。其它是执行特定任务的应用协议,如计算机间传送文件、发送电子邮件、或找出谁注册到另外一台计算机。因此, 最重要的"商业"TCP/IP服务有:* 文件传送File Transfer。文件传送协议FTP(File Transfer Protocol)允许用户从一台计算机到另一台取得文件,或发送文件到另外一台计算机。从安全性方面考虑,需要用户指定一个使用其它计算机的用户名和口令。它不同与NFS(Network File System)和Netbios协议。一旦你要访问另一台 系统中的文件,任何时刻都要运行FTP。而且你只能拷贝文件到自己的机器中去来使用它。(RFC 959中关于FTP的说明)* 远程登录Remote login网络终端协议TELNET允许用户登录到网络上任一计算机上。你可启动一个远程进程连接到指定的计算机,直到进程结束,期间你所键入的内容被送到所指定的计算机。值得注意的是,这时你实际上是与你的计算机进行对话。TELENET程序使得你的计算机在整个过程中不见了,所敲的每一个字符直接送到所登录的计算机系统。一般的说,这种远程连接是通过类式拨号连接的,也就是,拨通后,远程系统提示你输入注册名和口令,退出远程系统,TELNET程序也就退出,你又与自己的计算机对话了。微电脑中的TELNET工具一般含有一个终端仿真程序。* 计算机邮件Mail允许你发送消息给其它计算机的用户。通常,人们趋向于使用指定的一台或两台计算机。计算机邮件系统只需你简单地往另一用户的邮件文件中添加信息,但随之产生问题,使用的微电脑的环境不同,还有重要的是宏(MICRO)不适合于接受计算机邮件。为了发送电子邮件,邮件软件希望连接到目的计算机,如果是微电脑,也许它已关机,或者正在运行另一个应用程序呢?出于这种原因,通常由一个较大的系统来处理这些邮件,也就是一个一直运行着的邮件服务器。邮件软件成为用户从邮件服务器取回邮件的一个界面。任何一个的TCP/IP工具提供上述这些服务。这些传统的应用功能在基于TCP/IP的网络中一直扮演非常重要的角色。目前情况有点变化,这些功能使用也发生变化,如老系统的改造,计算机的发展等,出现了各种安装版本,如:微电脑、工作站、小型机、和巨型机等。这些计算机好像在一起完成指定的任务,尽管有时看来像是只用到某个指定 的计算机,但它是通过网络得到其它计算机系统的服务。服务器Server是为网络上其它提供指定服务的系统,客户Client是得到这种服务的另外计算机系统。(值得注意的是,服务/客户机不一定是不同的计算机,有可能是同一计算机中的不同运行程序)。以下是几种目前计算机上典型的一些服务,这些服务可在TCP/IP网络上调用。* 网络文件系统(NFS)这种访问另一计算机的文件的方法非常接近于流行的FTP。网络文件系统提供磁盘或设备服务,而无需特定的网络实用程序来访问另一系统的文件。可以简单地认为它是一个外加的磁盘驱动器。这种额外"虚拟"磁盘驱动器就是其它计算机系统的磁盘。这非常有用。你只需加大几台计算机的磁盘容量,就可使网络上其他用户访问它,且不说所带来的经济效益,它还能够让几台工作的计算机共享相同的文件。它也使得系统维护和备份易如反掌,因为再不必为大量的不同机器上 的文件的升级和备份而担心。* 远程打印(Remote printing)允许你使用其它计算机上的打印机,好像这些打印机直接连到你的计算机上。* 远程执行(Remote execution)允许你请求运行在不同计算机上的特殊程序。当你在一个很小的计算机上运行一个需要大机系统资源的程序时,这时候远程执行非常有用。* 名字服务器(Name servers)在一个大的系统安装过程中,需要用到大量的各种名字,包括用户名、口令,姓名、网络地址、帐号等,管理这些是非常令人乏味的。因此将这些数据形成数据库,放到一个小系统中去,其它系统通过网络来访问这些数据。* 终端服务器(Terminal servers)很多的终端连接安装不再直接将终端连到计算机,取而代之的是,将他们连接到终端服务器上。终端服务器是一个小的计算机,它只需知道怎样运行TELNET(或其它一些完成远程登录的协议)。如果你的终端想连上去,只用键入要连的计算机名就可。通常有可能同时有几个这种连接,这时终端服务器采用快速开关技术来切换。上述所描述的一些协议是由Berkeley, Sun,或其它组织定义的。因此,它们不是互联网协议集(Internet Protocol Suite)的一部分, 只是使用到TCP/IP的工具,如同一般的TCP/IP 应用协议。因为协议的定义不一致,并且商业支持的TCP/IP工具广泛应用,也许会把这些协议作为互联协议集中的一部分。上述列出的只是基于TCP/IP部分服务的一些简单例子,但包含了一些"主要"的应用。TCP的服务TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。TCP提供端到端、全双工通信;采用字节流方式,如果字节流太长,将其分段;提供紧急数据传送功能。尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。TCP通过下列方式来提供可靠性:•应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)TCP如何确定报文段的长度。•当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。•当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒•TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。•既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。•既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。•TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不在字节流中插入记录标识符。我们将这称为字节流服务(bytestreamservice)。如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4次接收这80个字节,每次接收20字节。一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。这种对字节流的处理方式与Unix操作系统对文件的处理方式很相似。Unix的内核对一个应用读或写的内容不作任何解释,而是交给应用程序处理。对Unix的内核来说,它无法区分一个二进制文件与一个文本文件。TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器时入Established状态,完成三次握手。TCP建立连接时的三次握手TCP所提供服务的主要特点(1)面向连接的传输;(2)端到端的通信;(3)高可靠性,确保传输数据的正确性,不出现丢失或乱序;(4)全双工方式传输;(5)采用字节流方式,即以字节为单位传输字节序列;(6)紧急数据传送功能。TCP公司简介Technical Consumer Products,INC之英文缩写TCP,是美国大型跨国光源公司,主要生产经营各种优质节能光源、灯具及相关照明电器产品。1997年,全球第一支高品质螺旋型节能灯在美国TCP公司问世,一经推出即得到国际照明行业的高度评价,并受到美国消费者的普遍欢迎。TCP公司当年即荣获全美节能灯销售第一的桂冠。随着TCP不断追求技术创新,产品品质不断提升,其数百款光源产品均通过了国际能效认证机构ENERGY STAR(能源之星)的认证,多年保持美国销量第一的殊荣,产品行销全球许多国家。TCP也成为美国、加拿大等北美地区最著名的光源品牌之一。上个世纪末,TCP来到中国,在上海市及江苏省投资数亿兴建了多家现代照明生产基地,员工总数已超过14000人,工程技术人员占15%。TCP全资控股的上海振欣电子工程有限公司,镇江强凌电子有限公司、扬州强凌电子有限公司以及淮安强凌电子有限公司每天有超过140万只的高品质节能灯光源出口到美国等西方发达国家。2004年,美国TCP(上海)天灿宝照明电器有限公司成立,其专门负责高品质的TCP光源及灯具产品在中国国内的销售和服务。在前期市场导入阶段,TCP在上海、北京已取得成功的销售业绩,数百家大型机构抢先分享了TCP照明科技。TCP“让照明成为享受”的理念,正走向中国日益发展的新生活。制造理念:高品质、高可靠性、高一致性、低价位企业精神:诚信、发展、创新、超越企业座右铭:你想要一个稳定的世界,必须创造一个世界。品牌战略:做世界上最好的节能光源,让照明成为享受。产品战略:让所有使用白炽灯的地方都可以用节能灯代替。营销战略:以上海、北京、广州为中心,逐步建立遍布全国的营销组织网络。TCP射孔油管传输射孔TCP的重传策略TCP协议用于控制数据段是否需要重传的依据是设立重发定时器。在发送一个数据段的同时启动一个重发定时器,如果在定时器超时前收到确认就关闭该定时器,如果定时器超时前没有收到确认,则重传该数据段。这种重传策略的关键是对定时器初值的设定。目前采用较多的算法是Jacobson于1988年提出的一种不断调整超时时间间隔的动态算法。其工作原理是:对每条连接TCP都保持一个变量RTT,用于存放当前到目的端往返所需要时间最接近的估计值。当发送一个数据段时,同时启动连接的定时器,如果在定时器超时前确认到达,则记录所需要的时间(M),并修正RTT的值,如果定时器超时前没有收到确认,则将RTT的值增加1倍。TCP协议是如何确保数据传输高可靠性为了保证可靠性,发送的报文都有递增的序列号。序呈和确认号用来确保传输的可靠性。此外,对每个报文都设立一个定时器,设定一个最大时延。对那些超过最大时延仍没有收到确认信息的报文就认为已经丢失,需要重传。 你那个上海——大学是按逻辑搜索的(非、与、或)百度上没有结果,只能搜索到你的关键词,上海和大学的内容
      1、TCP协议提供了可靠的面向对象的数据流传输服务的规则和约定。简单的说在TCP模式中,对方发一个数据包给你,你要发一个确认数据包给对方。通过这种确认来提供可靠性。 2、上海not大学表示搜索关键字为上海,但不包括大学上海or大学表示搜索关键字为上海或者大学 上海and大学表示搜索关键字中含有上海和大学
      什么意思?? 没看懂
      简单的电脑知识

      计算机网络——TCP/UDP协议

      计算机网络七层模型中,传输层有两个重要的协议:(1)用户数据报协议UDP (User Datagram Protocol)(2)传输控制协议TCP (Transmission Control Protocol)UDP 在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP 报文后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 却是一种最有效的工作方式。TCP 则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。UDP 的主要特点是:首部手段很简单,只有8 个字节,由四个字段组成,每个字段的长度都是两个字节。前面已经讲过,每条TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)或插口。套接字格式如下:套接宁socket= (IP 地址:端口号’)每一条TCP 连接唯一地被通信两端的两个端点(即两个套接宇)所确定。即:TCP 连接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}3次握手链接4次握手释放链接断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。各个状态节点解释如下:下面为了讨论问题的万便,我们仅考虑A发送数据而B 接收数据并发送确认。因此A 叫做发送方,而B 叫做接收方。“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。滑动窗口协议比较复杂,是TCP 协议的精髓所在。这里先给出连续ARQ 协议最基本的概念,但不涉提到许多细节问题。详细的滑动窗口协议将在后面讨论。下图表示发送方维持的发送窗口,它的意义是:位于发送窗口内的5 个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。连续ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都己正确收到了。累积确认的优点是容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。例如,如果发送方发送了前5 个分组,而中间的第3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N (回退N ),表示需要再退回来重传己发送过的N 个分组。可见当通信线路质量不好时,连续ARQ 协议会带来负面的影响。TCP 的滑动窗口是以字节为单位的。现假定A 收到了B 发来的确认报文段,其中窗口是20 (字节),而确认号是31 (这表明B 期望收到的下一个序号是31 ,而序号30 为止的数据己经收到了)。根据这两个数据, A 就构造出自己的发送窗口,其位置如图所示。发送窗口表示:在没有收到B 的确认的情况下, A可以连续把窗口内的数据都发送出去。凡是己经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。发送窗口后沿的后面部分表示己发送且己收到了确认。这些数据显然不需要再保留了。而发送窗口前沿的前面部分表示不允许发送的,因为接收方都没有为这部分数据保留临时存放的缓存空间。现在假定A 发送了序号为31 ~ 41 的数据。这时发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9 个字节( 42 ~ 50 )是允许发送但尚未发送的。】再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 号为止的数据是已经发送过确认,并且己经交付给主机了。因此在B 可以不再保留这些数据。接收窗口内的序号(31~50)足允许接收的。B 收到了序号为32 和33 的数据,这些数据没有按序到达,因为序号为31 的数据没有收到(也许丢失了,也许滞留在网络中的某处)。请注意, B 只能对按序收到的数据中的最高序号给出确认,因此B 发送的确认报文段中的确认号仍然是31 (即期望收到的序号)。现在假定B 收到了序号为31 的数据,并把序号为31~33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A 发送确认,其中窗口值仍为20,但确认号是34,这表明B 已经收到了到序号33 为止的数据。我们注意到,B还收到了序号为37, 38 和40 的数据,但这些都没有按序到达,只能先存在接收窗口。A收到B的确认后,就可以把发送窗口向前滑动3个序号,指针P2 不动。可以看出,现在A 的可用窗口增大了,可发送的序号范围是42~53。整个过程如下图:A 在继续发送完序号42-53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认。由于A 的发送窗口己满,可用窗口己减小到0,因此必须停止发送。上面已经讲到, TCP 的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP 最复杂的问题之一。TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP 保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间, S 表示Smoothed 。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时, RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:新的RTTs = (1 - α)×(旧的RTTs) + α ×(新的RTT样本)α 越大表示新的RTTs受新的RTT样本的影响越大。推荐的α 值为0.125,用这种方法得出的加权平均往返时间RTTs 就比测量出的RTT值更加平滑。显然,超时计时器设置的超时重传时间RTO (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 2988 建议使用下式计算RTO:RTO = RTTs + 4 × RTTdRTTd是RTT 的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。计算公式如下:新的RTTd= (1- β)×(旧的RTTd) + β × |RTTs-新的RTT样本|发现问题:如图所示,发送出一个报文段。设定的重传时间到了,还没有收到确认。于是重传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?若收到的确认是对重传报文段的确认,但却被源主机当成是对原来的报文段的确认,则这样计算出的RTTs 和超时重传时间RTO 就会偏大。若后面再发送的报文段又是经过重传后才收到确认报文段,则按此方法得出的超时重传时间RTO 就越来越长。若收到的确认是对原来的报文段的确认,但被当成是对重传报文段的确认,则由此计算出的RTTs 和RTO 都会偏小。这就必然导致报文段过多地重传。这样就有可能使RTO 越来越短。Kam 提出了一个算法:在计算加权平均RTTs 时,只要报文段重传了就不采用其往返时间样本。这样得出的加权平均RTTs 和RTO 就较准确。新问题:设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Kam 算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。解决方案:对Kam 算法进行修正,方法是z报文段每重传一次,就把超时重传时间RTO 增大一些。典型的做法是取新的重传时间为2 倍的旧的重传时间。当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间。流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在TCP 连接上实现对发送方的流量控制。接收方的主机B 进行了三次流量控制。第一次把窗口减小到rwnd =300,第二次又减到rwnd = 100 ,最后减到rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B 重新发出一个新的窗口值为止。我们还应注意到,B 向A 发送的三个报文段都设置了ACK=1,只有在ACK=1 时确认号字段才有意义。发生死锁:现在我们考虑一种情况。上图中, B 向A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。于是B 向A 发送了rwnd = 400 的报文段。然而这个报文段在传送过程中丢失了。A 一直等待收到B 发送的非零窗口的通知,而B 也一直等待A 发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。解决方案:TCP 为每一个连接设有一个持续计时器(persistence timer)。只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1 宇节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。1 TCP连接时是三次握手,那么两次握手可行吗?在《计算机网络》中是这样解释的:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。2 为什么TCP连接是三次,挥手确是四次?在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。3 为什么在第四次挥手后会有2个MSL的延时?MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。1 文件传送协议文件传送协议FTP (File Transfer Protocol) [RFC 959]是因特网上使用得最广泛的文件传送协议,底层采用TCP协议。盯P 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。在进行文件传输时,客户和服务器之间要建立两个并行的TCP 连接:“控制连接”(21端口)和“数据连接”(22端口)。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。2 简单文件传送协议TFTPTCP/IP 协议族中还有一个简单文件传送协议TFfP (Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,端口号69。TFfP 也使用客户服务器方式,但它使用UDP 数据报,因此TFfP 需要有自己的差错改正措施。TFfP 只支持文件传输而不支持交耳。3 TELNETTELNET 是一个简单的远程终端协议,底层采用TCP协议。TELNET 也使用客户服务器方式。在本地系统运行TELNET 客户进程,而在远地主机则运行TELNET 服务器进程,占用端口23。4 邮件传输协议一个电子邮件系统应具如图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP )和邮件读取协议(如POP3), POP3 是邮局协议(Post Office Protocol)的版本3 。SMTP 和POP3 (或IMAP )都是在TCP 连接的上面传送邮件,使用TCP 的目的是为了使邮件的传送成为可靠的。
      计算机网络——TCP/UDP协议

      TCP与UDP的区别

      在介绍TCP和UDP协议之前,有必要先了解下TCP/IP模型,TCP/IP中的两个具有代表性的传输协议:TCP和UDP。 TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。TCP协议全称是传输控制协议,是一种面向连接、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。流就是指不间断的数据结构,可以想象成水管中的水流。TCP 在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务(TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。最初客户端和服务端都处于CLOSED(关闭)状态,客户端主动打开连接,服务端被动打开连接。--- 为了防止已经失效的连接请求又突然被服务端接收,从而产生错误。比如:A发出的第一个连接请求报文段并没有丢失,而是在网络结点时间长了,以致于延误到连接释放以后的某个时间段才到达B,但是B收到此失效的请求后,就误以为A又发出一次新的连接请求,于是就向A发出确认报文段,同意建立连接。出现失效的连接请求报文段被服务端接收的情况,从而产生错误。UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP在传送数据之前不需要建立连接,远地主机在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下,UDP却是最有效的一种比如QQ语音、QQ视频、直播等即时通信应用。因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的1、连接的区别TCP面向连接,即发送数据之前先建立连接。UDP是无连接的,即发送数据之前是不需要建立连接的。2、安全方面的区别TCP是全双工的可靠通信,提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。使用流量控制和拥塞控制。UDP是不可靠传输,尽最大努力交付,即不保证可靠交付。3、传输效率的区别TCP传输效率较低。UDP传输效率高,适用于对高速传输和实时性有较高要求的通信或广播通信。4、连接对象数量的区别TCP连接只能是点到点,一对一的。UDP支持一对一,一对多,多对一和多对多的交互通信。5、传输方式的区别TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流。适用于要求可靠传输的应用比如文件传输等。UDP面向报文,没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低,对实时应用很有用比如实时视频会议等。6、首部开销TCP首部开销最小20字节,最大60字节。 UDP首部开销小,只有8个字节。
      TCP与UDP的区别

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类