网络基础

TCP/IP 基础

传统的通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

网络接口层

  物理层是定义物理介质的各种特性,1、机械特性。2、电子特性。3、功能特性。4、规程特性。

  数据链路层是负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

  常见的接口层协议有:

Ethernet 802.3、Token Ring802.5、X.25、Frame reley、HDLC、PPP ATM 等。

网络层

  负责相邻计算机之间的通信。其功能包括三方面。

  一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。

  二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。

  三、处理路径、流控、拥塞等问题。

  网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)

  控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(ReverseARP)反向地址转换协议。

  IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。

  ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。

  Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。

  ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址

RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。

传输层

  提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

传输层协议主要是:传输控制协议TCP(TransmissionControl Protocol)和用户数据报协议UDP(User Datagram protocol)。

应用层

  向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

  应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。

  FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。

  Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。

  DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。

  SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转。 

POP3(PostOffice Protocol 3)是邮局协议第3版本,用于接收邮件。

 数据链路层包括了硬件接口和协议ARP,RARP,这两个协议主要是用来建立送到物理层上的信息和接收从物理层上传来的信息;

  网络层中的协议主要有IP,ICMP,IGMP等,由于它包含了IP协议模块,所以它是所有基 于TCP/IP协议网络的核心。在网络层中,IP模块完成大部分功能。ICMP和IGMP以及其他支持IP的协议帮助IP完成特定的任务,如传输差错控制 信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。

  传输层上的主要协议是TCP和UDP。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议。

  TCP/IP模型的主要缺点有:

首先,该模型没有清楚地区分哪些是规范、哪些是实现;其次,TCP/IP模型的主机—网络层定义了网络层与数据链路层的接口,并不是常规意义上的一层,和接口层的区别是非常重要的,TCP/IP模型没有将它们区分开来。

数据格式

  数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

  IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

 

一般情况

 

通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。

运作机制

1.IP

  IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或 UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

  高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

2.TCP

  TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。

  TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

  如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

  TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

  面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

3.UDP

  UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

  UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。

  UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用 UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

  欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

4.ICMP

  ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。 PING是最常用的基于ICMP的服务。

通讯端口

   TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程 序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。

  两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:

  源IP地址 发送包的IP地址。

  目的IP地址 接收包的IP地址。

  源端口 源系统上的连接的端口。

  目的端口 目的系统上的连接的端口。

端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

IP地址

  在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。

  Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。

  我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。

  目前,在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。

地址分类

  IP地址可确认网络中的任何一个网络和计算机,而要识别其它网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节点计算机所在网络规模的大小分为A,B,C三类,默认的网络屏蔽是根据IP地址中的第一个字段确定的。

  1. A类地址

  A类地址的表示范围为:1.0.0.1~126.255.255.255,默认网络屏蔽 为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。

  127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。

  0.0.0.0到0.255.255.255也是保留地址,用做表示所有的IP地址。

  一个A类IP地址由 1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,即第一段数字范围为1~127。每个A类地址理论上可连接 16777214<256*256*256-2>台主机(-2是因为主机中要用去一个网络号和一个广播号),Internet有126个可用的A类地址。A类地址适用于有大量主机的大型网络。

  2. B类地址

  B类地址的表示范围为:128.0.0.1~191.255.255.255,默认网络屏蔽为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。

  169.254.0.0到169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0到169.254.255.255中临时获得一个IP地址。

  一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是 “10”,即第一段数字范围为128~191。每个B类地址可连接65534(2^16-2, 因为主机号的各位不能同时为0,1)台主机,Internet有16383(2^14-1)个B类地址(因为B类网络地址128.0.0.0是不指派的,而可以指派的最小地址为128.1.0.0[COME06])。

  3. C类地址

  C类地址的表示范围为:192.0.0.1~223.255.255.255,默认网络屏蔽 为:255.255.255.0;C类地址分配给小型网络,如一般的局域网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

  一个C类地址是由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是 “110”,即第一段数字范围为192~223。每个C类地址可连接254台主机,Internet有2097152个C类地址段(32*256*256),有532676608个地址(32*256*256*254)。

  RFC 1918留出了3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址。在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。

  IP地址类别 RFC 1918内部地址范围

  A类 10.0.0.0到10.255.255.255

  B类 172.16.0.0到172.31.255.255

  C类 192.168.0.0到192.168.255.255

  使用私有地址将网络连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。

  实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:

  D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。 D类地址范围:224.0.0.1到239.255.255.254 。 D类地址用于多点播送。D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。

  E类地址保留给将来使用。

  连接到Internet上的每台计算机,不论其IP地址属于哪类都与网络中的其它计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于网络分类。

  在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共享一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。

  顺便提一下几类特殊的IP地址:

  1. 广播地址目的端为给定网络上的所有主机,一般主机段为全1

  2. 单播地址目的端为指定网络上的单个主机地址

  3. 组播地址目的端为同一组内的所有主机地址

  4. 环回地址127.0.0.1 在环回测试和广播测试时会使用

