TCP/IP四层模型和OSI七层模型
 表1-1是 TCP/IP四层模型和OSI七层模型对应表。我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类。
                表1-1  TCP/IP四层模型和OSI七层模型对应表
OSI七层网络模型
Linux TCP/IP四层概念模型
对应网络协议
应用层(Application)
应用层
TFTP, FTP, NFS, WAIS
表示层(Presentation)
Telnet, Rlogin, SNMP, Gopher
会话层(Session)
SMTP, DNS
传输层(Transport)
传输层
TCP, UDP
网络层(Network)
网际层
IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层(Data Link)
网络接口
FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
物理层(Physical)
IEEE 802.1A, IEEE 802.2到IEEE 802.11
 
 
1.网络接口
    网络接口把数据链路层和物理层放在一起,对应TCP/IP概念模型的网络接口。对应的网络协议主要是:Ethernet、FDDI和能传输IP数据包的任何协议。
2.网际层
    网络层对应Linux TCP/IP概念模型的网际层,网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达 目的机器。这一过程中,IP和其他网络层的协议共同用于数据传输,如果没有使用一些监视系统进程的工具,用户是看不到在系统里的IP的。网络嗅探器 Sniffers是能看到这些过程的一个装置(它可以是软件,也可以是硬件),它能读取通过网络发送的每一个包,即能读取发生在网络层协议的任何活动,因 此网络嗅探器Sniffers会对安全造成威胁。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网 际协议)等。
3.传输层
传输层对应Linux TCP/IP概念模型的传输层。传输层提供应用程序间的通信。其功能包括:格式化信息流;提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认信 息,如果分组丢失,必须重新发送。传输层包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),它们是传输层中最主要的协议。TCP建立在IP之上,定义了网络上程序到程序的数据传输格式和规则,提供了IP数据 包的传输确认、丢失数据包的重新请求、将收到的数据包按照它们的发送次序重新装配的机制。TCP 协议是面向连接的协议,类似于打电话,在开始传输数据之前,必须先建立明确的连接。UDP也建立在IP之上,但它是一种无连接协议,两台计算机之间的传输 类似于传递邮件:消息从一台计算机发送到另一台计算机,两者之间没有明确的连接。UDP不保证数据的传输,也不提供重新排列次序或重新请求的功能,所以说 它是不可靠的。虽然UDP的不可靠性限制了它的应用场合,但它比TCP具有更好的传输效率。
4.应用层
    应 用层、表示层和会话层对应Linux TCP/IP概念模型中的应用层。应用层位于协议栈的顶
端,它的主要任务是应用。一般是可见的,如利用FTP(文件传输协议)传输一个文件,请求一个和目 标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。常见的应用层协议有:HTTP,FTP,Telnet,SMTP和 Gopher等。应用层是Linux网络设定最关键的一层。Linux服务器的配置文档主要针对应用层中的协议。TCP/IP模型各个层次的功能和协议如 表1-2所示。
 
表1-2  TCP/IP模型各个层次的功能和协议
 
层次名称
    
    
网络接口
(Host-to-Net Layer)
负责实际数据的传输,对应OSI参考模型的下两层
HDLC(高级链路控制协议)
PPP(点对点协议)
SLIP(串行线路接口协议)
网际层
(Inter-network Layer)
负责网络间的寻址
数据传输,对应OSI参考模型的第三层
IP(网际协议)
ICMP(网际控制消息协议)
ARP(地址解析协议)
RARP(反向地址解析协议)
传输层
(Transport Layer)
负责提供可靠的传输服务,对应OSI参考模型的第四层
TCP(控制传输协议)
UDP(用户数据报协议)
应用层
(Application Layer)
负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层
FTP(文件传输协议)
HTTP(超文本传输协议)
DNS(域名服务器协议)
SMTP(简单邮件传输协议)
NFS(网络文件系统协议)
  说明:TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议。
OSI七层模型形象解释
TCP/IP基础讲座-1: 1层,2层,3层?
读过关于网络的课程的,都知道ISO-OSI 7层协议这个名词,许多书籍都会具体的画出那幅图,然后标注上物理层,数据链路层,网络层等等.背的大家要死.但是却又不知道具体这些层次干吗用的勒?

    其实在互联网中,由于实际使用的是TCP/IP模型,也就是DOD模型(现在不知道没关系,后面会说).所以7层模型在现实网络环境中只是一个理论上,学究派的东西.这个模型中,我们真正关心的是下面的3层.
