TCP/IP协议是传输控制协议/互连网协议的缩写,是目前最广泛的协议之一。并且它是现在的互连网协议标准。TCP/IP协议共分为四层,应用层、传输层、互连层和网络层。它和OSI模型的对比如图1所示。
图1 TCP/IP与OSI模型的比较
OSI模型是由国际标准化组织(ISO)于1984年发表出来的,在每册讲解互连网络设计的专业书籍中都必不可少的要讲到这个参考模型。为什么都要讲解这个模型呢?因为在1984年以前,建立计算机网络都以不同的硬件设备和软件来设计组建,在局域网络内,计算机之间的访问是
畅通的,但是不同的局域网络之间的通讯就成问题。因为它们使用了不同的硬件和软件结构来架设,这样就导致了它们之间的难以沟通。解决它们之间的兼容性很困难。ISO认识到开发一种被众多厂商都采用的网络模型的需要,因此ISO研究了众多的网络结构,例如DECnet、SNA 和 TCP/IP 等网络方案,最终发布了OSI网络模型。可以看到,TCP/IP与OSI模型比较,TCP/IP少了两层。其实,这是因为TCP/IP协议将OSI模型的前三层合并为应用层的缘故。TCP/IP各层的作用如下:
应用层
应用层的作用是应用程序通过此层访问网络。在这一层的协议有FTP、HTTP、DNS等。这一层兼有OSI模型中的表示层和会话层的作用。
传输层
传输层负责在网络上相互通信的主机之间提供通信会话。这一层包括两个协议,分别对应面向连接通信和无连接通信,它们是TCP和UDP协议。其中TCP使用著名的三次握手的机制为应用程序提供可靠的通信连接。而UDP不对包的传输进行可靠保证,发出数据后,它并不保证接收端是否能够完整的接收到这个数据包。数据的可靠传输只好由应用层来负责。
互连层
互连层协议将数据包封装成数据报,并且运行路由算法。在互连层主要有四个协议,IP、ARP、ICMP和IGMP。其中,IP协议负责在网络之间寻址和路由,ARP用于IP地址到MAC地址的解析。ICMP负责发送消息并报告错误,IGMP被用来向本地多路广播路由器报告主机组成员。
网络层
网络层是TCP/IP模型的最底层。这一层负责数据包的发送和接收。
现在用一个在互连网上进行邮件发送来说明模型中各层的作用。首先用OUTLOOK创建一封邮件,我还想将我的照片一次发送给我的朋友tyh99@126,于是照片以JPG的格式装入了附件。邮件写完后,我填入了朋友的邮箱地址,然后单击“发送”按钮。这时一个邮件API报头加到数据的前面。接下来在表示层,因为图象格式是不能直接传送的,因此表示层协议将图象附件的格式转化为纯文本格式,这样一来,数据就可以在网络上传递了。接下来就是会话层执行DNS解析操作,将126的IP地址解析出来,这样就知道了存储在126域名
服务器上的MX记录。会话层为本地IP和MX的IP地址之间建立了一个联系。接下来在传输层,消息被分成了一个个的小块,建立了一个TCP会话,并且进行流量控制。建立会话的过程是在网络层进行路由的。具体的寻址是tcp三次握手图解IP地址由ARP协议转化为网络实体的MAC地址,在数据链路层就可以使用MAC地址进行寻址通信。在数据链路层再一次对报文分段,将报文分割为符合介质传输要求的最大传输单元的帧。在物理层,帧转化为比特流进行传输。在另一端的主机执行相反操作将最终数据提取出来提交给用户使用。
在一个广域网络中,主机与主机之间是如何寻址的呢?首先是使用主机的IP 地址,这是由互连层的IP协议来实现的。首先IP协议要判断目标主机和本主机是否在一个子网内,判断的方法是将目标主机的IP地址和本地子网的子网掩码进 行与操作,如果相与后得到的网络地址和本地子网的网络地址相同,则主机会认为目标主机和本地主机在一个子网内,于是开始查询本机的ARP表,如果有目标主 机的MAC地址则使用这个地址作为数据帧的目的地址给目标主机发送数据帧。如果在本机的ARP表中没有目标主机的MAC地址,则使用一个全为F的广播MAC地址发出一条广播,询问目标IP地址的MAC地址。目标主机会给以应答,于是这条IP地址和对应的MAC地址就会被存入主机的ARP表。如果目标主机的IP地址在另一个子网内,也就是说要发送数据的主机用本地子网的掩码和目标主机的IP地址相与操作后得到的网络地
址和本地子网的网络地址不相同,这个数据帧将被发送到路由器,这时在数据帧中的目的MAC地址被替换为路由器的MAC地址,但是网络层地址不变,也就是目的和源IP地址不变,变化的仅仅是二层MAC地址。如果没有路由器的MAC地址也将通过ARP协议的ARP广播得到。然后路由器将会使用下一跳路由器的MAC地址替换数据帧中的目的MAC地址,最后在目标网络内将数据帧传递给目标主机。
基本IP寻址
下面对上面讲到的记忆点中涉及到的概念做一个介绍。首先介绍一下主机的IP地址,在互连网上有两种方式可以唯一的标识主机,一种是主机的IP地址,注意这里说的是公网地址。另一种是网卡的MAC地址。这两种地址都是全球唯一的。IP地址的形式如图2,这是一个私有地址。
图2 IP地址形式
实际的IP地址是由32位二进制数来表示的,但是在操作系统实际配置过程中通常使用十进制
来表示,因为十进制易于记忆。将十进制换算为二进制的方法如图3所示。
图3 十进制换算为二进制
将余数从下向上排列就成为换算后的二进制,图中是将十进制192换算为二进制11000000。下面介绍将二进制换算为十进制。如图4所示。
图4 二进制转换为十进制
二进制转换为十进制的方法是从二进制数的最低位定为2的0次幂,然后用每位二进制数和相
应位的2求幂相乘,最后把每一位的结果想加,得出的结果就是十进制数。
理解了十进制数和二进制数的关系后,下面介绍一下IP地址结构。IP地址结构如图5所示。
图5 IP地址结构
整个IP 地址共分为两个部分:网络部分和主机部分。网络部分表明这台主机位于哪个子网,主机部分标识子网内的具体主机。可以看到,在IP地址后面附加了子网掩码, 子网掩码的作用就是确定主机位于哪个子网内。确定网络位置的方法就是使用子网掩码。具体方法是用子网掩码和IP地址做与操作。确定网络位置的方法如图6所 示。
图6 取网络地址
如果对两个IP 地址用子网掩码进行与操作后得到的网络地址相同,则这两台主机可以直接进行通信。如果相与操作后得到的网络地址不同,则它们之间的通信要通过路由器进行转 发。不要以子网掩码255来判断网络位置,而是要用与操作来判断。例如192.168.1.1/255.255.255.0和192.168.1.2 /255.255.0.0两个IP地址如果仅仅依靠子网掩码的位数来判断,得到的子网位数是不同的,但是进行与操作后得到的网络地址确实相同的,因此这两 台主机可以进行通信。
在网络上主机的IP地址必须被转化为烧录在网卡只读存储器中的MAC地址才能进行通信,由IP地址到MAC地址的解析是由ARP(地址解析协议)负责进行的。在每台主机上都维护着一张动态的ARP表,如图7所示,在主机上使用arp -a命令。
图7 ARP列表
在这张列表上记录着本地子网上的主机与它们的MAC 地址的对应关系,并且列表项是动态添加的。如果与一台没有在这张列表上列出的主机通信,并且主机在本地子网上,则通过ARP协议的广播会收到目标主机的应 答,然后目标主机的IP地址和MAC地址的对应关系又会添加到这张列表上来。下面再以图解的方式描绘前面讲过的通信过程。整体网络拓扑图如图8所示。
图8 实验网络
实验网络中各个主体之间的连接采用以太网络连接,现在假设PC1要发送一个数据包给PC2。首先来看PC1与Router 1之间的通信,如图9所示。
图9 PC1与Router 1
Pc1 首先用子网掩码和目标IP相与,相与的结果表明目标IP和Pc1不在一个子网内,因此这个报文将通过路由器进行转发。如果Pc1的ARP表内没有 Router 1的MAC地址,则Pc1通过ARP协议发送ARP广播来获取Router 1的MAC地址。然后报文内的目标MAC地址被替换为Router 1的MAC地址,但是网络层的源IP和目标IP地址都不变。报文被发送到Router 1。接下来的通信如图10所示。
图10 Router 1与Router 2
Router 1与Router 2之间连接的端口分别为192.168.1.1和192.168.1.2,Router 1将报文中的目标MAC地址更改为Router 2的MAC地址,源MAC地址更改为Router 1的MAC地址,但是源IP和目标IP地址仍然不变。报文发送到Router 2之后由Router 2转发到Pc2。通信过程如图11所示。
图11 Router 2与Pc2
Router 2接下来将收到的报文向Pc2转发。报文中的源MAC地址替换为Router 2的MAC地址,
目标MAC地址替换为Pc2的MAC地址。但是源IP地址和目标IP地址都不变。如果Router 2的ARP表内没有Pc2的MAC地址,则Router 2通过ARP协议获得Pc2的MAC地址从而将报文发送给Pc2。这就完成了一次通讯过程。
IP地址类
IP地址分成类的原因就是让不同类别的IP地址具有不同的地址范围,从而让不同规模的机构使用不同的地址个数。IP地址分为A、B、C、D、E五类。首先来看A类地址,如图1所示。
IP地址分成类的原因就是让不同类别的IP地址具有不同的地址范围,从而让不同规模的机构使用不同的地址个数。IP地址分为A、B、C、D、E五类。首先来看A类地址,如图1所示。
图1 A类地址
A 类地址的网络地址部分是头8个二进制数,并且第一个二进制数为0,其余部分为主机位。可以看出A类地址的主机部分范围特别大。A类地址用在哪里呢?A类地 址每个网络的主机数超过1600万台,通常用在最高级别的ISP。现在来看图12,可以看到,前8位最小为1,最大为01111111。但是 01111111换算为十进制后是127,这个地址用来表示自身,也叫做回送或环回。通常用在对其本身执行测试时使用。网络地址不能全为0或全为1。如果 32位IP地址
都为1,则向本地子网广播;如果知道其他子网的网络地址,那么主机位全为1则向其它子网广播。如果32位IP地址都为0,则报文送到默认路 由。IP地址中主机地址全为0的地址表示网络地址,IP地址中主机地址全为1的地址是广播地址。因此,A类网络的网络地址是从1到126,总网络数126个,每个网络的主机数是1670万个。默认子网掩码是255.0.0.0。
B类IP地址的网络地址是32位IP地址中的头16个二进制数,如图2所示。
图2 B类地址
可以看到,B类网络地址是以10开头的。所以最小的网络地址是10000000.00000000,最大的网络地址是10111111.11111111。这样满足网络地址不全为0也不全为1。换算为十进制数就是128.0-191.255。注意这里第二段地址可以是255,这是因为看网络地址要看整个16位,整个网络地址不全为1。B类地址的网络地址范围是128.0-191.255,B类地址的每个网络拥有65534台主机。总网络数为16384,默认子网掩码为255.255.0.0。
现在再来讨论一下B类地址的主机范围,因为B类地址的后16位为主机地址,所以最小的主机地址应该是00000000.00000001,最大主机地址应该是11111111.11111110。因为主机地址
也不应该全为0和1。全为0代表的是主机所在的网络地址,全为1代表的是主机所在网络的广播地址。所以换算成十进制数得出的主机地址范围是XXXXXXXX.XXXXXXXX.0.1-XXXXXXXX.XXXXXXXX.255.254。主机数是65534台。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论