网关地址

  若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。

编辑本段注意事项

  内部地址和外部地址在局域网的IP地址分配中,并没有区别,都可以使用。

  在局域网的IP地址分配中,子网屏蔽的“1”部分只要和对应的IP地址分类规定的前几个二进制数一致即可。

编辑本段子网划分

  若公司不上Internet,那一定不会烦恼IP地址的问题,因为可以任意使用所有的IP地址,不管是A类或是B类,这个时候不会想到要用子网,但若是上Internet那IP地址便弥足珍贵了,目前全球一阵Internet热,IP地址已经愈来愈少了,而所申请的IP地址目前也趋保守,而且只有经申请的IP地址能在Internet使用,但对某些公司只能申请到一个C类的IP地址,但又有多个点需要使用,那这时便需要使用到子网,这就需要考虑子网的划分,下面简介子网的原理及如何规划。

子网掩码(Subnet Mask)

  设定任何网络上的任何设备不管是主机、个人电脑、路由器等皆需要设定IP地址,而跟随着IP地址的是所谓的子网掩码(NetMask,Subnet Mask),这个子网掩码主要的目的是由IP地址中也能获得网络编码,也就是说IP地址和子网掩码合作而得到网络编码,如下所示:

  IP地址

  192.10.10.6 11000000.00001010.00001010.00000110

  子网掩码

  255.255.255.0 11111111.11111111.11111111.00000000

  AND

  -------------------------------------------------------------------

  Network Number

  192.10.10.0 11000000.00001010.00001010.00000000

  子网掩码有所谓的默认值,如下所示

  类 IP地址范围 子网掩码

  A 1.0.0.0-126.255.255.255 255.0.0.0

  B 128.0.0.0-191.255.255.255 255.255.0.0

  C 192.0.0.0-223.255.255.255 255.255.255.0

  在预设的子网掩码(Net Mask)都只有255的值,在谈到子网掩码(Subnet Mask)时这个值便不一定是255了。在完整一组C类地址中如203.67.10.0-203.67.10.255 子网掩码255.255.255.0,203.67.10.0称之网络编码(NetworkNumber,将IP 地址和子网掩码作和),而203.67.10.255是广播的IP地址,所以这两者皆不能使用,实际只能使用 203.67.10.1--203.67.10.254等254个IP地址,这是以255.255.255.0作子网掩码的结果,而所谓Subnet Msk尚可将整组C类地址分成数组网络编码,这要在子网掩码上作手脚,若是要将整组C类地址分成2个网络编码那子网掩码设定为255.255.255.128,若是要将整组C类分成8组网络编码则子网掩码要为255.255.255.224,这是怎么来的,由以上知道网络编码是由IP地址和子网掩码作AND而来的,而且将子网掩码以二进制表示法知道是1的会保留,而为0的去掉

  192.10.10.193--11000000.00001010.00001010.11000001

  255.255.255.0--11111111.11111111.11111111.00000000

  --------------------------------------------------------------

  192.10.10.0--11000000.00001010.00001010.00000000

  以上是以255.255.255.0为子网掩码的结果,网络编码是192.10.10.0,若是使用255.255.255.224作子网掩码结果便有所不同

  192.10.10.193--11000000.00001010.00001010.11000001

  255.255.255.224--11111111.11111111.11111111.11100000

  --------------------------------------------------------------

  192.10.10.192--11000000.00001010.00001010.11000000

  此时网络编码变成了192.10.10.192,这便是子网。那要如何决定所使用的子网掩码,255.255.255.224以二进制表示法为11111111.11111111.11111111.11100000,变化是在最后一 组,11100000便是224,以三个位(Bit)可表示2的3次方便是8个网络编码

  子网掩码二进制表示法可分几个网络

  255.255.255.011111111.11111111.11111111.00000000 1

  255.255.255.128

  11111111.11111111.11111111.10000000 2

  255.255.255.192

  11111111.11111111.11111111.11000000 4

  255.255.255.224

  11111111.11111111.11111111.11100000 8

  255.255.255.240

  11111111.11111111.11111111.11110000 16

  255.255.255.248

  11111111.11111111.11111111.11111000 32

  255.255.255.252

  11111111.11111111.11111111.11111100 64

  以下使用255.255.255.224将C类地址203.67.10.0分成8组网络编码,各个网络编码及其广播IP地址及可使用之IP地址序号网络编码广播可使用之IP地址

  (1)203.67.10.0--203.67.10.31

  203.67.10.1--203.67.10.30

  (2)203.67.10.32--203.67.10.63

  203.67.10.33--203.67.10.62

  (3)203.67.10.64--203.67.10.95

  203.67.10.65--203.67.10.94

  (4)203.67.10.96--203.67.10.127

  203.67.10.97--203.67.10.126

  (5)203.67.10.128--203.67.10.159

  203.67.10.129--203.67.10.158

  (6)203.67.10.160--203.67.10.191

  203.67.10.161--203.67.10.190

  (7)203.67.10.192--203.67.10.223

  203.67.10.193--203.67.10.222

  (8)203.67.10.224--203.67.10.255

  203.67.10.225--203.67.10.254

  可验证所使用的IP地址是否如上表所示

  203.67.10.115--11001011.01000011.00001010.01110011

  255.255.255.224--11111111.11111111.11111111.11100000

  --------------------------------------------------------------

  203.67.10.96--11001011.01000011.00001010.01100000

  203.67.10.55--11001011.01000011.00001010.00110111

  255.255.255.224--11111111.11111111.11111111.11100000

  --------------------------------------------------------------

  203.67.10.32--11001011.01000011.00001010.00100000

  其它的子网掩码所分成的网络编码可自行以上述方法自行推演出来。

