TCP与IP协议.docx
《TCP与IP协议.docx》由会员分享,可在线阅读,更多相关《TCP与IP协议.docx(20页珍藏版)》请在冰豆网上搜索。
![TCP与IP协议.docx](https://file1.bdocx.com/fileroot1/2023-5/31/43700426-f409-4265-a5a3-ada927056da8/43700426-f409-4265-a5a3-ada927056da81.gif)
TCP与IP协议
TCP/IP协议
TCP/IP是TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
通俗而言:
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP是给因特网的每一台联网设备规定一个地址。
中文名:
传输控制协议/因特网互联协议;
外文名:
TransmissionControlProtocol/InternetProtocol;
又名:
网络通讯协议;
简称:
TCP/IP协议层级结构4层。
目录
1历史
2名词定义
▪IP
▪TCP
▪UDP
▪ICMP
▪通讯端口
▪数据格式
▪IP地址
3产生背景
4开发过程
▪IPV4
▪IPv6
5网络参考模型
▪OSI参考模型
▪TCP/IP参考模型
6层次
▪网络接口层
▪网络层
▪传输层
▪应用层
7特点
▪主要特点
▪协议优势
▪主要缺点
8相关应用
▪协议测试
▪协议重置
1、TCP/IP协议历史
为了减少网络设计的复杂性,大多数网络都采用分层结构。
对于不同的网络,层的数量、名字、内容和功能都不尽相同。
在相同的网络中,一台机器上的第N层与另一台机器上的第N层可利用第N层协议进行通信,协议基本上是双方关于如何进行通信所达成的一致。
不同机器中包含的对应层的实体叫做对等进程。
在对等进程利用协议进行通信时,实际上并不是直接将数据从一台机器的第N层传送到另一台机器的第N层,而是每一层都把数据连同该层的控制信息打包交给它的下一层,它的下一层把这些内容看做数据,再加上它这一层的控制信息一起交给更下一层,依此类推,直到最下层。
最下层是物理介质,它进行实际的通信。
相邻层之间有接口,接口定义下层向上层提供的原语操作和服务。
相邻层之间要交换信息,对等接口必须有一致同意的规则。
层和协议的集合被称为网络体系结构。
每一层中的活动元素通常称为实体,实体既可以是软件实体,也可以是硬件实体。
第N层实体实现的服务被第N+1层所使用。
在这种情况下,第N层称为服务提供者,第N+1层称为服务用户。
服务是在服务接入点提供给上层使用的。
服务可分为面向连接的服务和面向无连接的服务,它在形式上是由一组原语来描述的。
这些原语可供访问该服务的用户及其他实体使用。
2、TCP/IP协议名词定义
2.1TCP/IP协议IP
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。
IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。
也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。
IP确认包含一个选项,叫作IPsourcerouting,可以用来指定一条源地址和目的地址之间的直接路径。
对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。
这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。
那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2.2TCP/IP协议TCP
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。
TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。
TCP将包排序并进行错误检查,同时实现虚电路间的连接。
TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。
应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。
DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
2.3TCP/IP协议UDP
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。
因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。
相对于FTP或Telnet,这些服务需要交换的信息量较小。
使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
2.4TCP/IP协议ICMP
ICMP与IP位于同一层,它被用来传送IP的控制信息。
它主要是用来提供有关通向目的地址的路径信息。
ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。
另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。
PING是最常用的基于ICMP的服务。
2.5TCP/IP协议通讯端口
TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。
用户使用Telnet客户程序与服务进程建立一个连接。
客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。
因而,这个连接是双工的,可以用来进行读写。
两个系统间的多重Telnet连接是如何相互确认并协调一致呢?
TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:
源IP地址发送包的IP地址。
目的IP地址接收包的IP地址。
源端口源系统上的连接的端口。
目的端口目的系统上的连接的端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。
一个端口对应一个16比特的数。
服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。
这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
2.6TCP/IP协议数据格式
数据帧:
帧头+IP数据包+帧尾(帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字)
IP数据包:
IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
TCP数据信息:
TCP头部+实际数据(TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
2.7TCP/IP协议IP地址
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。
为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。
就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。
所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。
而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(InternetProtocol的简写)地址,即用Internet协议语言表示的地址。
在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。
3、TCP/IP协议产生背景
在阿帕网(ARPA)产生运作之初,通过接口信号处理机实现互联的电脑并不多,大部分电脑相互之间不兼容。
在一台电脑上完成的工作,很难拿到另一台电脑上去用,想让硬件和软件都不一样的电脑联网,也有很多困难。
当时美国的状况是,陆军用的电脑是DEC系列产品,海军用的电脑是Honeywell中标机器,空军用的是IBM公司中标的电脑,每一个军种的电脑在各自的系里都运行良好,但却有一个大弊病:
不能共享资源。
当时科学家们提出这样一个理念:
“所有电脑生来都是平等的。
”为了让这些“生来平等”的电脑能够实现“资源共享”就得在这些系统的标准之上,建立一种大家共同都必须遵守的标准,这样才能让不同的电脑按照一定的规则进行“谈判”,并且在谈判之后能“握手”。
在确定今天因特网各个电脑之间“谈判规则”过程中,最重要的人物当数瑟夫(VintonG.Cerf)。
正是他的努力,才使今天各种不同的电脑能按照协议上网互联。
瑟夫也因此获得了与克莱因罗克(“因特网之父”)一样的美称“互联网之父”。
瑟夫从小喜欢标新立异,坚强而又热情。
中学读书时,就被允许使用加州大学洛杉矶分校的电脑,他认为“为电脑编程序是个非常激动人心的事,…只要把程序编好,就可以让电脑做任何事情。
”1965年,瑟夫从斯坦福大学毕业到IBM的一家公司当系统工程师,工作没多久,瑟夫就觉得知识不够用,于是到加州大学洛杉矶分校攻读博士,那时,正逢阿帕网的建立,“接口信号处理机”(IMP)的研试及网络测评中心的建立,瑟夫也成了著名科学家克莱因罗克手下的一位学生。
瑟夫与另外三位年轻人(温菲尔德、克罗克、布雷登)参与了阿帕网的第一个节点的联接。
此后不久,BBN公司对工作中各种情况发展有很强判断能力、被公认阿帕网建成作出巨大贡献的鲍伯·卡恩(BobKahn)也来到了加州大学洛杉矶分校。
在那段日子里,往往是卡恩提出需要什么软件,而瑟夫则通宵达旦地把符合要求的软件给编出来,然后他们一起测试这些软件,直至能正常运行。
当时的主要格局是这样的,罗伯茨提出网络思想设计网络布局,卡恩设计阿帕网总体结构,克莱因罗克负责网络测评系统,还有众多的科学家、研究生参与研究、试验。
69年9月阿帕网诞生、运行后,才发现各个IMP连接的时候,需要考虑用各种电脑都认可的信号来打开通信管道,数据通过后还要关闭通道。
否则这些IMP不会知道什么时候应该接收信号,什么时候该结束,这就是我们所说的通信“协议”的概念。
1970年12月制定出来了最初的通信协议由卡恩开发、瑟夫参与的“网络控制协议”(NCP),但要真正建立一个共同的标准很不容易,72年10月国际电脑通信大会结束后,科学家们都在为此而努力。
“包切换”理论为网络之间的联接方式提供了理论基础。
卡恩在自己研究的基础上,认识到只有深入理解各种操作系统的细节才能建立一种对各种操作系统普适的协议,73年卡恩请瑟夫一起考虑这个协议的各个细节,他们这次合作的结果产生了在开放系统下的所有网民和网管人员都在使用的“传输控制协议”(TCP,Transmission-ControlProtocol)和“因特网协议”(IP,InternetProtocol)即TCP/IP协议。
通俗而言:
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP是给因特网的每一台电脑规定一个地址。
1974年12月,卡恩、瑟夫的第一份TCP协议详细说明正式发表。
当时美国国防部与三个科学家小组签定了完成TCP/IP的协议,结果由瑟夫领衔的小组捷足先登,首先制定出了通过详细定义的TCP/IP协议标准。
当时作了一个试验,将信息包通过点对点的卫星网络,再通过陆地电缆,再通过卫星网络,再由地面传输,贯串欧洲和美国,经过各种电脑系统,全程9.4万公里竟然没有丢失一个数据位,远距离的可靠数据传输证明了TCP/IP协议的成功。
1983年1月1日,运行较长时期曾被人们习惯了的NCP被停止使用,TCP/IP协议作为因特网上所有主机间的共同协议,从此以后被作为一种必须遵守的规则被肯定和应用。
4、TCP/IP协议开发过程
在构建了阿帕网先驱之后,DARPA开始了其他数据传输技术的研究。
NCP诞生后两年,1972年,罗伯特·卡恩(RobertE.Kahn)被DARPA的信息技术处理办公室雇佣,在那里他研究卫星数据包网络和地面无线数据包网络,并且意识到能够在它们之间沟通的价值。
在1973年春天,已有的ARPANET网络控制程序(NCP)协议的开发者文顿·瑟夫(VintonCerf)加入到卡恩为ARPANET设计下一代协议而开发开放互连模型的工作中。
到了1973年夏天,卡恩和瑟夫很快就开发出了一个基本的改进形式,其中网络协议之间的不同通过使用一个公用互联网络协议而隐藏起来,并且可靠性由主机保证而不是像ARPANET那样由网络保证。
(瑟夫称赞HubertZimmerman和LouisPouzin(CYCLADES网络的设计者)在这个设计上发挥了重要影响。
)
由于网络的作用减少到最小的程度,就有可能将任何网络连接到一起,而不用管它们不同的特点,这样就解决了卡恩最初的问题。
(一个流行的说法提到瑟夫和卡恩工作的最终产品TCP/IP将在运行“两个罐子和一根弦”上,实际上它已经用在信鸽上。
一个称为网关(后来改为路由器以免与网关混淆)的计算机为每个网络提供一个接口并且在它们之间来回传输数据包。
这个设计思想更细的形式由瑟夫在斯坦福的网络研究组的1973年–1974年期间开发出来。
(处于同一时期的诞生了PARC通用包协议组的施乐PARC早期网络研究工作也有重要的技术影响;人们在两者之间摇摆不定。
)
DARPA于是与BBN、斯坦福和伦敦大学签署了协议开发不同硬件平台上协议的运行版本。
有四个版本被开发出来——TCPv1、TCPv2、在1978年春天分成TCPv3和IPv3的版本,后来就是稳定的TCP/IPv4——因特网仍然使用的标准协议。
1975年,两个网络之间的TCP/IP通信在斯坦福和伦敦大学学院(UCL)之间进行了测试。
1977年11月,三个网络之间的TCP/IP测试在美国、英国和挪威之间进行。
在1978年到1983年间,其他一些TCP/IP原型在多个研究中心之间开发出来。
ARPANET完全转换到TCP/IP在1983年1月1日发生。
1984年,美国国防部将TCP/IP作为所有计算机网络的标准。
1985年,因特网架构理事会举行了一个三天有250家厂商代表参加的关于计算产业使用TCP/IP的工作会议,帮助协议的推广并且引领它日渐增长的商业应用。
2005年9月9日卡恩和瑟夫由于他们对于美国文化做出的卓越贡献被授予总统自由勋章。
TCP/IP协议IPV4
IPv4,是互联网协议(InternetProtocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。
1981年JonPostel在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议),卫星链路等等。
局域网中最常用的是以太网。
传统的TCP/IP协议基于IPV4属于第二代互联网技术,核心技术属于美国。
它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。
但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至IP地址已经枯竭。
其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。
虽然用动态IP及Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。
在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过过渡到IPV6需要很长的一段过渡期。
中国主要用的就是ip4,在win7中已经有了ipv6的协议不过对于中国的用户们来说可能很久以后才会用到吧。
传统的TCP/IP协议基于电话宽带以及以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,网络正向着全光纤网络高速以太网方向发展,TCP/IP协议不能满足其发展需要。
1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。
那时只有几百台计算机互相联网。
到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。
因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6的开发。
TCP/IP协议IPv6
IPv6是InternetProtocolVersion6的缩写,其中InternetProtocol译为“互联网协议”。
IPv6是IETF(互联网工程任务组,InternetEngineeringTaskForce)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。
与IPV4相比,IPV6具有以下几个优势:
一、IPv6具有更大的地址空间。
IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
二、IPv6使用更小的路由表。
IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三、IPv6增加了增强的组播(Multicast)支持以及对流的控制(FlowControl),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,QualityofService)控制提供了良好的网络平台。
四、IPv6加入了对自动配置(AutoConfiguration)的支持。
这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
五、IPv6具有更高的安全性。
在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。
5、TCP/IP协议网络参考模型
5.1OSI参考模型
OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。
OSI参考模型全称是开放系统互连参考模型(OpenSystemInterconnectionReferenceModel)。
这一参考模型共分为七层:
物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图1所示。
图1OSI参考模型
物理层(PhysicalLayer)主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等。
数据链路层(DataLinkLayer)的任务是加强物理层的功能,使其对网络层显示为一条无错的线路。
网络层(NetworkLayer)确定分组从源端到目的端的路由选择。
路由可以选用网络中固定的静态路由表,也可以在每一次会话时决定,还可以根据当前的网络负载状况,灵活地为每一个分组分别决定。
传输层(TransportLayer)从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,而且使会话层不受硬件变化的影响。
通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。
但如果传输连接需要一个较高的吞吐量,传输层也可以为其创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。
而另一方面,如果创建或维持一个独立的网络连接不合算,传输层也可将几个传输连接复用到同一个网络连接上,以降低费用。
除了多路复用,传输层还需要解决跨网络连接的建立和拆除,并具有流量控制机制。
会话层(SessionLayer)允许不同机器上的用户之间建立会话关系,既可以进行类似传输层的普通数据传输,也可以被用于远程登录到分时系统或在两台机器间传递文件。
表示层(PresentationLayer)用于完成一些特定的功能,这些功能由于经常被请求,因此人们希望有通用的解决办法,而不是由每个用户各自实现。
应用层(ApplicationLayer)中包含了大量人们普遍需要的协议。
不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理。
此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用的功能。
5.2TCP/IP参考模型
TCP/IP参考模型是首先由ARPANET所使用的网络体系结构。
这个体系结构在它的两个主要协议出现以后被称为TCP/IP参考模型(TCP/IPReferenceModel)。
这一网络协议共分为四层:
网络访问层、互联网层、传输层和应用层,如图2所示。
图2TCP/IP参考模型
网络访问层(NetworkAccessLayer)在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。
互联网层(InternetLayer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。
这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。
高层如果需要顺序收发,那么就必须自行处理对分组的排序。
互联网层使用因特网协议(IP,InternetProtocol)。
TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。
传输层(TramsportLayer)使源端和目的端机器上的对等实体可以进行会话。
在这一层定义了两个端到端的协议:
传输控制协议(TCP,TransmissionControlProtocol)和用户数据报协议(UDP,UserDatagramProtocol)。
TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。
为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。
UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
应用层(ApplicationLayer)包含所有的高层协议,包括:
虚拟终端协议(TELNET,TELecommunicationsNETwork)、文件传输协议(FTP,FileTransferProtocol)、电子邮件传输协议(SMTP,SimpleMailTransferProtocol)、域名服务(DNS,DomainNameService)、网上新闻传输协议(NNTP,NetNewsTransferProtocol)和超文本传送协议(HTTP,HyperTextTransferProtocol)等。
TELNET允许一台机器上的用户登录到远程机器上,并进行工作;FTP提供有效地将文件从一台机器上移到另一台机器上的方法;SMTP用于电子邮件的收发;DNS用于把主机名映射到网络地址;NNTP用于新闻的发布、检索和获取;