最新TCPIP协议物理层和数据链路层计算机网络课程设计.docx
《最新TCPIP协议物理层和数据链路层计算机网络课程设计.docx》由会员分享,可在线阅读,更多相关《最新TCPIP协议物理层和数据链路层计算机网络课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
最新TCPIP协议物理层和数据链路层计算机网络课程设计
SELECT*FROMRsdaWHERE______________________
locatefor学号=xh
计算机网络试题及答案
2.如果要在屏幕上直接看到查询结果,“查询去向”应该选择________。
9.如果某记录的备注型字段标志显示为?
?
?
?
?
?
?
?
?
?
?
,则表明该字段不再为空。
D、通常只用作局域网通信介质
【答案】GROUPBY
clear
10.下列叙述中正确的是________。
5.分别使用自定义函数和子程序两种方法,编写计算圆环面积的程序,其中圆半径从键盘输入。
目录
前言
随着网络互联网的飞速发展,计算机网络安全性越来越重要。
从定义上讲,计算机网络安全是指计算机及其网络系统资源和信息资源不受自然和人为有害因素的威胁和危害。
随着信息社会的到来,计算机网络发展不断地深入到生活的各个领域。
现在由于自身的缺陷,网络的开放性以及黑客的攻击是造成互联网络不安全的主要原因。
当前,TCP/IP作为一个事实上的工业标准,在其制订之初,没有考虑安全因素,因此他本身无安全可言。
TCP/IP作为Internet使用的标准协议集,是黑客实施网络攻击的重点目标和对象。
TCP/IP协议组是目前使用最广泛的网络互连协议。
但TCP/IP协议组本身存在着一些安全性问题。
TCP/IP协议是建立在可信的环境之下,首先考虑网络互连缺乏对安全方面的考虑。
其次,TCP/IP是建立在3次握手协议基础之上,本身就存在一定不安全的因素,握手协议的过程当中有一定局限性。
摘要
TCP/IP是TransmissionControlProtocol/InternetProtocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
通俗而言:
TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP是给因特网的每一台联网设备规定一个地址。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。
关键词:
TCP/IP协议,OSI参考模型,栈
1.TCP/IP协议与OSI参考模型
为了解决网络之间兼容性的问题,帮助各个厂商生产出可兼容的网络设备,国际标准化组织ISO(InternationalStandardsOrganization)于1984年提出了开放系统互连参考模型OSI/RM(OpenSystemInterconnectionReferenceModel),它很快成为计算机网络通信的基础模型。
对应关系请看图1.1
图1.1
TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机之间最常应用的组网形式。
它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。
它成为被称作“全球互联网”或“因特网(Internet)”的基础
与OSI参考模型一样,TCP(TransferControlProtocol)/IP(InternetProtocol)协议(传输控制协议/网际协议)也分为不同的层次开发,每一层负责不同的通信功能。
但是,TCP/IP协议简化了层次设计,只有五层:
应用层、传输层、网络层、数据链路层、物理层。
从上图可以看出,TCP/IP协议栈与OSI参考模型有清晰的对应关系,覆盖了OSI参考模型的所有层次。
应用层包含了OSI参考模型所有高层协议。
因为TCP/IP协议栈支持所有的标准的物理层和数据链路层协议,而且物理层和数据链路层在前面已经做过简述,所以本章不对TCP/IP协议的物理层和数据链路层做进一步的描述。
关于这两层协议和标准的深入细节,在后续章节会有讲解。
1.1TCP/IP协议与OSI参考模型的相同点
(1)都是分层结构,并且工作模式一样,都要层和层之间很密切的协作关系。
(2)有相同的应用层,传输层,网络层,数据链路层,物理层;(注意:
这里为了方便比较,TCP/IP才分为5层,在CISCO,在其他很多文献资料里都把数据链路层和物理层合并为数据链路层或网络接口层-networkaccesslayer)。
(3)都使用包交换技术(packet-switched)。
(4)网络工程师必须都要了解这两个模型。
1.2TCP/IP协议与OSI参考模型的不同点
(1)TCP/IP把表示层和会话层都归入了应用层;
(2)TCP/IP的结构比较简单,因为分层少;
(3)TCP/IP标准是在internet网络不断的发展中建立的,基于实践,有很高的信任度。
相比较而言,OSI参考模型是基于理论上的,是做为一种向导!
1.3TCP/IP协议的封装
同OSI参考模型数据封装过程一样,TCP/IP协议在报文转发过程中,封装和去封装也发生在各层之间。
同OSI参考模型数据封装过程一样,TCP/IP协议在报文转发过程中,封装和去封装也发生在各层之间。
TCP/IP协议栈的封装过程请看图1.3.1
图1.3.1
发送方,加封装的操作是逐层进行的。
各个应用程序将要发送的数据送给传输层;传输层(TCP/UDP)对数据分段为大小一定的数据段,加上本层的报文头。
发送给网络层。
在传输层报文头中,包含接收它所携带的数据的上层协议或应用程序的端口号,例如,Telnet的端口号是23。
传输层协议利用端口号来调用和区别应用层各种应用程序。
网络层对来自传输层的数据段进行一定的处理(利用协议号区分传输层协议、寻找下一跳地址、解析数据链路层物理地址等),加上本层的IP报文头后,转换为数据包,再发送给链路层(以太网、帧中继、PPP、HDLC等)。
链路层依据不同的数据链路层协议加上本层的帧头,发送给物理层以比特流的形式将报文发送出去。
在接收方,这种去封装的操作也是逐层进行的。
从物理层到数据链路层,逐层去掉各层的报文头部,将数据传递给应用程序执行。
图中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。
在后面的章节中我们将详细讨论这些帧头的具体含义。
以太网数据帧的物理特性是其长度必须在46~1500字节之间。
所有的Internet标准和大多数有关TCP/IP的书都使用octet这个术语来表示字节。
使用这个过分雕琢的术语是有历史原因的,因为TCP/IP的很多工作都是在DEC-10系统上进行的,但是它并不使用8bit的字节。
由于现在几乎所有的计算机系统都采用8bit的字节。
更准确地说,图中IP和网络接口层之间传送的数据单元应该是分组(packet)。
分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。
UDP数据与TCP数据基本一致。
唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDPdatagram),而且UDP的首部长为8字节。
由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。
为此,IP在首部中存入一个长度为8bit的数值,称作协议域。
1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
类似地,许多应用程序都可以使用TCP或UDP来传送数据。
运输层协议在生成报文首部时要存入一个应用程序的标识符。
TCP和UDP都用一个16bit的端口号来表示不同的应用程序。
TCP和UDP把源端口号和目的端口号分别存入报文首部中。
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。
其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCPsegment)。
IP传给网络接口层的数据单元称作IP数据报(IPPACKETS)。
通过以太网传输的比特流称作帧(Frame)。
在物理层转变为二进制BIT流。
数据封装方式图1.3.2
图1.3.2
网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。
为此,以太网
的帧首部也有一个16bit的帧类型域。
2.TCP/IP的栈
TCP/IP协议请看图2.1
图2.1
物理层和数据链路层涉及到在通信信道上传输的原始比特流,它实现传输数据所需要的机械、电气、功能性及过程等手段,提供检错、纠错、同步等措施,使之对网络层显现一条无错线路;并且进行流量调控。
网络层检查网络拓扑,以决定传输报文的最佳路由,执行数据转发。
其关键问题是确定数据包从源端到目的端如何选择路由。
网络层的主要协议有IP(Internetprotocol)、ICMP(InternetControlMessageProtocol,互联网控制报文协议)、IGMP(InternetGroupManagementProtocol,互联网组管理协议)、ARP(AddressResolutionProtocol,地址解析协议)和RARP(ReverseAddressResolutionProtocol,反向地址解析协议)等。
传输层的基本功能是为两台主机间的应用程序提供端到端的通信。
传输层从应用层接受数据,并且在必要的时候把它分成较小的单元,传递给网络层,并确保到达对方的各段信息正确无误。
传输层的主要协议有TCP(Transfercontrolprotocol传输控制协议)、UDP(UserDatagraphProtocol,用户数据报协议)。
应用层负责处理特定的应用程序细节。
应用层显示接收到的信息,把用户的数据发送到低层,为应用软件提供网络接口。
应用层包含大量常用的应用程序,例如HTTP(HyperTextTransferProtocol超文本传输协议)、Telnet(远程登录)、FTP(FileTransferProtocol)、TFTP(TrivialFileTransterProtocol)等。
2.1应用层
应用层为用户的各种网络应用开发了许多网络应用程序,例如文件传输、网络管理等,甚至包括路由选择。
这里我们重点介绍常用的几种应用层协议。
FTP(文件传输协议、FileTransferProtocol)是用于文件传输的Internet标准。
FTP支持一些文本文件(例如ASCII、二进制等等)和面向字节流的文件结构。
FTP使用传输层协议TCP在支持FTP的终端系统间执行文件传输,FTP与我们已描述的另一种应用不同,它采用两个TCP连接来传输一个文件。
应用层请看图2.1.1
图2.1.1
(1)控制连接以通常的客户服务器方式建立。
服务器以被动方式打开众所周知的用于FTP的端口(21),等待客户的连接。
客户则以主动方式打开TCP端口21,来建立连接。
控制连接始终等待客户与服务器之间的通信。
该连接将命令从客户传给服务器,并传回服务器的应答。
由于命令通常是由用户键入的,所以IP对控制连接服务类型就是“最大限度地减小迟延”。
(2)每当一个文件在客户与服务器之间传输时,就创建一个数据连接。
(其他时间也可以创建,后面我们将说到)。
由于该连接用于传输目的,所以IP对数据连接的服务特点就是“最大限度提高吞吐量”。
因此,FTP被认为提供了可靠的面向连接的服务,适合于远距离、可靠性较差线路上的文件传输。
TFTP(TrivialFileTransferProtocol,简单文件传输协议)也是用于文件传输,但TFTP使用UDP提供服务,被认为是不可靠的,无连接的。
TFTP通常用于可靠的局域网内部的文件传输。
TFTP最初打算用于引导无盘系统(通常是工作站或X终端)。
TFTP的代码(和它所需要的UDP、IP和设备驱动程序)都能适合只读存储器。
它只使用几种报文格式,是一种停止等待协议。
为了允许多个客户端同时进行系统引导,TFTP服务器必须提供一定形式的并发。
因为UDP在一个客户与一个服务器之间并不提供唯一连接(TCP也一样),TFTP服务器通过为每个客户提供一个新的UDP端口来提供并发。
TFTP协议没有提供安全特性。
大多数执行指望TFTP服务器的系统管理员来限制客户的访问,只允许它们访问引导所必须的文件。
TFTP也是我们升级设备的一种方式。
SMTP(SimpleMailTransferProtocol。
简单邮件传输协议)支持文本邮件的Internet传输。
POP3(PostOfficeProtocol)是一个流行的Internet邮件标准。
SNMP(SimpleNetworkManagementProtocol。
简单网络管理协议)负责网络设备监控和维护,支持安全管理、性能管理等。
Telnet是客户机使用的与远端服务器建立连接的标准终端仿真协议。
Ping命令是一个诊断网络设备是否正确连接的有效工具。
Tracert命令和Ping命令类似,tracert命令可以显示数据包经过的每一台网络设备信息,是一个很好的诊断命令。
HTTP协议支持WWW(WorldWideWeb,万维网)和内部网信息交互,支持包括视频在内的多种文件类型。
HTTP是当今流行的Internet标准。
DNS(DomainNameSystem,域名系统)把网络节点的易于记忆的名字转化为网络地址。
WINS(WindowsInternetNameServer,WindowsInternet命名服务器),此服务可以将NetBIOS名称注册并解析为网络上使用的IP地址。
BootP(BootstrapProtocol,引导协议)是使用传输层UDP协议动态获得IP地址的协议。
是DHCP协议的前身。
2.2传输层
传输层位于应用层和网络层之间,为终端主机提供端到端的连接,以及流量控制(由窗口机制实现)、可靠性(由序列号和确认技术实现)、支持全双工传输等等。
传输层协议有两种:
TCP和UDP。
虽然TCP和UDP都使用相同的网络层协议IP,但是TCP和UDP却为应用层提供完全不同的服务。
传输层协议概述请看图2.2.1
图2.2.1
传输层位于应用层和网络层之间,为终端主机提供端到端的连接,以及流量控制(由窗口机制实现)、可靠性(由序列号和确认技术实现)、支持全双工传输等等。
传输层协议有两种:
TCP和UDP。
虽然TCP和UDP都使用相同的网络层协议IP,但是TCP和UDP却为应用层提供完全不同的服务。
传输控制协议TCP:
为应用程序提供可靠的面向连接的通信服务,适用于要求得到响应的应用程序。
目前,许多流行的应用程序都使用TCP。
用户数据报协议UDP:
提供了无连接通信,且不对传送数据包进行可靠的保证。
适合于一次传输小量数据,可靠性则由应用层来负责。
TCP协议通过以下过程来保证端到端数据通信的可靠性:
TCP实体把应用程序划分为合适的数据块,加上TCP报文头,生成数据段;
(1)当TCP实体发出数据段后,立即启动计时器,如果源设备在计时器清零后仍然没有收到目的设备的确认报文,重发数据段;
(2)当对端TCP实体收到数据,发回一个确认。
(3)TCP包含一个端到端的校验和字段,检测数据传输过程的任何变化。
如果目的设备收到的数据校验和计算结果有误,TCP将丢弃数据段,源设备在前面所述的计时器清零后重发数据段。
(4)由于TCP数据承载在IP数据包内,而IP提供了无连接的、不可靠的服务,数据包有可能会失序。
TCP提供了重新排序机制,目的设备将收到的数据重新排序,交给应用程序。
(5)TCP提供流量控制。
TCP连接的每一端都有缓冲窗口。
目的设备只允许源设备发送自己可以接收的数据,防止缓冲区溢出。
(6)TCP支持全双工数据传输。
UDP是一个简单的面向数据报的运输层协议:
进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
UDP不提供可靠性:
它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。
TCP协议为终端设备提供了面向连接的、可靠的网络服务,UDP协议为终端设备提供了无连接的、不可靠的数据报服务。
从上图我们可以看出,TCP协议为了保证数据传输的可靠性,相对于UDP报文,TCP报文头部有更多的字段选项。
首先让我们来看一下TCP的报文头部主要字段:
每个TCP报文头部都包含源端口号(sourceport)和目的端口号(destinationport),用于标识和区分源端设备和目的端设备的应用进程。
在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。
序列号(Sequencenumber)字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。
如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。
序列号是一个32bits的数。
既然每个传输的字节都被计数,确认序号(Acknowledgementnumber,32bits)包含发送确认的一端所期望接收到的下一个序号。
因此,确认序号应该是上次已成功收到的数据字节序列号加1。
URG紧急指针(urgentpointer)有效。
ACK确认序号有效。
PSH接收方应该尽快将这个报文段交给应用层。
RST重建连接。
SYN同步序号用来发起一个连接。
这个标志和下一个标志。
一般在建立连接时使用。
FIN发端完成发送任务,断开连接时使用。
TCP的流量控制由连接的每一端通过声明的窗口大小(windowssize)来提供。
窗口大小用数据包来表示,例如Windowssize=3,表示一次可以发送三个数据包。
窗口大小起始于确认字段指明的值,是一个16bits字段。
窗口大小可以调节。
校验和(checksum)字段用于校验TCP报头部分和数据部分的正确性。
如果有了差错要重传。
这个和UDP不一样,UDP检测出差错以后直接丢弃,在单个局域网中传输是可以接受的,但是如果通过路由器,会产生很多错误,导致传输失败。
因为在路由器中也存在软件和硬件的差错,以致于修改数据报中的数据。
最常见的可选字段是MSS(MaximumSegmentSize,最大报文大小)。
MSS指明本端所能够接收的最大长度的报文段。
当一个TCP连接建立时,连接的双方都要通告各自的MSS协商可以传输的最大报文长度。
我们常见的MSS有1024(以太网可达1460字节)字节。
相对于TCP报文,UDP报文只有少量的字段:
源端口号、目的端口号、长度、校验和等,各个字段功能和TCP报文相应字段一样。
UDP报文没有可靠性保证和顺序保证字段,流量控制字段等,可靠性较差。
当然,使用传输层UDP服务的应用程序也有优势。
正因为UDP协议较少的控制选项,在数据传输过程中,延迟较小,数据传输效率较高,适合于对可靠性要求并不高的应用程序,或者可以保障可靠性的应用程序像DNS、TFTP、SNMP等;UDP协议也可以用于传输链路可靠的网络。
常用的TCP端口号有:
HTTP80,FTP20/21,Telnet23,SMTP25,DNS53等;常用的保留UDP端口号有:
DNS53,BootP67(server)/68(client),TFTP69,SNMP161等。
套接字(socket)分为源套接字和目的套接字:
源套接字:
源端口号+源IP地址;
目的套接字:
目的端口号+目的IP地址;
源套接字和目的套接字用于唯一的确定一条TCP连接。
关于IP地址,将在后面讲述。
端口号请看图2.2.2
图2.2.2
TCP协议和UDP协议使用16bits端口号(或者socket)来表示和区别网络中的不同应用程序,网络层协议IP使用特定的协议号(TCP6,UDP17)来表示和区别传输层协议。
任何TCP/IP实现所提供的服务都是1~1023之间的端口号,这些端口号由IANA(InternetAssignedNumbersAuthority,Internet号码分配机构)分配管理。
其中,低于255的端口号保留用于公共应用;255到1023的端口号分配给各个公司,用于特殊应用;对于高于1023的端口号,称为临时端口号,IANA未做规定。
2.3网络层
网络层位于TCP/IP协议栈数据链路层和传输层中间,网络层接收传输层的数据报文,分段为合适的大小,用IP报文头部封装,交给数据链路层。
网络层为了保证数据包的成功转发,主要定义了以下协议:
IP(InternetProtocol)协议:
IP协议和路由协议协同工作,寻找能够将数据包传送到目的端的最优路径。
IP协议不关心数据报文的内容,提供无连接的、不可靠的服务。
ARP协议(AddressResolutionProtocol,地址解析协议):
把已知的IP地址解析为MAC地址;
RARP(ReverseAddressResolutionProtocol,反向地址解析协议):
用于数据链路层地址已知时,解析IP地址;
ICMP(InternetControlMessageProtocol,网际控制消息协议)定义了网络层控制和传递消息的功能。
IGMP(InternetGroupManagementProtocol,网际组管理协议),一种组播应用协议。
普通的IP头部长度为20个字节,不包含IP选项字段。
版本号(Version)字段标明了IP协议的版本号,目前的协议版本号为4。
下一代IP协议的版本号为6。
报文长度指IP包头部长度,占4位。
8位的服务类型(TOS,TypeofService)字段包括一个3位的优先权字段(COS,ClassofService),4位TOS字段和1位未用位。
4位TOS分别代表最小时延、最大吞吐量、最高可靠性和最小费用。
4bit中只能置其中1bit。
如果所有4bit均为0,那么就意味着是一般服务。
Telnet和Rlogin这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的交互数据。
另一方面,FTP文件传输则要求有最大的吞吐量。
最高可靠性被指明给网络管理(SNMP)和路由选择协议。
用户网络新闻(Usenetnews,NNTP)是唯一要求最小费用的应用。
总长度(Totallength)是整个IP数据报长度,包括数据部分。
由于该字段长16比特,所以IP数据报最长可达65535字节。
尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片。
而且,主机也要求不能接收超过576字节的数据报。
UDP限制用户数据报长度为512字节,小于576字节。
但是,事实上现在大多数的实现(特别是那些支持网络文件系统NFS的实现)允许超过8192字节的IP数据报。
标识符(Identification)字段唯一地标识主机发送的每一份数据报。
通常每发送一份报文它的值就会加1。
标志位:
3比特
多种控制位:
0比特:
保留,必须为0
1比特:
(DF)0=可以分片,1=不可以分片.
2比特:
(MF)0=最后的分片,1=更多的分片.
DF和MF的值不可能相同。