1.物理层.
哦.是的.这个名词还算容易了解.网卡还有那些网线构成了这一层.那些在网线中传播的二进制
数据流是这层的具体表象.也就是说,这一层上面没有什么协议
(不是很精确的说法,但是你可以这么理解).有的都是电流而已.我们把两台机器用网线连起来.或者用HUB把机器都连起来,这些工作就是物理层的工作.
有2个设备属于物理层的,一个是中继器,一个是HUB.大家知道.物理上面的连线距离一长就会产生电信号的衰减.为了重新加强这个信号,我们就需要在一定距离之后加上一个信号放大器,这就是中继器(repeater)
恩...这个比较容易理解.repeater就是连接在2根网线之间的么.没有做任何处理.所以只是一个物理设备.属于1层的
那么集线器(HUB)呢?这个怎么会是在1层似乎非常难以理解.
    当我说出HUB的本质,大家就能够清楚了解了
    HUB的本质其实只是一个多口中继器(MULTI PORT REPEATER).啊...这样大家能够理解了.HUB不叫多口中继器其实只是为了销售上面的策略.他的本质就是连接多根网线的一个物理设备.也是不对经过的电信号做任何逻辑处理的.
2.数据链路层
欧~这个名词有些别扭了.DATA LINK层.英文似乎更加容易理解.
    这个层面上面的东西不再是电信号了.而是DATA了.对,既然是DATA就有了逻辑关系了.这个层面上面的基本单位是帧(Frame).这层和物理层的接触是最紧密的.他是把从网线上面传输的电流转换成0和1的组合.
物理层只是网卡对网线发出或者接受各种电平信号,那就是说物理层是无法判别电流的来源和目标的.那么把电流打成0和1的帧之后.里面就有逻辑数据了.有了数据,就可以判别数据从何而来,到何处去.所以也就可以真正的形成LINK.

    既然可以判别地址,那么地址是按照什么来判别的呢?

    那就是最重要的概念之一:MAC地址

    大家肯定都听说过我们的网卡都有MAC地址


    有些人可能也知道MAC地址都是唯一的.

    对.MAC地址是全球唯一的.也就是说你的网卡虽然便宜.但是他也是世界上独一无二的.

    有些人说他可以改MAC.那就不是唯一了.对.虽然可以更改,那只是欺骗上层对封包里面的MAC地址进行改写.你网卡真正的MAC地址是固化的.无法修改的.

    我们有了MAC地址了.这样就可以有针对性对所有连接在一起的计算机进行通讯了.是的.我们终于可以在一个局域网内通讯了.

    但是有个问题我们前面没有提到.就是既然物理层传输的是电信号.那么如果我有2台机器一起发电信号,信号岂不是混乱了么?

    非常正确.这个问题在网络里面成为"碰撞",所以协议里面规定了如果你需要往外发数据,一
定需要先看看电缆里面有没有别的信号.如果没有,那就可以发.如果2者同时发送,检测到碰撞之后2者分别等待一个随机时间,然后重发.这个就是重要的"碰撞检测".
    哈.看来问题解决了.不是么.现在整个网络可以正常运行了.

    确实如此.但是如果连接在网络上的计算机越来越多,那么碰撞的现象会越来越频繁.这样效率一定很低了.恩.这里还有一个重要概念"冲突域".在同一个物理上连接的网络上的所有设备是属于同一个冲突域的.

    接着就需要引入我们的2层设备来分割冲突域了.


    网桥(Bridge)就是连接2个不同的物理网络的.主要功能是在2个网络之间转发Frame.因为从实际中我们可以知道.其实很多时候并非整个网络都在相互通讯.最多相互通讯的一组计算机我们可以分在一个小的冲突域内.这样分割以后可以减少冲突域,也就相对的减少了冲突的机会.而之间使用网桥来桥接,由于网桥两边的通讯不是非常频繁,所以使用网桥来为2边作为"