子网作用

  使用子网是要解决只有一组C类地址但需要数个网络编码的问题,并不是解决IP地址不够用的问题,因为使用子网反而能使用的IP地址会变少,子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上Internet,但只申请到一组C 类IP地址,过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接(Remote Bridge,字面翻译)连接,那便没有使用子网的问题。

编辑本段概念区分

协议阐述、IP申请的术语

  网络地址:在申请IP地址或是阐述TCP/IP协议的IP地址分类时,用到这个术语。它表示IP地址的代码序列中不可更加需要改变的部分。

  主机地址:在申请IP地址或是阐述TCP/IP协议的IP地址分类时,用到这个术语。它表示IP地址的代码序列中能够更具需要改变的部分。

  子网屏蔽:在阐述TCP/IP协议的IP地址分类时,用到这个术语。在申请IP地址时,由它表示所申请到的IP地址的网络地址和主机地址。

子网划分、内网搭建的术语

  网络编码(网络号):经过子网划分后,子网掩码序列中“1”对应的IP地址部分。一个网络编码,对应一个网域(或网段)。包括申请到的网络地址的全部和主机地址的部分。

  主机编码(主机号):经过子网划分后,子网掩码序列中“0”对应的IP地址部分。一个主机编码,对应一个网域(或网段)的一台计算机。包括申请到主机地址的部分。

  子网掩码:用于子网划分,它将能够改变的主机地址分为主机编码和网络编码的一部分。同时,它将网络地址全部确定为网络编码。

编辑本段协议测试

  全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是在实际工作中利用命令行测试TCP/IP配置步骤:

  1、单击“开始”/“运行”,输入CMD按回车,打开命令提示符窗口。

  2、首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确,输入命令ipconfig /all,按回车。此时显示了你的网络配置,观查是否正确。

  3、输入ping 127.0.0.1,观查网卡是否能转发数据,如果出现“Request timed out”,表明配置差错或网络有问题。

  4、 Ping一个互联网地址,看是否有数据包传回,以验证与互联网的连接性。

  5、 Ping 一个局域网地址,观查与它的连通性。

  6、用nslookup测试DNS解析是否正确,输入如nslookup ,查看是否能解析。

  如果你的计算机通过了全部测试,则说明网络正常,否则网络可能有不同程度的问题。在此不展开详述。不过,要注意,在使用 ping命令时,有些公司会在其主机设置丢弃ICMP数据包,造成你的ping命令无法正常返回数据包,不防换个网站试试。

