1.协议的概念及作用
2.协议的发展过程
3.TCP/IP协议定义及内容
4.TCP/IP内部结构
5.TCP/IP中的协议:
TCP/IP通讯协议
在谈论TCP/IP协议之前,我们先来了解一下,什么叫协议。它有何作用?
协议是对网络中的设备,以何种方式交换信息的一系列规定的组合,它对信息交换的速率,传输代码,代码结构,传输控制步骤,出错控制等许多参数做出定义及规范。
网络是一个互相连接的大群体,所以在相互连接的各个节点上需要拥有共同的“语言”--规范。根据它的定义和规则来控制数据传递,这种所谓的“语言”就是协议。
对于网络入门者来说,首先需要了解和懂得:这些协议在网络运行中起到什么作用?有何相互联系?为什么有了一个协议又要补充另外一个?
网络起初只是在小范围间的运作,随着网络的扩大和相互网络的互连,使得这个网络越来越大,原本的使用规定,已经不能满足庞大的运作。所以就需要制定更为严格的规章制度,这就是协议。
在不同网络的互连中,又会增加很多新的协议作为补充,或是独立成为一个新的标准。
数据在源传输地,到达目的地的过程中,由于网络的结构,和传输的层面,为此国际标准化组织ISO于1978年提出了“开放系统互连参考模式”,也就是大家所俗称的OSI(Open Sysytem Interconnection)网络七层模式。网络协议就是正对这些不同网络层的行为规范。
网络在发展过程中,形成了很多不同的协议族,每一个协议族都在网络的各层对应有相应的协议,其中作为规范Internet的协议族就是:TCP/IP协议
TCP/IP协议
TCP/IP全称:Transmission Control Protocol / Internet Protocol
中文翻译:传输控制协议 / 互联网协议
它是目前最为广泛的协议,它的流行和重要性是于Internet的迅猛发展和普及密切相关的。
TCP/IP最初是为互联网的原型:ARPANET所设计的,目的是提供一整套方便实用;能应用于多种网络上的协议,现在它也做到了这点,有了它,使得我们在网络互连中,变得简单,并且越来越多的网络加入其中,成为Internet的一个标准。
之前我们说过:TCP/IP协议是一个协议族,必然,它就会包括有很多功能各异的子协议
这里,我们就要深入介绍TCP/IP的内部结构和相关的子协议
TCP/IP协议之所以流行,部分原因在于它可以用在各种各样的通信管道和底层协议(例如:T1和X.25;以太网以及RS-232 串行接口)之上。
TCP/IP协议包括:TCP(Transmission Control Protocol )协议;IP(Internet Protocol)协议;UDP(User Datagram Protocol)协议;ICMP(Internet Control Message Protocol)协议和其他一些协议。
TCP/IP内部结构
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象参考模型,其中每一层执行某一特定任务。目的是使各种硬件在相同层次上互相通信。
7层:物理层;数据链路层;网络层;数据层;话路层;表示层;应用层。
而TCP/IP的层次模型,一共分为四层:应用层;传输层;网络层;数据链路层。
每一层都呼叫它的下一层所提供的网络来完成自己需求。
(是不是有点糊涂了,让我做个比较:7层参考模型某方面来讲,它们是独立完成特定任务,而TCP/IP协议,在需要完成自身的任务时,都会呼叫它的下一层所提供的网络。)
应用层:
应用层是所有用户所面向的应用程序的统称,也就是应用程序用来沟通的层。这一层有着我们所熟悉的进行万维网-www访问协议(http);文件传输协议(FTP);电子邮件传输协议(SMTP);网络远程访问协议(Telnet);域名解析用的(DNS)协议等。
大家现在所使用的是一个个软件所构筑的大多为图形化的操作界面,而实际后台运行的便是上述协议。
传输层:
这一层的功能主要是提供应用程序间的通信,它提供节点间的数据传输服务,如:传输控制协议(TCP);用户传输报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层,这一层负责传输数据,并且确定数据已被送达并接收。
(火火注:这一层的安全性是不可靠的,由于TCP/UDP服务信任主机地址,所以攻击者可以冒充一个被信任的主机或客户,使用“IP Source Routing”采取一些操作,就可把攻击者的系统假扮成某一个特定服务器的可信任用户,关于协议的安全方面,我会在本联盟以下的网络讲座中详细与大家讨论,交流。哇~我先来帮忙做下广告,哈哈,如果觉得这个教学计划好的话,大家也要帮忙做宣传啊,让更多朋友能学到真正有意义的知识。。。彭!好痛,谁丢的烂冬瓜?-- 哈哈,继续~)
网络层:
TCP/IP协议族中非常关键和重要的一层。它主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅的传输。简单说,就是负责基本的数据包传输功能,让每一块数据包都能够到达目的主机(火火注:但是它不检查是否被正确接收...好了,不说了,不然雪精灵要打pp了 :P )这一层包含的协议就是IP协议。
网络接口层:
这是TCP/IP协议族中最底层,负责接收IP数据包并且通过网络发送它,或者从网络上接收物理帧,抽出IP数据包,交给IP层。简单说:对实际的网络媒体的管理,定义如何使用实际网络(如:Ethernet;Serial Line 等)来传输数据。
大家是否还有精力继续,不如先休息一下,打场CS如何?调节一下精神。哈哈,在下可是很菜的哦~
ZZZ...Zzz...zzz.......
下面我们就开始讨论学习TCP/IP中的各项子协议。
TCP/IP中的协议:
以下开始介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:
1.IP(Internet protocol)网络协议
网络协议:IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由最底层(网络接口层,例如以太网设备驱动程序)发来的数据包,并且把该数据包发送到更高层--〉TCP或UDP层;(火火注:此时的安全问题见下文...快闪~)相反,IP层也把从TCP或UDP层接收来的数据包传送至更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中源地址是有效的。也就是:IP地址形成了许多服务认证的基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包一个选项,叫IP Source Routing,可以用来指定一条源地址和目录地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径的最后一个系统传递过来的,而不是它真实的来源地。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统,进行平常是被禁止的连接。许多依靠IP源地址做确定的服务就将产生问题,或被入侵。
(火火注:具体步骤-1.攻击者需要使用那个被信任的IP地址作为自己的地址;2.攻击者构造一条要攻击的服务器和其主机间的直接路径,把信任的用户作为通向服务器的路径的最后节点;3.攻击者使用这条路径向服务器发出客户申请;4.服务器接受客户申请,就好像从可信任用户直接发出的一样,然后给可信任的客户返回响应;5.可信任用户使用使用这条路径将包向前传送给攻击者的主机)
2.TCP(Transmission Control Protocol )传输控制协议
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传输到TCP层。TCP将包查序并检查错误,同时实现虚电路间的连接。TCP数据包中包含序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如:Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动器和物力介质,最后到达接收方。
面向的服务:(Telnet;Ftp;rlogin;X windows;SMTP;)这些都需要高度的可靠性,所以他们使用了TCP协议。DNS在某些情况下使用TCP(发送和接收域名数据库),但会使用UDP传送有关单个主机的信息。
3.UDP(User Datagram Protocol)
UDP和TCP位于同一层-传输层,但对于数据包的顺序错误或重发没有TCP来的可靠。因此,UDP不被应用于那些使用虚电路的面向直接服务,UDP主要用于面向查询--应答的服务,例如:NFS。相比FTP或Telnet,这些服务需要交换信息量较小。使用UDP的服务还包括:NTP(网络时间协议)和DNS(DNS也是用TCP)。
欺骗UDP包要比欺骗TCP包来的更容易,因为UDP没有建立初始化连接(俗称:握手)--因为在两个系统间没有虚电路,也就是说:与UDP相关的服务面临更大的危险。
备注:TCP 与 UDP 的比较
由于两协议都在传输层,同属于传输层协议。TCP提供IP环境下的数据可靠传输,提供服务包括数据流传送;可靠性;有效流控;多路复用。通过面向连接;端到端和可靠的数据包发送。简单说就是:它是事先为所发送的数据开辟出连接好的通道,然后再进行数据传输;而UDP则不为IP提供可靠性;流控或差错恢复功能。一般来说,TCP对应是可靠性要求高的应用。而UDP对应是可靠性低;传输经济的应用。
TCP主要支持:Telnet;FTP;SMTP;等
UDP主要支持:NFS(网络文件系统);SNMP(简单网络管理协议);DNS(主域名称系统);TFTP(通用文件传输协议);等
TCP 与 UDP 的端口结构:
TCP和UDP服务通常有一个客户端/服务端的关系,例如:一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读与写。
两个系统间的多重Telnet连接是如何相互确认并协调一致的呢?TCP或UDP连接唯一的使用每个信息中的如下四项进行确认:
1.源IP地址:发送包的IP地址。
2.目标IP地址:接收包的IP地址。
3.源端口:源系统上的连接端口。
4.目标端口:目标主机上的连接端口。
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一台服务器有256*256个端口。一个端口对应一个16bit的数。新安装好的服务器会打开139端口。服务进程通常使用一个固定的端口,例如:SMTP使用25;X windows使用6000;E-mai接收(pop)使用110;E-mail发送(SMTP)使用25;http使用80;FTP使用20或21;Finger使用79;Login使用513;shell使用514;Printer使用515;sunrpc使用111;......这些端口号都是“广为人知”的,但是不是绝对的(部分可以设定修改)。因为在建立连接与特定主机或服务时,需要这些地址和目标地址进行通讯传输。
(火火注:检查自己端口方法:打开c://windows\winipfg.exe 找出自己的IP地址,打开浏览器。地质栏内键入:http://10.10.10.10:1111 意思就是:检查IP为10.10.10.10服务器上的1111端口。一些黑客软件也有固定打开端口,拿netspy.exe就会打开:7306.7307.7308.12345.12346.31337.6680.8111.9910 关于端口的相对用途,我们会另外发贴)
4.ICMP
ICMP与IP位于同一层,它被用来传输IP的控制信息。它主要是用来提供有关通向目标主机的路径信息。ICMP的“Redirect”信息通知主机通向其它系统的更准确的路径,而“Unreachable”信息则指出路径有问题。另外,如果路径不可用,ICMP可以使用TCP连接“体面的”终止。ping 就是最常用的基于ICMP的服务。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/