代言人".这样任意一个小网络里面产生冲突的机会就少了.

    交换机(Switch)是我们最熟悉的设备了,交换机的本质其实就是一个多口网桥(Multi port Bridge).同理可得.交换机的每个口后面都是一个冲突域.我们都说交换机比HUB快,就是因为交换机分割了所有的冲突域.

    由于现在交换机非常便宜.所以一般我们都是直接在交换机的口上接计算机.这样每台计算机都是一个独立的冲突域.这样碰撞的问题就没有了.所以速度是比HUB快.

    而前面说过.2层设备主要是个转发的功能.交换机的主要功能就是转发包.而不是让所有的冲突域直接物理连接.所以交换机有CPU,有内存,可以对Frame进行处理等等.这些也是交换机和HUB的区别.
3.网络层

    我们前面的一些技术就可以构建出局域网了.有了网络层以后.数据才能够真正的在整个世界间传送
 
  由于伦纳德·博萨卡(Leonard Bosack)和姗蒂•雷纳(Sandy Lerner)为了解决他们之间的通信问题(关于路由器发明的版本有很多.你听到的别的说法可能比这个说法更准确,但是谁知道呢.呵呵).路由器被发明用来解决"信息孤岛"问题.而且如果是由SWITCH来构建整个网络,那么整个网络将会有"中心节点",这样也不符合ARPANET的初衷.所以我们有了这一层.(这样说可能会感觉本末倒置,但是先这么理解吧.)

    这一层的基本单元是包(Packet).所有的包都有一个IP头.啊.听起来很熟悉不是么.IP就是用来在这层上面标识包的来源和目的地址的.

    这层的一个主要概念就是"路由",也就是和switch一样,把包转发到其他的地方.不过有个不同的地方,switch只有知道具体的MAC在哪里的情况下才能够发送给指定的计算机,而路由则不需要知道最终IP所在的计算机在哪个位置,只要知道那个途径可以过去就可以工作.

    这3层构建了整个网络的基础.由于TCP/IP模型将最下面2层合并成为一层,所以在TCP/IP里面总共这2层也是整个构架最基础的内容.而网络方面要做的工作也都是针对于这2层做的.
2: TCP/IP.真实世界的模型


    上一讲里面我们说过OSI 7层模型只是一个理论模型,而实际中只需要保证7层的功能能够实现,实际分层无需按照7层来分.而且如果真的分7层.那么数据处理的速度便要慢许多.

    在实际应用中.使用最多的便是DoD模型.也成为TCP/IP协议簇

    DoD模型(Department Of Defanse Model 美国国防部模型)顾名思义,是美国国防部设计的一个网络模型.最早用于ARPANET.这些话可能在许多教材的第一章就会讲了.但是一般教材对于DoD模型与OSI模型对应关系都没有讲到.或者很多是模糊或者错误的.

    在这里我就要描述一下2者对应关系.OSI模型有7层我们已经知道了,而DoD模型则只有4层.下面是对应关系

    OSI   
             
              DoD

7.Application     ┐     

6.Presentation   |->      4. Application/Process

5.Session         ┘     

4.Transport      --->      3. Host to Host

3.Network        --->      2. Internet

2.Data Link      ┬->      1. Network Access

1.Physical        ┘



    由于我不会制表符.所以图有些难看.其实就是OSI的1.2层对应DoD的第1层

OSI的5.6.7对应DoD的第4层

    其实这个还是比较容易记忆的

    由于物理层和数据链路层非常密切.所以分为一个.然后上面依次对应,最上面的一大块成为应用层(处理层)
 