编辑本段主要特点

  (1)开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统;

  (2)独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网中;

  (3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址;

  (4)标准化的高层协议,可以提供多种可靠的用户服务。

编辑本段协议优势

  在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释。IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程:

  一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。

  为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。

  通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。

  用IP取代专有服务的需求出现,经常是一个用户要求。

  IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。

  专有网络受到压制。许多用户开始维护使用IP替代品的复制品。

  IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。

  大多数用户为了削减开销,专有网络被取消。

编辑本段协议重置

  如果需要重新安装 TCP/IP 以使 TCP/[1]IP 堆栈恢复为原始状态。可以使用 NetShell 实用程序重置 TCP/IP 堆栈,使其恢复到初次安装操作系统时的状态。具体操作如下:

  1、单击开始 --> 运行,输入 "CMD" 后单击 "确定";

  2、在命令行模式输入命令

  netsh int ip reset C:\resetlog.txt

  (其中,Resetlog.txt记录命令结果的日志文件,一定要指定,这里指定了Resetlog.txt 日志文件及完整路径。)

  运行结果可以查看C:\resetlog.txt (咨询中可根据用户实际操作情况提供)

  运行此命令的结果与删除并重新安装 TCP/IP 协议的效果相同。

  注意

  本操作具有一定的风险性,请在操作前备份重要数据,并根据操作熟练度酌情使用。

编辑本段版本更新

IPV4

  IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。1981年 Jon Postel 在RFC791中定义了IP,Ipv4可以运行在各种各样的底层网络上,比如端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最常用的是以太网。

  传统的TCP/IP协议基于IPV4属于第二代互联网技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的IP地址已经枯竭。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。虽然用动态IP及Nat地址转换等技术实现了一些缓冲,但IPV4地址枯竭已经成为不争的事实。在此,专家提出IPV6的互联网技术,也正在推行,但IPV4的使用过度到IPV6需要很长的一段过度期。

  传统的TCP/IP协议基于电话宽带以及以太网的电器特性而制定的,其分包原则与检验占用了数据包很大的一部分比例造成了传输效率低,现在网络正向着全光纤网络和超高速以太网方向发展,TCP/IP协议不能满足其发展需要。

  1983年TCP/IP协议被ARPAnet采用,直至发展到后来的互联网。那时只有几百台计算机互相联网。到1989年联网计算机数量突破10万台,并且同年出现了1.5Mbit/s的骨干网。因为IANA把大片的地址空间分配给了一些公司和研究机构,90年代初就有人担心10年内IP地址空间就会不够用,并由此导致了IPv6 的开发。

IPv6

  IPv6是Internet Protocol Version 6的缩写,其中InternetProtocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。

  与IPV4相比,IPV6具有以下几个优势:

  一,IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。

  二,IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

  三,IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。

  四,IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。

五,IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

2

TCP/IP

1. 前言

本文用于介绍TCP/IP协议的最基本内容,十分简单,也十分基本,如果希望了解详细的内容,请参阅其它资料,这只是给初学者用的。

2. TCP/IP介绍

TCP/IP通常指的是关于TCP和IP的任何东西,它是一个统称,它既可以包括其它协议,其它应用程序,还可以包括网络介质。

2.1 基本结构

为了理解这个技术,最好称理解下图:

这个结构存在于Internet中计算机之中,它决定了计算机在网络上的动作。

2.2 名词

数 据块的名称会因为它处于不同的协议栈而不同。这里给出一个总结:在以太网时,它称为一个以太网帧,在IP上时,它称为IP包,如果数据在IP和UPD之间 一般称为UDP数据报,而数据如果在IP和TCP之间,则称为TCP段(或消息),而数据在应用程序中时,则称为应用程序消息。这种定义不是绝对的,不同的文章会有不同的说法。

2.3 数据流

数据流从应用程序流向TCP或UDP,我们通常知道的FTP是应用TCP协议的,而SNMP协议却是使用UDP协议的。数据由不同协议模块流向同一个以太网适配器。由适配器将数据传送到网络介质上去。上面的过程在接收方反向发生。

以太帧传送到ARP或 IP模块中,而以太帧中的数据决定此数据是由IP还是由ARP处理。如果是供IP处理的包,则由IP模块直接传送给TCP或UPD,具体传送给谁这由IP 包头决定。而UDP包内的数据决定了应该由UPD协议上层的哪一个应用程序接收这个数据,这一点和TCP是一致的。数据在从应用程序下传到网络时,过程比 较简单,各层把在数据上加入自己的包头信息,然后传送给下一层就行了。虽然Internet支持多种网络介质,但是一般我们都拿以太网范例。这里我们需要 记住的是以太地址是唯一的,全球唯一的。计算机同时也拥有一个四个字节的IP地址,这个地址用于标记IP模块的地址,但对于Internet来说,IP地 址不见得是唯一的。一台运行着的计算机通常知道自己的IP地址和以太地址。

2.4 两个网络接口

下图中一台计算机连接了两个以太网。

请注意:上图中的计算机拥有两个IP地址和以太地址。这时IP模块将对应于多个物理适配器。

多个IP模块对应多个物理适配器时,情况要复杂一些。

上图说明了IP转发的过程,专用于转发IP包的计算机我们称为IP路由器。从上图中我们可以看出,IP转发的时候根本不需要TCP和UDP,所以有些IP路由器的实现中根本没有TCP和UPD模块。

2.5 IP创建信号逻辑网络

数 据在从应用程序向网络介质传送的过程中,被各种协议加上包头,而由网络介质向应用程序传送时,这些加入的包头被一个个取消,而IP层加入的信息构成了一个 逻辑网络,这个逻辑网络是相对于多个物理网络而言的。多个物理网络相互连接,就是我们现在经常听到的Internet的由来。

2.6 物理网络独立性

IP将下层的网络结构对上层的应用程序隐藏起来,如果您发明了一种新的网络,您只需要实现一种驱动程序,让它能够和IP进行通信就可以使您的网络连接入Internet。

2.7 互连性

如果Internet上的两台计算机能够进行通信,我们称它们互连了。我们的计算机一般都具有互连性,因此我们购买的计算机一般都可以在网络上相互通信。

3. Ethernet

下 面我们看看以太技术,一个以太帧包括源地址,目的地址,类型域和数据。一个以太地址6个字节,每个以太适配器都有唯一的以太地址,而地址"FF-FF-FF-FF-FF-FF"代表一个广播地址。以太网使用CSMA/CD技术,这个技术使设备共享一条传输介质,某一时刻只能一台设备传送数据,如果两台同时传送就会产生冲突,而解释这种冲突的办法就是两个设备停一会儿(一个随机的时间)再传送数据。

我 们可以把以太技术想成许多人在一个黑屋子里说话,如果每次只有一个人说,那么对这个话感兴趣的人就会听到,记录下来,而不感兴趣的人就不管它就是了。如果两个人同时说,两个人就会听到自己在说话的时候还有另外一个人也在说,于是就停下来,过一会儿再说,这样来达到传送消息的目的。这里需要注意的是,屋子里 的每个人有一个唯一的名字,这个名字就是以太地址,而如果某个人想对所有人说话,它就应用那个广播地址传送消息就可以了。

4. ARP

ARP是为了解决IP包发出后,目的以太地址如何确定的问题。ARP是用来将IP地址解释为以太地址的协议,这个协议只对由IP传出的数据有用。

4.1 ARP地址翻译表

这个翻译的过程中通过查询一张表进行的,每个机器的IP地址和以太网卡号就在这个表中,如果我想向一个IP地址发送消息,只需要查询一下这张表,知道目的以太地址是什么就可以了。下面就是一张这个的ARP表:

IP地址

以太地址

223.1.2.1

08-00-39-00-2F-C3

223.1.2.3

08-00-5A-21-A7-22

223.1.2.4

08-00-10-99-AC-54

图1. ARP表

IP地址在机器内部是一个4字节数,而人类的表示是如上表中的表示方法,这种方法称为点为十进制。这种翻译表是必须的,因为IP地址的选择和以太地址的选择是独立进行的。以太地址是生产厂商根据分配给它的地址空间直接烧结在网卡上的。

4.2 经典的翻译过程

在通常网络操作进行时,应用程序发送消息到TCP(或UDP),由TCP(或UDP)传送消息到IP模块,目的IP地址是已知的,在将这个包传送到以太适配器时一定要查找这个翻译表知道目的以太地址是什么。而这时ARP就管用了。

4.3 ARP请示/响应对

但是,ARP表如何从空变得那么充实呢?这是由ARP协议来完成填充工作的,它工作的基本过程是“需时再取”的原则。当ARP不能用于查询以太地址时,会发生下面两件事情:

1. ARP用以太广播地址发送一个以太包到网络上,所有的计算机都会接收到这个包;

2. 将需要发送的IP包放入发送队列中;

发出的那个以太包就象一个问路的人一样,它带有如下信息:“如果您的IP地址和我想找的IP地址一样,请告诉我您的以太地址”,下面是一个ARP请示包的例子:

发送者IP地址

223.1.2.1

发送者以太地址

08-00-39-00-2F-C3

目标IP地址

223.1.2.2

目标以太地址

(空)

表2. ARP请示包例子

每台计算机的ARP模块检查自己的IP地址是不是和这个包内的IP地址一致,如果不一致,就什么也不干,如果一致,则返回一个响应,其中包括的信息指出了这个IP地址的以太地址。下面是一个响应包的例子:

发送者IP地址

223.1.2.2

发送者以太地址

08-00-28-00-38-A9

目标IP地址

223.1.2.1

目标以太地址

08-00-39-00-2F-C3

表3. ARP响应包例子

这个响应由原来发出请求的计算机接收,ARP就将相应的IP地址和以太地址加入ARP表中,这个过程不断地发生,这个表也就不断地加大了,更新过的ARP表如下图所示:

IP地址

以太地址

223.1.2.1

08-00-39-00-2F-C3

223.1.2.2

08-00-28-00-38-A9

223.1.2.3

08-00-5A-21-A7-22

223.1.2.4

08-00-10-99-AC-54

表4. 更新后的ARP表

这个请求与响应的过程十分迅速,放入队列的IP包现在可以取出发送了,因为所需要的以太地址已经有了,可以发送了。如果没有目的主机,发出的请求就不会有回应,IP层抛弃需要发送的IP包,而上层协议也不清楚是网络断了,还是不存在目的主机,IP层不负责报告错误类型。

5. Internet协议

IP模块是Internet技术的核心,而它的路由技术是它成为核心的基础。了解路由需要也解互连是什么。

5.1 直接路由

下图是一个只有三台计算机的小网络,每台计算机有运行一个TCP/IP协议栈,每个计算机配有以太适配器,每个计算机都被指定一个独立的IP地址。

当A发送IP包到B时,IP包头包括A的IP地址(这是源地址)和A的以太地址(这是源以太地址);同时这个包也包括B的IP地址和以太地址作为目的地址。

地址

目的

IP头

A

B

以太头

A

B

表5. 从A到B的IP包

在这种情况下,使用IP是多余的,因为它根本没有起到什么作用,用IP只能增加多余的处理时间,占用了多余的传输带宽。B接收到这个包后,IP层检查这个包内的目的地址是不是和自己的IP地址一致,如果一致则将数据返回给上层协议。这称为直接路由。

5.2 间接路由

下 面这个示意图更接近Internet真实的情况。三个小的以太网,每个网络中有三台计算机,它们有唯一以太地址,IP地址,这三个网络通过一台路由器连接,这台路由器有一个IP地址和三个以太地址,因为它和三个网络连接,当然要三个了。这里一定要记住,IP地址只有一个。

计 算机D是一台路由器,它的TCP/IP协议栈内可能根本没有TCP和UDP,而可能有多个ARP模块和多个以太驱动程序(因为有多个以太适配器,所以要多个驱动程序才可以)。网络管理员为每个子网(上图中有三个子网)指定一个网络号,是这个网络的名称,这个名称在上图是没有表示。

如 果计算机A希望和计算机B通信,采用直接路由就可以了。这个过程上面已经说过了。在同一个子网内均采用直接路由。如果计算机D希望和计算机A通信,这也是 直接路由,直接通信就行了,D和其它所有计算机的通信都是直接通信。但是如果计算机A希望和非本子网内的计算机通信就不能采用直接路由了,它发送的IP包 必须发到计算机D,由计算机D向其它网络发送,这种通信就是非直接的。

路由对于IP协议上层的协议来说是透明的,它们根本不知道有什么路由存在。

请注意下面的图,源地址是计算机A的,目的IP地址是计算机E,而目的以太地址却是计算机D的,这是因为计算机A和计算机E不处于同一个子网内,不能直接通信,需要由计算机D进行转发,因此这包只能发往计算机。

地址

目的

IP头

A

E

以太头

A

D

表6. 从计算机A到计算机E以太帧示意图

对于计算机D来说,它的以太帧地址如下:

地址

目的

IP头

A

E

以太头

D

E

表7. 从计算机D到计算机E以太帧示意图

因 为计算机D和计算机E可以直接通信。我们可以看到,在直接通信时,目的IP地址和以太地址都是接收者的,而在非直接通信时,目的IP地址是接收者的,而目的以太地址却是路由器的。上面的例子比较简单,真实的路由要比这个复杂得多,因为现实中的网络十分大,要许多路由器同时工作,这时的情况就比较复杂了。

5.3 IP路由规则

对 于要发出的IP包,IP必须决定如何发送,是采用直接发送还是非直接发送,这是在路由表的帮助下完成的。对于传入的IP包,IP模块必须能够识别它是不是 自己需要的包,如果是自己需要的,就把数据传送到上一层协议中,如果不需要则进行转发。在IP包达到目的地址后,它不再转发了。

5.4 IP地址

IP 地址是由网络管理者为一台计算机指定的地址,IP地址的一部分作为网络号,另一部分作为网络中的主机号。具体内容请大家查询相关资料。IP地址是由NIC 管理的,所有直接连接到Internet上的计算机如果需要IP地址,必须和NIC联系,则它指定;如果您需要建立自己的网络,那相应的网络号也需要从 NIC取得。

5.5 名称

人们喜欢使用计算机的名称,而不喜欢使用数字来标记一台计算机,对于小型网络,计算机名和IP地址的对应表可以保存在每台计算机上,如果是一个大型网络,则需要一台专用的计算机来负责IP地址到计算机名的转换。下面就是一个IP地址和计算机名的对应表。

223.1.2.1 alpha

223.1.2.2 beta

223.1.2.3 gamma

223.1.2.4 delta

223.1.3.2 epsilon

223.1.4.2 iota

前 一列是IP地址,后一列是计算机名。您可以为一个计算机名指定多个IP地址,那么通过哪一个IP地址都可以访问这台计算机。这个拥有多个IP地址的计算机 在接收到包后,可以根据目的地址知道是不是发向自己的包,这个目的地址可以是自己的任何一个地址。名称也用于网络号,下面就是一个例子:

223.1.2 development

223.1.3 accounting

223.1.4 factory

前一列是IP地址,后一列是网络名。我们可以这个表上面的表对比一下,看看各个计算机属于什么网络。

5.6 IP路由表

我们上面已经提到过路由表这个名词,下面我们就仔细看一下这张表。它通常是由下面几列构成的:IP网络号,直接/非直接标记,路由器IP地址和接口号。这张表一般由管理员负责维护,因为是他为你的计算机指定了IP地址。

5.7 直接路由

下面我们仔细看一下我们上面看过的直接路由的例子。

在计算机alpha内的路由表如下所示:

网络

直接/非直接标记

路由器

接口号

development

直接

(空)

1

表8. 路由表范例

我们可能通过UNIX下的"netstat -r"命令看到类似这样的结果。

5.8 实例

Alpha 发送IP包到beta,alpha中的IP包的目的地址是beta的地址(223.1.2.2)。IP取得网络号部分,查询路由表中的第一部分,看这个包应该包到什么地方,它发现这个网络和表中的第一个项目一致。而这个项目中的其它信息表示,目的计算机可以直接通信,于是直接进行ARP翻译(解析),通过接口1发送数据。

5.9 非直接路由

下面我们仔细看一下我们上面看过的非直接路由的例子。

计算机alpha内的路由表如下所示:

网络

直接/非直接标记

路由器

接口号

development

直接

(空)

1

accounting

非直接

devnetrouter

1

factory

非直接

devnetrouter

1

表10. Alpha内的路由表

5.10 实例

Alpha 发送IP包到epsilon,IP包内的目的地址是epsilon的(223.1.3.2)。IP分析目的地址的网络号部分,查询路由表中的第一列,发现 第二个项目符合条件。此项目中的信息表示计算机可以由路由器devnetrouter达到,Alpha的IP模块进行ARP解析,将数据通过接口1传送到devnetrouter的IP地址上。这个包仍然包括着目的机IP地址223.1.3.2。这个包到达development网络接口,传送到 delta计算机的IP模块,delta计算机发现这个包不是给它的,于是决定转发。Delta的IP模块从目的地址中解析出网络号,查询路由 表,Delta的路由表如下所示:

网络

直接/非直接标记

路由器

接口号

development

直接

(空)

1

factory

直接

(空)

3

accounting

直接

(空)

2

表11. Delta的路由表

 

第二条符合条件,于是IP模块接口3将数据发送到计算机epsilon,IP包到达epsilon时,epsilon的IP模块发现目的地址和自己的一致,于是将接收到的数据向上一层协议传送。

5.11 路由总结

在一个大型网络中,IP包在到达目的计算机前一般需要经过多个路由器,它前进的路线不是事先定好的,而是在各个路由器上一步步查询出来的,每个计算机只管一段,只保证把数据传送到下一站,至于下一站怎么办,它就不管了。

5.12 管理路由

在大型网络的每台机器上支持一张路由表可不是件容易事,路由器如果出了问题会对网络传输不能进行。我们也可以使用ICMP协议对网络进行监控。一台机器从一个地方移到另一个地方必须更改计算机的IP地址,如果要更新主机地址文件,这简单是不可能的,而DNS帮助解决这个问题。

6. 用户数据报协议(UDP)

UDP是在IP上的两个重要协议之一,它为用户的网络应用程序提供服务,我们经常使用的NFS,SNMP就是使用UDP协议的。UDP协议不是面向连接的。这一点是和TCP协议不同的。UDP在IP包上加上了端口号和校验码两个参数。

6.1 端口

一 台计算机上的客户程序如何达到服务器呢?应用程序和UDP的通信线路是通过UDP端口一样的,这些端口是数字的,以0开始,一个端口一般和一个服务对应。 服务器和客户就在这个端口等待对方的请求(或应答)。UDP保留由应用程序定义的消息边界。它决不把两个消息连接起来,或把一个消息分成两部分。

6.2 校验码

如 果接收到的IP包内有一个标记“UDP”,IP模块就把数据传送到UDP,UDP检查校验码,如果运算得出的结果为0,数据是正确的。UDP的校验码可以 产生也可以不产生。传送来的UDP包如果超过了上层应用程序的处理能力,就会暂时保存起来,如果保存的数据已经超过一定限制,则把UDP丢弃。

7. 传输控制协议(TCP)

TCP 提供的服务不同于UDP,它们的最大区别在于TCP是面向连接的,TCP保证数据一定传送到接收者,而UDP可不保证。TCP用于一定要保证数据传输的场 合,我们通常知道的FTP,TELNET是基于TCP协议的,而其它的一些TCP网络应用程序包括X-Window系统,rcp(远程复制)和R系列命令 也是使用TCP的,TCP提供这样好的服务也是有代价的,它需要更多的CPU处理时间和网络带宽,TCP模块的复杂度也比UDP大得多。

与UDP相同的是,应用程序必须和TCP端口连接请求服务,接收和发送数据。在应用程序开始运行时,服务器和客户机上的TCP模块开始相互通信,这两个 TCP包含了状态信息,维持一条虚链路,这条虚链路是全双工的。TCP可以任意打包数据,不必管什么边界。例如,应用程序可以在一个端口写5次,远方的应用程序可以读10次把数据读完,这和UDP不同,在UDP下,在一个端口写几次,远程应用程序就要读几次。

TCP 支持滑动窗口协议,双方都进行流量控制,因此不会让缓冲区满。这也和UDP不同,在UDP的情况下,缓冲区可能因为应用程序的处理能力不足而变满。对于滑 动窗口协议,它指定了一个窗口大小,这个大小指的是,在未接收到确认信息之前允许发送的数据数,在TCP中,窗口的大小是以字节为单位的。

8. 网络应用程序

TCP和UDP提供不同的服务,不同的应用程序会选择不同的协议,这里请您注意,如果您选择使用UDP进行可靠传输,那只能在UDP上层来提供可靠性。下面我们举出几个常用的应用程序。

TELNET使用TCP提供远程登录。TELNET工作得非常好,它虽然古老,但是现在仍然在广泛使用,它经常用于在不同的操作系统间进行互连。 FTP协议和TELNET岁数差不多大了,它也使用TCP服务,在FTP时,您好象登录到远程计算机上,但您能够使用的命令却不那么多,FTP提供用户在 计算机间复制文件的服务。UNIX中的远程命令一般都以R开始,这些命令一般都通过网络进行,我们就称它们为R系列命令,这些命令通常在UNIX系统中使 用,它对安全性考虑不多,但是非常好用。NFS由Sun公司开发,它使用UDP,它用于在不同的计算机上加载UNIX文件系统,在这一点上它做得非常好。 NFS为网络加重了负担,在慢速连接的网络上工作得不好,但它的功能可却是不错。随着网络规模不断扩大,原来的网络管理协议ICMP已经不能提供满意的服务了,于是在这一要求下提出了SNMP协议,它检测网络中各种设备的情况,根据这种情况对网络进行监控。X Window系统使用X Window协议,X Window协议也使用TCP服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值