转载自:http://blog.youkuaiyun.com/litton_van/article/details/5606505?locationNum=3
TCP/IP协议栈
(按TCP/IP参考模型划分)
应用层 FTP SMTP HTTP ...
传输层 TCP UDP
网络层 IP ICMP ARP
链路层 以太网 令牌环 FDDI ...
IPv4最致命的两个缺陷在与:
* 地址只有32位,IP地址空间有限;
* 不支持服务等级(Quality of Service, Qos)的想法,无法管理带宽和优先级,故而不能很好的支持现今越来越多的实时的语音和视频应用。因此IPv6 (IP Version 6, IP版本六) 浮出海面,用以取代IPv4。
TCP/IP成功的另一个因素在与对为数众多的低层协议的支持。这些低层协议对应与OSI模型中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量的支持TCP/IP,例如: 以太网(Ethernet),令牌环(Token Ring),光纤数据分布接口(FDDI),端对端协议( PPP),X.25,帧中继(Frame Relay),ATM,Sonet, SDH等。
在几乎所有连接到互联网上的计算机上都存在的IPv4 协议出生在1981年,今天的版本和最早的版本并没有多少改变。升级版IPv6 的工作始于1995年,目的在与取代IPv4。ICMP 协议主要用于收集有关网络的信息查找错误等工作。
每一个应用层(TCP/IP参考模型 的最高层) 一般都会使用到两个传输层协议之一: 面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议 。 其它的一些推荐协议有:
* TELNET (Teletype over the Network,网络电传) ,通过一个终端(terminal)登陆到网络(运行在TCP协议上)。
* FTP (File Transfer Protocol, 文件传输协议) ,由名知义(运行在TCP协议上) 。
* SMTP (Simple Mail TransferProtocol,简单邮件传输协议) ,用来发送电子邮件(运行在TCP协议上) 。
* DNS (Domain Name Service,域名服务) ,用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上) 。
* ECHO (Echo Protocol, 回绕协议) ,用于查错及测量应答时间(运行在TCP和UDP协议上) 。
* NTP (Network Time Protocol,网络时间协议) ,用于网络同步(运行在UDP协议上) 。
* SNMP (Simple Network ManagementProtocol, 简单网络管理协议) ,用于网络信息的收集和网络管理。
* BOOTP (Boot Protocol,启动协议) ,应用于无盘设备(运行在UDP协议上)。
* 支撑万维网WWW的超文本传输协议HTTP,
* 动态配置IP地址的DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),
* 收邮件用的POP3 (Post Office Protocol, version 3, 邮局协议) ,
* 用于加密安全登陆用的SSH (Secure Shell,用于替代安全性差的TELNET) ,
* 用于动态解析以太网硬件地址的ARP (Address Resolution Protocol,地址解析协议) 。
其实在互联网中,由于实际使用的是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)和姗蒂?雷纳(SandyLerner)为了解决他们之间的通信问题(关于路由器发明的版本有很多.你听到的别的说法可能比这个说法更准确,但是谁知道呢.呵呵).路由器被发明用来解决"信息孤岛"问题.而且如果是由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模型对应关系都没有讲到.或者很多是模糊或者错误的.
有一个问题,似乎这些头里面怎么没有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地址上去.传到下一级的路由器.这样经过长途跋涉.最终这个数据流到达目标机.
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。