现在我们有了一个可用的实际模型了.不过一般我们在描述某个设备或者协议的时候.还是会使用OSI的模型,比如我们在讨论SWITCH的时候,就会说他是
一个2层的设备.而路由器是一个3层的设备,还会有一些特殊的设备,比如3层交换机,4层交换机.这些都是使用OSI模型进行分类的.这点大家不要搞混淆了.
我们一直听说TCP或者UDP.还有什么SMTP.POP3.这些协议到底是在哪一层定义的那?接下来的一张图会给大家一个非常清晰的概念了(不能算是图拉 :D ).
4. APPLICATION
HTTP,FTP,telnet,SNMP,SMTP,POP3,DNS等等
3.Host to Host
TCP,UDP
2.internet
ICMP,ARP,RARP,IP
1.Network Accesstcpip协议最低层
Ethernet,FastEthernet,Token Ring等等


    恩...这下清楚了.让我们从下至上来看看

    首先是最下层的.包括了以太网,快速以太网,还有现在的千M以太网等等的协议,这些协议规定了线缆的绞数.连接方式等等物理层的东西.还有底层使用MAC通讯的方式等等.

    接下来是IP.ARP这些.IP在OSI模型的时候也说过.通过IP地址.我们在转发包的时候无需知道具体目标机的位置.而路由器自然会根据路由表来转发.最后一站一站的慢慢传递.达到最终目标.而ARP协议就是在IP和MAC之间转换用的.

    我在上一章提过,由于有了路由器,IP,整个网络才真正能够覆盖全球.所以这一层叫做internet大家也应该容易记忆了.

    WOW.TCP,UDP是我们听说最多的了.他是属于控制网络连接的.在OSI称为Transport.传输层.在DoD内是Host to Host 端对端.意思其实是一样的.就是在在2台计算机之间构建出一个虚拟的通讯通道来.

    最上面一层就无穷无尽了.所有的最终应用层的东西都在这里,你甚至可以定义你自己的协议类型.这些都是完全可以的.因为本身这一层就是提供给开发人员自行发挥的.只是上面列举的都经过标准化了.

TCP包头结构

源端口 16位

目标端口  16位

序列号  32位

回应序号  32位

TCP头长度  4位

reserved 6位

控制代码 6位

窗口大小 16位

偏移量 16位

校验和 16位

选项   32位(可选)

    这样我们得出了TCP包头的最小大小.就是20字节.



UDP包头结构

源端口 16位

目的端口 16位

长度  16位

校验和  16位
恩...UDP的包小很多.确实如此.因为UDP是非可靠连接.设计初衷就是尽可能快的将数据包发送出去.所以UDP协议显得非常精简.

    有一个问题,似乎这些头里面怎么没有IP地址啊.没有IP地址这些包往哪里发送那?

    对.你观察的很仔细.TCP和UDP的头里面确实没有任何IP信息.我们回头想一下TCP和UDP是属于DoD的哪一层的? 对了!是第3层. 而IP则位于模型的第二层.也就是他们两者虽然有联系.但是不属于同一层.

    模型的一个重要规则就是.当发送端发送一个数据,上一层将数据传往下一层的时候.上一层的包就成为了下一层包的数据部分. 而到接受端接受到数据.下一层将本层的头部信息去掉后交给上一层去处理.

    那么我们来看看实际例子:
 
假使我们通过SMTP协议发送数据AAA到另外一段.那么数据先会被加上SMTP的头.成为[SMTP]AAA.往下发送到TCP层.成为[TCP]
[SMTP]AAA.再往下送到internet层[IP][TCP][SMTP]AAA.然后成为[MAC][IP][TCP][SMTP]AAA

这样通过enternet或者FastEnternet发送到路由器.路由器得到后替换自己的MAC地址上去.传到下一级的路由器.这样经过长途跋涉.最终这个数据流到达目标机.

目标机先从下面一层开始.去掉MAC,成为[IP][TCP][SMTP]AAA往上到IP层,恩,比对后是发送给我这个IP的.去掉,成为[TCP]
[SMTP]AAA.TCP接到了查看校验和,没错.往上[SMTP]AAA.最后SMTP协议去解释.得到了AAA.

    万里长征终于结束.我们也将AAA发送到了目标机.大家也应该明白了为何TCP包头和UDP包头里面没有IP地址那?因为IP位于他们下面一层.TCP和UDP的包头信息是作为IP包的数据段来传送的.

    IP层可不管那许多.他只管他那层的协议,也就是管把从上面层来的数据加上自己的头,传到下面一层.把从下面一层来的数据去掉头.传到上面一层.

    每层都是这么干的.完美的契合完成了数据包的最终旅程.
