找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 663|回复: 2

深入浅出:TCP/IP讲座基础篇

[复制链接]
发表于 2005-10-8 09:53:16 | 显示全部楼层 |阅读模式
1:1层,2层,3层?   
这篇文章主要是面向自学TCP/IP的读者的.因为市面上讲解计算机网络的书虽然非常多,但是个人认为没有一本可以做到深入浅出的.都是照搬某些权威书籍中的概念,使得很多读者读了之后还是没有具体概念.希望我写的东西可以让大家有个具体概念,而不是只停留在能够背出官方的,严谨的,深奥的概念.

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地址是固化的.无法修改的.
     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.这些协议到底是在哪一层定义的那?接下来的一张图会给大家一个非常清晰的概念了
4. APPLICATION   
HTTP,FTP,telnet,SNMP,SMTP,POP3,DNS 等等   
3.Host to Host  
  TCP,UDP   
2.internet   
ICMP,ARP,RARP,IP   
1.Network Access  
  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层可不管那许多.他只管他那层的协议,也就是管把从上面层来的数据加上自己的头,传到下面一层.把从下面一层来的数据去掉头.传到上面一层.   
每层都是这么干的.完美的契合完成了数据包的最终旅程.
回复

使用道具 举报

tastetea 该用户已被删除
发表于 2005-10-8 22:41:08 | 显示全部楼层
看得有点晕.
回复

使用道具 举报

发表于 2005-10-10 09:15:33 | 显示全部楼层
确实比教科书浅显,有些明白了TCP/IP了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-20 17:21 , Processed in 0.194493 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表