3: MAC.最终地址
其实MAC的东西也说不好.也没什么好说的,我一直在考虑是否需要安排,不过既然说2~3层.肯定还是要写的
首先.我先介绍一个抓包软件 Ethereal 此软件为自由软件.当然类似的sniffer软件还有sniffer pro等等,但是从效率上还有轻便性来说.Ethereal都比同类软件好许多.可以通过[url=hereal[/url]来下载此软件.我们今后的试验基本上都是基于这个软件的.

安装以后.我们就可以通过capture菜单下面的start来抓包了你会发现就算你没有进行任何网络操作的时候.也会有许多包进来.是的.因为网络上面充
满广播.今后我们讲到ARP的时候还有其他协议的时候你们就会了解到即使你不进行任何操作.整个网络内也会充满许多广播.
好了.MAC地址在我们第一讲的时候介绍过.他是标识网卡的唯一地址所有的网卡在整个世界上都有唯一性的一个标识.MAC地址是固化在芯片中的.

现在我们在抓包的状态下ping一下局域网内的另一台服务器然后停止抓包, 这个时候主界面上就会有许多包了到Protocol为ICMP的.对了.一个是ECHO(ping)request一个是ECHO(ping)reply一个是请求.一个是响应点击其中一个包.我们可以看到详细内容
在软件的第二栏内就是给你分析好的数据第三栏内是原始的数据包
我们看第一项
FRAME 58
恩.这里一项就是FRAME.
对了.FRAME就是2层的东西
这里显示的是统计信息
我们选择了FRAME可以看到最后的原始包里面数据是全选的
说明FRAME是包的最终形式.
接着我们选择Ethernet II可以看到前14个字节被选中了也就是第二层在第三层前面加上的头就是这个14个字节

接着往下选择.

选择Destination一项这项是说明帧的目的地址可以看到相应的原始包的包头前6个字节就是目的地址
对应的00:e0:4c:32:3a:0b 其实就是目标机器的网卡的MAC地址哟.

再看看Source源地址验证一下源地址是00-20-ED-5C-7D-94
我们在命令模式下面使用ipconfig /all命令验证一下
Ethernet adapter Local Area Connection:
       Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Ethernet NIC &n
bsp;    Physical Address. . . . . . . . . : 00-20-ED-5C-7D-94
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.0.13
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.0.250
        DNS Servers . . . . . . . . . . . : 202.96.199.133
                              202.96.209.5
Yahoo~完全吻合.正是从我们网卡发出的.
别急最后下面还有一个Type我们点击以后FRAME的最后2个字节用来标识上层的协议类型
这里PING包是IP层的.所以Type里面是IP(0x800)如果GOOGLE搜索一下查看IP的类型代码的话可以知道正是0x0800(16进制)哟.
下面还有好多哦.别急
下面就是IP层的内容了.我们下次才会讲解到的.
接下来就是在2层的网络里面网卡如何相互通讯呢?
在正常情况下每台机器并不知道别的机器的MAC地址所以在每次的包都是一个单播发的包目的MAC地址的机器会接受而其他不是这个MAC地址的机器会丢弃
这样的情况就是用HUB的情况
所以大家可以想到这种情况下面
1.所有的包都是发的.非常消耗带宽,是很浪费的.
2.所有的机器都可以收到别人发给另外一个人的包.非常的不安全
对于第二点.大家就知道为什么我们在HUB的情况下面可以抓到所有网络上面通讯的包了.
这样的情况太差了.所以有了交换机的出现
我们第一章说过.交换机一是防止"冲突"二就是加强了效率了.在交换机内.维护着一张CAM表(Content-Addressable Memory)表内就记录着曾经通讯过的机器的MAC地址和对应的端口
第一次交换机不知道双方的位置,还是会单播发那个包.第二次目的方返回包的时候,交换机就会记录端口号和对应的MAC地址了这样的情况下
1.所有的包不是所有的人都收到.带宽降低
2.别人无法接受到其他人之间的通讯.因为FRAME都是在固定的物理链路里面传输
这些大家知道为什么交换网络内sniffer是无法生效的了吧.当然.还有特殊的方法可以让交换网络可以侦听所有的包,就是把交换机的某个端口设置成为"混杂模式".
这里大家看到.数据包都是计算机生成以后发送出去的所以可以任意修改里面的内容,只要符合规范就行.大家一般所知的修改MAC地址也就是将包内的MAC地址进行替换,软性的修改.而网卡的MAC地址则是固化的,无法修改的.也正是由于数据包的这种可篡改性.导致了我们实际中的TCP/IP并不安全.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。