论坛: 菜鸟乐园 标题: 要TCP/IP教程吗? 复制本贴地址    
作者: fireblue [fireblue]    论坛用户   登录
我有一篇我导师写的TCP/IP,主要是关于TCP/IP里面各个服务的。很基础。
想要的人跟贴

地主 发表时间: 06/30 16:47

回复: feelfirst [feelfirst]   论坛用户   登录
好啊!我正想要找呢/?
我的邮箱是feelfirst@163.com

B1层 发表时间: 06/30 17:09

回复: nightcolor [nightcolor]   版主   登录
我正在找呢   发到我邮箱 ok?  或者我们QQ联系  605812  
bluefire 老兄 拜托了



B2层 发表时间: 06/30 22:56

回复: bedlamite [bedlamite]   版主   登录
请给我一份:monkong@163.com
谢了!

B3层 发表时间: 06/30 23:51

回复: vj110 [vj110]   论坛用户   登录
我也要,,呵呵,,谢谢

QQ:15552250
信箱:vj110@163.com

B4层 发表时间: 07/01 09:38

回复: jh [jh]   论坛用户   登录
帖出来大家欣赏

B5层 发表时间: 07/01 09:49

回复: fireblue [fireblue]   论坛用户   登录
http://album5.chinaren.com/album/11/66/346611/157774.zip
有一个LINUX,一个TCP.
大家可以看看

B6层 发表时间: 07/01 18:36

回复: nightcolor [nightcolor]   版主   登录
THANK U~

B7层 发表时间: 07/01 21:36

回复: dhm [danghuamin]   论坛用户   登录
我也想要一份,谢谢。我的邮箱:danghuamin@sohu.com谢谢

B8层 发表时间: 07/01 23:26

回复: fireblue [fireblue]   论坛用户   登录
谢谢倒是不用,你看过以后觉得有用就贴出来给大家看看好了
我们最近很忙,你就麻烦点了,呵呵。老大的奖可不是白拿的啊。

B9层 发表时间: 07/02 10:46

回复: dhm [danghuamin]   论坛用户   登录
收到。

B10层 发表时间: 07/02 11:14

回复: leak [chinaleak]   论坛用户   登录
我也想要啊!

B11层 发表时间: 07/02 15:03

回复: nightcolor [nightcolor]   版主   登录
啊  不是你们最近都很忙  是最近大家都很忙  我上网时间现在一天比少 都快昏了  不过大概这个假期过了就好了

B12层 发表时间: 07/02 15:32

回复: heiye [heiye]   论坛用户   登录
我觉得帖出来大家看比较好
不过你愿意的话也麻烦给我一份
信箱: heiye1030@21cn.com

B13层 发表时间: 07/03 09:18

回复: dhm [danghuamin]   论坛用户   登录
这本教程很好,我一口气看了一多半,觉得贴出来与大家一同分享更有收获,但文中的图片没能贴出来,想要完全版的从这里下载:
  http://album5.chinaren.com/album/11/66/346611/157774.zip
TCP/IP协议 

 

【计划课时】16课时

 

1 网络互连(internetworking)

1.1 网络互连概述

上一章讨论的局域网是单个的同种协议网,即网络中每台机器对应层所用协议相同,通信是在同一个网络内不同主机之间进行的。而所谓“网络互连”,就是采用各种网络互连设备将同一类型的网络或不同类型的网络相互连接起来,形成所谓“internet“(互连网络),使一个网络上的主机能与另一网络上的主机相互通信。因特网(Internet)是世界上最大的internet。

此外,为了保证网络的传输性能、可靠性及安全性,一般要求一个网络所管理的范围不要太大,这就要求把一个大的网络分解成若干个较小的子网,通过网络互连技术,形成所谓的Intranet(内部互连网),以便隔离故障,提高安全保密性,方便网络管理。校园网是典型的Intranet。

与局域网相比,通过互连网络进行通信的主机必须具有在不同网络间进行网间寻址(路由选择)的能力。从通信子网的角度看,不同网络之间的主机可以采用不同的物理层和数据链路层协议,但必须具有相同的网络层协议,采用统一的互连网络地址。从资源子网的角度看,由于网络通信的复杂性和多变性,网络层协议主要用来实现网间寻址,通常不能保证可靠的数据传输,所以各主机还必须具有相同的传输层协议,以保证通过网络互连进行通信的应用程序之间具有稳定可靠的数据传输。

目前网络互连技术中最常用协议是在因特网上得到广泛应用的TCP/IP协议族。对部门级和负责系统集成的网络工程师而言,技术的重点则是各个单位Intranet的组网及管理技术。

1.2 Intranet技术特点

【复习】本课程中叙述的Intranet可以包括以下网络类型:

①     企业内部网(Intranet)

②     园区网/校园网/小区网(Campus networks)

③     城域网(MAN,Metropolitan Area Network)

其基本特点――

・服务基于Internet 技术:通常提供WWW、E-mail、FTP、BBS、虚拟网(VLAN)等服务或功能,良好安全性

・组网基于LAN技术:主机/服务器为中心,核心交换机为主要通信设备,独立的网络资源和管理系统,部分或全部使用专门敷设的线路

・使用代理服务器并通过路由器实现Internet接入(小系统可使用ISDN等其他接入方式)

・本身可由若干个LAN组成

・使用TCP/IP协议实现内部及与外部的网络互联

・高的网络通信带宽(10M/100M/1000M……)

・配置有各种网络数据库系统

1.3 Internet与Intranet比较

Internet与Intranet相比,主要差别在于前者强调其开放性,因为其服务对象是所有Internet用户,整个网络在管理上不隶属于任何组织或个人,用户使用简单的设备(如MODEM)就可以自由接入;后者注重网络资源的安全性,因为其服务对象是某一单位或组织内部的所有或部分人员,所以要有独立的网络软硬系统、严格的管理制度和专门的管理技术人员,并且为了达到安全保密的目的,要采取加密、认证、防火墙等安全管理措施。此外,Intranet组网投资高,需要进行认真规划和方案优化。

   注:与Intranet相对的通常还有Extranet(外部网),即连接到另一组织的内部网的内部网。Extranet一般采用VPN(虚拟专用网络)技术。所谓VPN,简言之,即使用Internet而不是使用专线来动态地而非永久性地进行网络连接,降低了线路使用费用,同时通过独特的鉴别、加密和遂道操作,使电子邮件、数据传输和远程通话安全性得到极大提高。

 

2  TCP/IP协议族(TCP/IP protocol suite)

传输控制协议/互连网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP)是由许多协议组成的一套网络通信标准协议,是TCP/IP是Internet的标准协议,所以实际上已成为几乎所有现代网络计算机必备的的协议。

2.1 TCP/IP模型

TCP/IP本身为一种四层模型,与OSI参考模型的对应关系见P145图5.14。


TCP/IP模型与协议族

作为通信协议组,TCP/IP包括如下重要功能:

・编址(使用IP地址和硬件地址进行通信)

・信息分段(将信息分成小的数据包进行传送)

・流量控制

・差错控制

・路由

从实用的角度看,TCP/IP提供了―― 

・网络应用程序:smtp、ftp、telnet等  (用户角度)

・两种网络通信服务:无连接和面向连接 (TCP/IP驱动程序,供程序员开发软件使用)

・网络传送技术方法:寻址、路由选择、协议的具体实现(网络操作系统与硬件设计指南)

2.2无连接和面向连接的通信服务

a.面向连接(connection-oriented)的通信

发送数据包(packets)前,发送方的网络层协议应首先与接收方的网络层协议建立连接(握手)。连接建立后,从同一个源地址到同一个源目标地址的数据包串即开始一个接一个地沿同一条路径被逐个传送。连接建立后具有同样源地址和目标地址的数据包串的路由选择只在建立连接时进行一次。路由器不必为每个数据包重复计算路由。

b.无连接(connectionless)的通信

网络协议对每个数据包都单独处理,各数据包间不存在任何联系。一个报文中的各个数据包可能通过不同的路径到达目标地址。

这两种服务的区别类似于电话系统和普通邮政系统所提供服务的区别。面向连接的服务过程:建立连接――数据传送――断开连接。这个过程类似于电话通话:拨号等待对方摘机建立通路――相互交谈――挂机断开通话。而对于无连接服务来说,发送方发送的每一条信息或报文(message )必须带有完整的目标地址,并且每一个报文都独立于其他报文经由系统选定的路径传递到目的地。这个过程类似于普通邮政系统,每一封信上都必须写上完整的收信方地址(打电话时只要一开始拨号电话接通,就不需要每讲一句话都重复拨一次对方的电话号码),并且每一封信都独立于其他信件经由邮政部门选定的路径传递到收信方。当使用无连接服务的两个报文发向同一目标时,可能先发的报文在途中丢失或延误了,而后发的报文反而先收到,如同信件可能在途中遗失或先发的后收到一样。换言之,无连接的服务不能保证报文不丢失和一定按序到达,而这在面向连接的服务中是绝对不可能发生的。

在OSI的传输层、网络层和TCP/IP的传输层中,都允许提供面向连接的服务或无连接的服务。但在TCP/IP的网络层中只提供无连接的服务。之所以如此,是考虑它所互连的通信子网是五花八门的,只要由源到目标途中任何一个通信子网是无连接的,互连在一起就是无连接的。    

3 网络接口层(Host to network)  

TCP/IP模型中,网络接口层相当于OSI的物理层(物理信号/编码)+数据链路层(帧传送)。该层在TCP/IP模型中不作规定,使用不同协议的各种通信网和各种LAN中各种主机只要支持并安装TCP/IP协议,即可与TCP/IP模型的上层(网络层)进行通信。

其功能:①将网际层送来的IP数据报封装为网络帧,然后通过传输媒介发送到网络上;

②接收并校验传输媒介送来的网络帧,然后还原为IP数据报送到网际层

该部分的功能实际上是由各通信网络本身提供的。

4  网际层(IP层,互连网层,网间网络层) 

 相当于OSI的网络层。该层运行的协议有:

・IP协议(用于数据传送)

・ARP、RARP、ICMP和IGMP协议(用于网络互连控制――差错报告与连接状态查询)

・路由协议(用于选择路由)

 

4.1 IP协议(互连网络协议,Internet Protocol) 

IP协议是网际层最重要的协议,负责在通信子网范围内实现跨越互连网络的主机间的相互通信(数据报的分类和交付)。其主要功能可以归纳为三点:

①携带所谓“IP地址”的数据报的生成与接收

②在互连网络的不同主机间实现无连接的传输服务

③在互连网络之间实现数据报传送的路由选择

【数据报,datagram】 Packets in the IP layer are called datagrams. (IP层中的数据包称为“数据报”)。《简明英汉词典》:“自带寻址信息的独立地从数据源行走到终点的数据包。” 

The Internet Protocol (IP) is an unreliable and connectionless protocol for host-to-host communication.――IP协议是一种不可靠的无连接协议,用于“主机-主机”间的通信。它提供的是一种所谓“尽力传送”的服务。所谓“尽力”是指IP不提供差错校验或跟踪服务。它只是“尽力”进行到目标地址的传送,但并不做任何保证。如果确实要求可靠传输,IP必须和某个高可靠性的协议(如TCP)配套使用。日常生活中提供“尽力传送”服务的实例是邮政局,它尽力传送邮件但并不保证全部成功。如果一封信由于这种“不可靠”的传递丢失了,只有让发送者或接收者自己来发现这种丢失,并解决问题。邮政局并不跟踪每封信的传递,也不通知发信人信件已经丢失或损毁了。

 

4.2 IP数据报  

IP数据报由两部分组成:报头和数据。报头部分20(基本)~60(加上选项)字节,数据报总长20~65536字节。 

IP数据报的格式如下:  

协议版本
 报头长度
 服务类型
 数据报总长度
 20字节
 报头
 
数据报标识
 标志
 分片偏移
 
生存时间
 用户协议
 报头检验和
 
源站点IP地址
 
目的站点IP地址
 
数据报选项
 填充
 40
 
数据
  
 
        

 

协议版本(4位):目前流行版本号为4,即IPv4。它向主机上运行的IP软件表明该数据报为IPv4格式。所有字段均应按IP协议第四版的规定翻译,如果机器正在运行其他版本的IP,该数据报被丢弃。

报头长度(4位):该字段以四个字节为单位规定了报头部分的长(默认为5,即5×4=20字节)。

服务类型(8位):规定优先级(0~7,7最高)、可靠度和延迟参量等。其中优先级IPv4不用。

优先级
 低延迟D
 高吞吐量T
 高可靠性R
 最小成本C
 未用
 

           0   1    2           3           4           5           6         7

        DTRC四位称“TOS”(Type of Service)位,置“1”时表示启用该服务,但四者中一项较高其余三项必较差,四位都置“1”没有意义。各应用程序可以请求特定的服务类型,常用应用程序默认的服务类型如下表所示:

协议
 TOS位
 说明
 
ICMP
 0000
 普通
 
BOOTP
 0000
 普通
 
NNTP
 0001
 最小成本
 
IGP
 0010
 最大可靠性
 
SNMP
 0010
 最大可靠性
 
TELNET
 1000
 最小延迟
 
FTP(数据)
 0100
 最大吞吐量(throughput)
 
FTP(控制)
 1000
 最小延迟
 
TFTP
 1000
 最小延迟
 
SMTP(命令)
 1000
 最小延迟
 
SMTP(数据)
 0100
 最大吞吐量
 
DNS(UDP查询)
 1000
 最小延迟
 
DNS(TCP查询)
 0000
 普通
 
DNS(区域,zone)
 0100
 最大吞吐量
 

 

数据报总长度(16位):65536个字节,即0~65535(216-1)

标识(16位):源主机赋予各数据报的唯一标识,当数据报分片通过子网传输时使用之。

标志(3位):第1位不用,第2位为1表示不分片,第3位为1表示非最后的报片。

分片偏移(13位):本片数据在初始数据报区中的偏移量。

       网络数据都是以帧的形式通过物理网络传输的,IP数据报也要封装成帧来传输。但是不同的物理网络对帧的大小有不同限制(可以被封装在一个帧中的最大数据长度称最大传输单元MTU)。数据报在一个物理网络即使能被完全封装在一个帧中,到另一个物理网络也未必如此。不同网络的MTU大小见下表:

协议
 MTU(字节)
 
Hyperchannel
 65535
 
令牌环(16Mbps)
 17914
 
令牌环(4Mbps)
 4464
 
FDDI
 4352
 
以太网
 1500
 
X.25
 576
 
PPP(点对点)
 296
 

 

为了使IP协议独立于具体的物理网络,IP协议选择在源主机所在物理网络上进行最大限度封装(可达65535字节),同时提供分片(fragmentation)机制,在MTU(由硬件决定)较小的网络上将数据报分成较小的“片”进行传输,每个片都有自己的报头,而且各片的报头基本相同。分片是在MTU不同的两个网络交界处(网关或路由器)进行,一个数据报在达到目标地址前可能会进行多次分片。而片的重组则在目标主机进行。

       一个数据报在传输中,不管分成多个片,各片均具有相同的标识号。目标主机根据此标识号和源地址判断所收到的片属于哪个数据报。片偏移则用于重组时确定其顺序。标志第二位为0时,第三位将用来:为1表示非最后报片,否则目标主机便知收到了最后一片,并将其片偏移加上本片总长即为原始数据报长。通过将各已到片的长度之和和与原数据报长比较,便可知本数据报各片是否全部收到。

生存时间(TTL,time to live,8位):实际上是一个计数器,代表IP数据报在互联网中停留的最长时间(每通过一个路由器自动减1,为0时若仍未到达目的地则被丢弃)。

用户协议(8位):规定最后送达目标使用IP层服务的高层协议,如TCP、UDP、ICMP和IGMP,高层协议的号码(值)由TCP/IP权威管理机构分配,如下:      


 协议
 
1
 ICMP
 
2
 IGMP
 
6
 TCP
 
8
 EGP
 
17
 UDP
 
41
 IPv6
 
89
 OSPF
 

 

报头检验和(16位):保证报头的正确性。

数据报选项:用于网络控制、测试和调试。  

填充:通过填充一定数量的0来保证IP分组头是4个字节的整倍数。

 

4.3 ICMP(互连网络控制报文协议,差错与控制报文协议,internet control message protocol) P157

使用不可靠的无连接的IP协议传送数据,优点是可以高效地利用网络资源,缺点则有两点:

・缺少出错报告和出错纠正功能――如果路由器找不到通往目标主机的路径或传送超时必须丢弃某个数据报时怎么办?如果目标主机无法及时接收所有发来的数据报而必须丢弃某个数据报时怎么办?(IP协议本身并不负责通知源主机)

・缺少主机和管理查询功能――主机有时需要确定一下某个路由器是否“alive”(在工作),网络管理员有时也需要了解其他主机或路由器的信息。

ICMP协议即是为了解决这两个问题而设计的。它发送五种出错报告报文和四组查询报文来支持不可靠的无连接IP协议。它本身是一个网际层协议,但其信息总是封装在IP数据报内再送到下层传送。(IP数据报中“用户协议”字段的值为1时表示是一个ICMP报文)。

 
  
 ICMP报文
  
 
IP报头
 IP数据
 
帧头
 帧数据
 帧尾(如果有时)
 

 

ICMP报文可以分为两类:出错报告报文和查询报文。报文格式如下:    P158图24

类型(type,8位)
 代码(code,8位)
 检验和(checksum,16位)
 
报头其他部分
 
数据段
 

其中“类型”字段值如下:  表4

报文种类
 类型
 报文内容
 
出错报告报文
 3
 目标不可到达(Destination unreachable)
 
4
 源抑制(Source quench)
 
11
 数据报超时(Time exceeded)
 
12
 数据报参数错(Parameter problem)
 
5
 重定向(Redirection)
 
查询报文
 8或0
 回应请求和应答(Echo request or reply)
 
13或14
 时戳请求和应答(Timestamp request and reply)
 
17或18
 地址掩码请求和应答(Address mask request and reply)
 
10或9
 路由器请求和通告(Router solicitation and advertisement)
 

 

①出错报告报文

当路由器或主机处理某个IP数据报遇到问题时报告之,例如,当IP数据报不能到达目的地(网络、机器或端口)或网络出现阻塞,网络中某个监测到此错误的站点(中间网关)便向源主机发送封装有ICMP信息的IP数据报。

【注意】ICMP的出错报告报文仅用于向源主机报告出错信息,并不能纠正数据报中的任何出错。此外,由于ICMP报文总是封装在无连接型的IP数据报中,ICMP本身也可能丢失。

 

可以报告的出错类型有五种:目标不能到达,源抑制,数据报超时,数据报参数错,重定向。

・目标不能到达(Type:3)

共有15种出错代码,分别表示――

Code 0:网络不可到达

Code 1:主机不可到达

Code 2:协议不可到达(目标主机未运行IP数据报所需的上层协议如TCP、UDP等时)

Code 3:端口不可到达(数据报发往的应用程序此刻未运行)

Code 4:要求分片但未分片(发送的数据报太大)

Code 5:源路由不能完成(源路由项中的一个或几个路由器无法访问)

Code 6:目标网络未知

Code 7:目标主机未知

Code 8:源主机处于隔离状态(isolated)

Code 9:与目标网络的通信被管理员禁止

Code 10:与目标主机的通信被管理员禁止

Code 11:网络不能到达,要求特定的服务(如果源主机请求某种服务,路由器才能处理数据报)

Code 12:主机不能到达,要求特定的服务(如果源主机请求某种服务,路由器才能处理数据报)

Code 13:主机不能到达,因为管理者对它设置了过滤

Code 14:主机不能到达,因为主机的优先权受到妨碍(所请求的优先权对目标主机不适用)

Code 15:主机不能到达,因为主机的优先权被剥夺

带有Code 2和3的报文只能由目标主机产生,其余只能由路由器产生。

・源抑制(Type:4;Code:0) 

当源主机传送数据的速率太高时,路由器或目标主机用此报文通知源主机:因为缓冲来不及引起的阻塞(congested),数据报已被丢弃;请“抑制”(quench)!

・数据报超时(Type:11) 

   Code 0:当路由器接收到一个数据报发现其TTL值为0时,它将丢弃该数据报并向源主机发送一个超时报文。

   Code 1:当目标主机发现在规定时间内无法接收到某个数据报的所有分片时,它将丢弃所有的分片并向源主机发送一个超时报文。

・数据报参数错(Type:12) 

  数据报头出现“语义含糊”(ambiguity)或错误时,路由器或目标主机将丢弃该数据报并向源主机发送报告“参数出了问题”的报文。

Code 0用于报告报头中某个字段有问题,

Code 1用于报告其他部分数据丢失。

・重定向(Type:5,Code :0~4)

  路由器和主机都必须使用路由表来引导数据报的发送和转发。路由器的路由表是动态更新的,而主机的路由表通常是静态的(因为主机数量很多,动态更新可能会严重占用带宽),且其路由条数很有限。重定向报文由路由器发给主机,帮助主机更新路由表。如下图,主机A欲向主机B发送数据报,显然通过R2是最有效的路由选择,但主机A根据自己的路由表,却不知道应该这样做,而将数据报先发给路由器R1。R1在查看了自己的路由表后,发现数据报应直接发给R2。于是一边向R2发送数据报,一边向主机A发送一个重定向报文,让它更新自己的路由表。


 Code 0~4与路由的方式有关。

 

② 查询报文

除了出错报告,ICMP还可诊断某些网络问题,具体是通过四对请求(源A)和应答(目标B)报文进行:

・回应请求和应答:检测两个系统(主机或路由器)能否在IP层进行彼此通讯(PING命令)

・时戳请求和应答:检测两个系统间信息往返时间或对两个系统的时钟进行同步

・地址掩码请求和应答:主机向路由器(网关)发出请求,路由器的应答为该网络的子网掩码

・路由器请求和通告:如果一台主机需要知道与其网络相连的各路由器地址及这些路由器是否在工作,可以广播一个“路由器请求”报文,收到该报文的所有路由器都将使用“路由器通告”报文广播其路由信息。

 

③ PING命令的使用

用来测试网络通道连通性的PING命令就是一种使用ICMP回应请求和回应应答报文来确定网络上某台IP系统是否正常工作的连接验证命令。它连续`向对方发送ICMP数据包,根据对方回应的数据报判断网络连通与否并统计数据传输时间等: 

C>ping 172.16.1.20  

Pinging 172.16.1.20 with 32 bytes of data: (正常)

                  Reply from 172.16.1.20: bytes=32 time<10ms TTL=127

                  Reply from 172.16.1.20: bytes=32 time<10ms TTL=127

                  Reply from 172.16.1.20: bytes=32 time<10ms TTL=127

Reply from 172.16.1.20: bytes=32 time<10ms TTL=127


Ping statistics for 172.16.1.20:

    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

    Approximate round trip times in milli-seconds:

    Minimum = 0ms, Maximum =  0ms, Average =  0ms

 

Pinging 172.16.1.21 with 32 bytes of data:  (有问题)

Request timed out.

Request timed out.

Request timed out.

Request timed out.


           Ping statistics for 172.16.1.21:

 Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

 Approximate round trip times in milli-seconds:

 Minimum = 0ms, Maximum =  0ms, Average =  0ms


4.4 ARP和RAPP协议 

同一个物理网络(如LAN)中主机之间的通信是通过数据链路层中的所谓“物理地址”相互访问的。该地址又称“MAC地址”,出厂时已固化在设备(如网卡)的ROM中,它在全球唯一。由于一个物理网络中使用的硬件具有多样性,所以同一个物理网络中各个设备的物理地址一般是无规律可言的。

而通常说的“互连网络”(internet),是指由几个物理网络通过路由器和网关之类的网络互连设备组成的网络。为了便于通信和管理,往往需要对组成互连网络的各物理网络、网络互连设备及主机等进行统一编号。在TCP/IP网络中,此统一编号称为“IP地址”,它在整个互连网络中唯一。该地址仅用于网络层(如IP层),物理网络不能识别它。

从用户间通信的角度看,往往知道的是通信双方的逻辑地址(软件识别)。而从网络间通信的角度看,真正使用的只能是设备的物理地址(硬件识别)。这就需要在通信时实现逻辑地址与物理地址的相互“映射”(mapping)。

所谓“映射”,有两种方法:一是静态映射,即人工建立一个物理地址与逻辑地址的对照表(地址映射表),其缺点是网络发生变化时(如更换网卡或加入新站时),需对该对照表及时进行人工更新;二是动态映射,即由主机等通过地址解析协议,在高速缓存中建立一个物理地址与逻辑地址的地址映射表。通信时,只要知道对方的一个地址,就可以获得另一个地址。TCP/IP网络中,地址解析协议有两个:ARP用于将逻辑地址“映射”(map)成物理地址(MAC地址),RARP则的作用则正好相反。

 

①ARP――地址解析协议(Address Resolution Protocol)


其原理是:主机试图发送数据报时,先检查机上ARP高速缓存中的地址映射表,如果找不到所需的IP-MAC地址项,则由IP自动调用ARP,向目标主机发送一个带有源硬件地址和主机IP地址、目标主机IP地址的ARP请求帧,然后将该请求帧在本地网上广播,IP地址与请求帧的目标主机IP地址相同的主机将接收该帧,并向源主机发送一个包含本身硬件地址的ARP响应帧。双方主机分别在内存的ARP高速缓存中建立一个IP-MAC地址映射表,此后双方通信均可按硬件地址直接发送。

如果跨子网,则两边主机分别与路由器两端口的硬件地址进行ARP地址解析。

ARP数据包在以太网帧中的封装(类型值:0x0806):

1010…101011

前导和同步
 DA

目标地址
 SA

源地址
 TYPE

类型
 ARP请求或响应数据包
 FCS

帧校验
 

8字节         6字节      6字节    2字节        46-1500字节      4字节

ARP数据包格式:

硬件类型(2字节)
 协议类型(2字节)
 
硬件长度
 协议长度
 操作方式(2字节)
 
发送者硬件地址(以太网中为6个字节)
 
发送者协议地址(IP中为4个字节)
 
目标硬件地址(以太网中为6个字节,请求时不填)
 
目标协议地址(IP中为4个字节)
 
   

・硬件类型:ARP所运行的网络类型,以太网为1。

・协议类型:IPv4为080016。ARP可以由任何更高层的协议使用。

・硬件长度:硬件地址长度(字节),以太网为6。

・协议长度:逻辑地址长度(字节),IPv4为4。

・操作方式:请求为1,响应为2。

请求数据包中目标硬件地址填充0。

通常可用arp命令用于查看、管理ARP高速缓存,创建一个IP到MAC的地址关联。

arp �Cs 172.16.144.5  00A0F800D42A  设置关联

arp �Ca  显示关联情况  -d 删除关联  

Interface: 172.16.128.48 on Interface 0x2

               Internet Address      Physical Address      Type

  172.16.115.110          08-0a-70-f1-32-11      static  

 

②RARP――逆向地址解析协议(Reverse Address Resolution Protocol)


与RAP相似,只是功能为将物理地址(MAC地址)转换为IP地址(无盘工作站等使用)。

RARP数据包在以太网帧中的封装(类型值:0x8035):

1010…101011

前导和同步
 DA

目标地址
 SA

源地址
 TYPE

类型
 RARP请求或响应数据包
 FCS

帧校验
 

8字节         6字节      6字节    2字节        46-1500字节      4字节

RARP数据包格式:

硬件类型(2字节)
 协议类型(2字节)
 
硬件长度
 协议长度
 操作方式(2字节)
 
发送者硬件地址(以太网中为6个字节)
 
发送者协议地址(IP中为4个字节,请求时不填)
 
目标硬件地址(以太网中为6个字节,请求时不填)
 
目标协议地址(IP中为4个字节,请求时不填)
 
   

操作方式:请求为3,响应为4。其余同RAP数据包。

 

4.5 IGMP(互连网络主机组管理协议,Internet Group Management Protocol)

用于建立和管理多播组。

附:网络上发送的所有TCP/IP协议帧(数据包)都是下述三种类型之一:

・广播(Broadcast)帧――通过目标地址FFFFFFFFFFFF发送到网上所有主机

・组播(Multicast)帧――交付给一组主机(须注册组播地址)。

・单播(Unicast)帧――最常见

(路由选择协议留下一章介绍)

 

4.6 网络中端结点的发送与接收过程   

当一个端结点接收到一个IP包时,它就把IP包中的目的地址与自己的本地地址和已识别的广播地址相比较,如果与这二者之一相符,就接收这个包并按IP中的子协议进行进一步处理。如果目的地址与二者均不符,则丢弃这个包。就象下面给出的端结点算法一样:

  Receive 

if  (dst add = = my addr ) or  (dst addr = = broadcast ))

{ process packet }

else { drop (ignore) packet}

Send

if (dst net = = net ) {

    deliver (may need to “ARP”) }

else { send to router }

 

5.6 路由器的发送和接收过程

Receive 

if (dst addr = = my addr ) or ( dst addr = = broadcast ))

{ process packet }

else if (dst net is directly connected ) {

   deliver (may need to “ARP”) }

else  if (dst net in table ) {

   deliver  to next router }

else { drop (ignore) packet }

 

5 传输层(TCP层) 

5.1 传输层的功能

在讨论传输层协议之前,必须首先理解什么是主机对主机(host-to-host)的通信和进程对进程(process-to process)的通信,以及它们之间的区别。

作为网络层协议,IP协议用于实现计算机级的通信(主机-主机的通信),即它只负责将信息送到目标计算机处。这种传送是不够完整的,因为一台计算机往往可能同时运行几个程序。为此,通信的传输不仅是从一台计算机到另一台计算机,而且还应从一台计算机上的某个进程(process,正在运行的程序)到另一台计算机上的某个进程。传输层协议的任务之一就是把信息进一步传送给适当的进程,从而建立进程对进程的通信。或者说,网络层使组成报文的每个数据包到达了正确的计算机,而传输层使整个报文到达了该计算机上正确的进程。


除此之外,在该层还需对字节流进行数据分段(块)和重组。大部分网络(如以太网、令牌环网)的通信子网对数据流都有物理大小的限制(一般是几千字节,如以太网为64~1518),但是需要在网上发送的许多数据都远大于这个数值。传输层负责将这些大块数据按下一层可处理的大小进行分解。

传输层还可用来确保信息以发送时的顺序传送,并且没有丢失和重复。其使用取决于该协议从网络层或数据链路层获得何种服务。对于可靠的网络层或具有虚电路能力的数据链路层,简单的传输层服务就足够了,但如果网络层或数据链路层不可靠,或只支持数据报方式(如IP层),则传输层应包括帧排序、确认和相关的错误检验和恢复功能。若下层不维护顺序,传输层应封装顺序信息,以便在接收后以正确顺序向上层提供数据。

传输服务有两大类:面向连接的传输服务和无连接的传输服务,二者与网络层提供的面向连接和无连接的网络服务十分相似。既然如此,为什么要把它们划分为两层呢?事实上,网络层是通信子网的一个组成部分,假如网络服务质量不可靠、频繁地丢失分组、网络层系统崩溃或不停地发生网络重置,而用户不能对通信子网加以控制,如无法采用更好的路由器来解决网络层服务质量低劣的问题,更不可能通过改进数据链路层纠错能力来改善低层的条件,那么,解决这一问题的唯一可行办法就是在网络层上面增加一层即传输层,让它可以检测分组的丢失、残缺等,并采取相应的补救措施。而且,网络服务因不同的网络可能有很大的差异,但传输服务独立于网络服务,可以采用标准的传输服务原语编写应用程序,以广泛地适用于各种网络。如果下层的网络很可靠,那么用于完成数据传送的传输层协议就不需要做太多工作,否则就要使用复杂一点的传输协议机制。

传输层使用TCP和UDP两个端对端协议,它们都是建立在IP协议的基础上。在某些方面,传输层协议类似于数据链路层协议,二者都能解决差错控制、分组顺序、流量控制及其他问题,但二者之间存在显著差异。因为两个协议运行的环境不同:

・在数据链路层,两个路由器通过物理通道直接通信,而在传输层,这个物理通道由整个子网取代。

・在数据链路层,两端之间连接很简单,另一方总是存在的,每一方都没太多事情要做。而在传输层,初始连接的建立要复杂的多。

・由于子网有将分组存储起来的能力,使得传输层的处理变得特别复杂。

 

5.2 用户数据报协议(UDP)      

UDP协议是一种非常简单的无连接的不可靠(connectionless,unreliable)的传输层协议。这意味着每一个由UDP发送的数据报都是一个独立的数据报,不同的用户数据报间没有任何联系,即使它们来自同一源进程,且发送给同一个目标程序。各个用户数据报可以沿不同的路径传送,所以每一个都携带有IP地址并独立寻址,其可靠性由应用程序提供。

UDP不提供流量控制功能,换言之,接收端有可能出现输入报文溢出。UDP除了报头中的检验和,没有任何差错控制机制,换言之,发送端无法知道某个报文是否丢失或重复发送了。而当接收端通过检验和发现差错时,也只是悄悄地将用户数据报丢弃。这就意味着流量控制和差错控制功能应由使用UDP的进程提供。

UDP的优点是简单高效。短信息(如OICQ)通常采用UDP,所有的广播和组播也只能用UDP作传输协议。

                             UDP数据报格式

报头(8字节)
 数据
 

     

源端口号(16位)
 目标端口号(16位)
 
总长度(16位)
 检验和(16位)
 

最大数据总长度:65535-20(IP报头)-8(UDP报头)=65507字节。

 

1、端口号(Port Numbers)

实现进程对进程通信的方法有多种,最常用的是通过“客户机-服务器”(client-server)模式。在这个模式下,客户机和服务器通信双方的进程必须同名。由于现在的操作系统工作在多用户和多程序环境下,为了保证通信,必须规定

・本地主机(假设为客户机)

・本地进程

・远程主机(假设为服务器)

・远程进程

本地主机和进程主机可以通过IP地址的使用来规定,而本地进程和远程进程则需使用称为“端口号”的标识符来规定。端口号是在区间0~65535间的一组整数。目标的IP地址用于在整个互连网络上选择主机,而目标的端口号则用于在该主机上选择某个进程。换言之,UDP使用“端口号”作为进程间的通信标识,每个端口号只对应其他主机的一个进程。

TCP/IP规定,客户机端进程所用的端口号由运行在客户端主机上的UDP或TCP软件随意选取。服务器端的进程则应使用公认的端口号(well known port numbers),常见如下表所示:

端口
 协议
 说明
 
7
 Echo(响应)
 向发送端回送一个接收数据报
 
9
 Discard(丢弃)
 丢弃所接收的任何数据报
 
11
 Users(用户)
 活动(active)用户
 
20
 FTP,数据
 文件传输协议(数据连接)
 
21
 FTP,控制
 文件传输协议(控制连接)
 
23
 Telnet
 (网络终端)远程登录
 
25
 SMTP
 简单邮件传输协议
 
53
 DNS
 域名服务器
 
80
 HTTP
 超文本传输协议
 
161
 SNMP
 简单网络管理协议
 

         注:《Microsoft WindowsNT 4.0网络指南》(Microsoft公司著,希望图书创作室译,北京希望电脑公司1998年8月第一版)附录B有公认端口分配和注册端口分配详表。

 

2、端口类型

端口可分为3大类:

1)    公认端口(Well Known Ports):0到1023。

2)    注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

3)    动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。

 

3、套接字地址(Socket Address)

     可知UDP实现端对端连接时需要用到两种标识符:IP地址和端口号。这两种标识符的组合称为“套接字地址”。

IP 地址         端口号

80
 
172.16.1.30
 
 

 

172.16.1.30     80
 
                                                     套接字地址

 

使用UDP协议时,需要用到一对套接字地址:客户机的套接字地址和服务器的套接字地址。

 

TCP/UDP均使用套接字技术作为与应用程序的接口。

 

【套接字(socket)】

一种在网络上发送和接收数据的API。TCP/IP提供的网络API(应用程序接口,Application Programming Interface)主要是socket。Socket有三种类型:




・Stream socket(字节流套接字)

用于面向连接的协议(如TCP)。TCP协议使用一对Stream socket将一个应用程序与跨越因特网的另一个应用程序联接起来。

・Datagram socket(数据报套接字)

  用于无连接的协议(如UDP)。UDP使用一对Datagram socket将一个应用程序的信息发送给跨越因特网的另一个应用程序。

・Raw socket (原始套接字)

  某些直接使用IP服务的协议如ICMP和OSPF既不使用Stream socket,也不使用Datagram socket。Raw socket就是为这类应用程序设计的。

   
4、UDP的应用

    ・适用于要求简单“请求-响应”通信和不计较流量和差错控制的进程。需要发送大批数据的进程不宜用之。

    ・适用于具有流量和差错内控机制的进程,如TFTP(简单文件传输协议)。

  ・UDP软件内嵌的多播和广播功能使它很适合作为一种多播和广播传输协议使用。(TCP软件无此类功能)。

・适用于SNMP之类的管理性进程。

・适用于RIP之类的路由更新协议。

 

5.3传输控制协议(TCP)  面向连接的协议

TCP协议是一种面向连接的可靠的(connection-oriented,reliable)传输层协议。它为各种IP服务提供了面向连接的可靠的功能。它建立并维护网络上两个通信主机间的连接,当两者之间传送IP数据包时,一个包含流量控制、排序和差错校验的TCP报头被附加在数据包上,到主机的每一个虚拟连接皆被赋予一个端口号(相当于一个邮箱)。与UDP一样,TCP寻址需要用到一对套接字地址:客户机的套接字地址和服务器的套接字地址。

TCP通过三次握手为两端应用程序建立连接或结束连接。

 

1、TCP服务     

TCP提供了UDP不提供的一些服务。

 

流数据服务(Stream Data Service)

TCP被认为是一种流传输层服务(Stream transport layer service),即发送方TCP从发送端的应用程序中接收字符流,将它分为具有适当大小的的称为“报文段”(segments)的数据包(packets),然后发送到网络上。接收方TCP接收 “报文段”,提取出其中的数据,并进行排序(到达顺序有误时),然后把这些数据作为一个字符流传送给接收端的应用程序。在此过程中,发送方和接收方的TCP都使用了缓冲区(buffers)存放来自发送端应用程序“写入”的数据或将接收的报文段数据存放在接收缓冲区中,等待接收端的应用程序“读取”。 

 

 

发送方

TCP

 

 

 

 

 

 
 
 

              接收方

                  TCP

 

 

 

 

 

 
 
发送方

应用程序

 
 
发送方缓冲区
 
接收方

应用程序

 
 
接收方缓冲区
 
报文段
 
报文段
 
IP数据报
 
IP数据报
 
          

 

 

 

 

 

 

             

 

 

 

全双工服务

TCP提供全双工服务,即两个应用程序彼此连接后,它们都可发送和接收数据。TCP还采用一种叫做“piggybacking”(载答,借道法)的方法,使确认应答可以和数据一起发送。

 

可靠的服务

TCP是一种可靠的传输协议。它使用“差错控制”和确认机制等来检查数据是否安全可靠到达。

 

2、TCP报文段(segment)

两个使用TCP的设备之间数据传输的单位是“报文段”。报文段的格式如下:

 

报头
 数据
 

 

源端口地址(16位)
 目标端口地址(16位)
 
序列号(32位)(seq.)
 
确认号(32位)(ack)
 
报头长度(4位)
 保留
 控制编码(6位)
 窗口大小(16位)(win)
 
检验和
 紧急指针(16位)
 
选项(如果有的话)及填充
 
    

 

报文段由两部分组成:报头和数据。报头部分20(基本)~60(加上选项)字节。

n         源端口地址  发送本报文段的主机中应用程序的端口号。

n         目标端口地址  接收本报文段的主机中应用程序的端口号。

序列号  分配给本报文段数据第一个字节的编号。为了保证连接性,TCP对每个被传输的字节都须编号。序列号告则为报文段中的第一个字节的编号。

n         确认号  希望接收的另一方发来的字节编号。如果报文段的接收方成功地从另一方接收的字节编号为X,它就将X+1定义为确认号。确认应答和数据可以一起“载答”传送。

n         报头长度  以四个字节为单位,其值为5~15(报头长度为20~60字节)。

n         控制编码    

标识
 说明
 
URG
 紧急指针字段有效
 
ACK
 确认字段有效
 
PSH
 请求对数据进行“推”操作(立即送应用程序,不等缓冲区满)
 
RST
 连接复位(由于主机崩溃或其他原因出现错误连接时)
 
SYN
 连接期间序列号同步(用于建立连接)
 
FIN
 结束连接
 

    【推数据】(pushing data)如果发送方应用程序要求要求将写入的数据(哪怕1个字节)应立即发出而不必等缓冲区满,可使用“push” 操作,即令PSH=1。

    【紧急数据】(urgent data)URG=1时,表示所发数据为“紧急数据”,紧急数据的范围从报文段数据开始处直到紧急指针所指处。接收方的TCP收到一个URG=1的报文段时,会将其中的紧急数据提取出来,并立即传送给应用程序,而不管它在字符流中的位置如何。

n         窗口大小 规定对方必须保持的窗口大小(字节)――用于流量控制。

n         检验和 

n         紧急指针 表示报文段含有紧急数据(当紧急指针标识URG置1时有效)。

n         选项  不常用(目前正式使用的有“最大报文段长度”)

 

3、流量控制

TCP使用两个缓冲区和一个滑动窗口(slide window)进行流量控制。窗口大小由接收方根据接收缓冲区剩余空间的大小进行动态确定,并通过ACK报文段通知发送方。

如右图所示。假设发送方TCP有一个很大的缓冲区,但接收方的TCP只有一个4k的缓冲区。开始连接时,接收方TCP宣告其接收窗口大小与缓冲区相同(4k)。于是发送方发出了第1个报文段(4k)。接收方在缓冲区装满时,向发送方发一个确认报文段(同时宣告接收窗口大小为0)。此时发送方TCP无法继续发送任何数据。随着接收方应用程序从接收方缓冲区读取数据,使缓冲区产生了1k的剩余空间,于是接收方TCP发出了一个新的确认报文段(同时宣告接收窗口大小为1k)。于是发送方可以再发送1k的报文段了。以此类推。

 

 

4、差错控制

TCP可以检测损坏了的、丢失了的、乱序了的和重复的报文段,并可对差错进行纠正。

用于错误检查的方法有:检验和、确认和超时。每个报文段都有一个检验和字段,可供接收时检查是否损坏了。如果发现损坏了,该报文段就会被接收方的TCP丢弃。TCP使用确认的方法来证实完好的报文段已经收到了。如果某个报文段在规定的时间内没有得到确认,就说明要么损坏了,要么丢失了。纠错的方法也很简单:发送方的TCP为每个报文段设置一个超时计数器。如果计数值到期了该报文段被判断是损坏了或丢失了,发送方就将重发该报文段。

TCP通过检查报头中序列号来防止由于确认延误导致报文段的重复接收。如果收到的报文段之序列号与已接收过的报文段序列号相同,TCP就自动丢弃该报文段。

由于TCP采用IP进行传送,经常在接收方可能出现报文段不按顺序到达情况。接收方的TCP采用解决这个问题的方法也很简单:对一个乱序了的报文段不予以确认,除非在它之前的所有数据报均已收到。

 

5、拥塞(congestiong)控制

流量控制可消除接收方来不及接收造成的拥塞问题,但无法解决网络本身拥塞问题(如所经过因特网路由器来不及转发众多的分组)。所以发送方TCP均使用两个窗口来控制拥塞:接收方要求的窗口和所谓“拥塞窗口”。两个窗口的最小值作为发送方的有效窗口。最简单的拥塞窗口采用所谓“慢速启动”(slow start)算法获得,即建立连接时,发送方将拥塞窗口大小设置为最大报文段长度。如果传送成功(发送的报文能得到确认),则将窗口大小加倍,过了某个临界值,然后每传输成功一次,增加一个最大报文段长度,直到数据传输超时或达到接收方要求的窗口大小为止。

 

6应用层  

向用户提供一组常用的网络服务应用协议如:telnet、ftp、smtp等。

telnet 远程终端访问(传输协议/目的端口:TCP/23)

ftp  文件传输 ,工作时用两个TCP连接,一个用于交换命令和应答(端口21),一个用于文件传输(端口20)

smtp  简单邮件传送(面向文本,TCP/25)  POP 邮局协议(TCP/110)

http   超文本传输协议(TCP/80)   Gopher(TCP/70)

SNMP 简单网络管理协议 (UDP/161,162)

OICQ  普通用户使用UDP/8000传送。在用户注册时如果使用其会员功能,即可使用http协议登录。系统会提示“该功能目前只对会员开放,HTTP协议会比常规的QQ协议速度慢,因此,建议您在网络状态良好的情况下,请不要选择该项功能”。加入QQ俱乐部会员:http://club.tencent.com,会员卡:120元/年,200元/两年。

 

7 寻址方案

不同协议层使用自己的寻址方案供工作在本层的网络设备或应用软件使用:

・由软件使用的寻址方案

  ・应用层地址:主机名(如Internet的域名)

  ・传输层地址:端口号(包括目标和源端口号) 

如ftp目标端口号为21(TCP协议) tftp为69(UDP协议) telnet为23(TCP),smtp为25(TCP)等。如果一台计算机需与另一台计算机建立telnet会话,它将设置目标端口地址为23,并随即选取一个比1023大的源端口地址。低于1023的端口地址被保留为公认的目标端口地址。

・由硬件使用的寻址方案

・网际层地址:IP地址 (路由器及具有路由功能的三层交换机)

・网络接口层地址:MAC地址 (中继器、网桥及普通交换机)

 

IP地址与物理地址的映射:通过地址解析协议ARP

IP地址和主机名的映射:通过域名系统(DNS, Domain Name System)

 

常用地址检测命令:

   ipconfig   以命令行形式输出IP地址、子网掩码和默认网关设置值。

   Windows IP Configuration

0 Ethernet adapter :

    IP Address. . . . . . . . . : 172.16.128.48

    Subnet Mask . . . . . . . . : 255.255.255.0

    Default Gateway . . . . . . : 172.16.128.1


   winipcfg  以对话框形式输出以上信息及MAC地址等。

              
8  IP地址

8.1 IP协议第四版(IPV4)

在TCP/IP网络中,每台计算机除了本身固有的被称为MAC地址的硬件地址,还有一个所谓的逻辑地址(IP地址),该地址通常由管理员设置(静态IP地址),亦可由所使用的网络协议(如DHCP,动态主机配置协议)自动设置(动态IP地址)。该地址在该网络中必须是独一无二的。在Internet中,IP地址由一个专门的组织来分发,该组织被称为InterNIC。

为什么不只用具有唯一性的MAC地址来进行通信?一、并非所有主机都有网卡(如拨号上网);二、同一网络中的MAC地址可能是很随机的,不便于管理;三、网卡故障更换或升级MAC地址将变化,网络可能需要重新设置。

    IP地址负责将信息包送到正确的网络(或子网),MAC地址用来在本地传送信息包。事实上,当信息包通过互连网络传输时,每次通过路由器,源和目的MAC就发生变化,然后IP地址保持不变。

 

要唯一确定IP网络上一台计算机需要两条信息:

・网络的地址――所在网络地址(网络ID)           在哪个网络上?

・所在网络上计算机的地址――主机地址(主机ID)   该网络的哪台主机?

   两台互联的设备不能使用同一个IP地址,但一个设备可以使用几个IP地址。 

 

【IP地址】P147

是一个32位的数,分4组,每组8位(w.x.y.z,w,x,y,z取值范围:0~255),这种格式的地址亦称为“点分十进制”地址。IP地址的实际作用是对各种物理地址的统一。

IP地址=网络ID(NetID)+主机ID(HostID)

IP地址被划分成若干类:   

类型标识
 网络ID(NetID)
 主机ID(HostID)
 

 

A类  w为网络ID(以0开头),其余为主机ID

0
  
  
  
 

网络ID范围:1.0.0.0~126.255.255.255   共126个

理论上网络ID为01111111(127)的也是A类地址,但该地址用于测试(回送地址)

每个A类网络可设置1600万个主机ID。

B类  w.x为网络ID(以10开头),其余为主机ID

10
  
  
  
 

网络ID范围: 128.0.0.0~191.255.255.255  共16384个

每个B类网络可设置65534个主机ID  

C类  w.x..z为网络ID(以10开头),其余为主机ID

110
  
  
  
 

网络ID范围: 192.0.0.0~223.255.255.255  共2097152个

每个C类网络可设置254个主机ID

D类  被保留用于“多播地址”(multicasting address),即用于one-to-many通信。

w.x..z为网络ID(以10开头),其余为主机ID

1110
  
  
  
 

网络ID范围: 225.0.0.0~239.255.255.255  

E类  被保留供将来使用

w.x..z为网络ID(以10开头),其余为主机ID

11110
  
  
  
 

网络ID范围: 240.0.0.0~255.255.255.255  

 

A、B、C类为“单播地址”(unicast address),即用于one-to-one通信。其中有些地址为特殊地址: 

NetID和HostID全为0时(即0.0.0.0),表示“This host on this network”。某个主机启动(bootstrap)时如果不知道自己的IP地址(如无盘工作站),可用此地址作为源地址,发送一个IP数据报给远程引导服务器以获取自己的IP地址。注意该地址只能作源地址,而且是一个与网络无关的A类地址。

NetID全为0而HostID不全为0时,表示本网络上的某个主机,通常用于从本机向同一网络中的另一台主机发送信息。(用Ping命令试过,似乎不能用)

HostID全为0的IP地址指称网络本身,不分配给单台主机;

HostID全为1的为广播地址(由路由器使用)。

127.x.y.z为回送地址。如通常用IP地址127.0.0.1表示本地主机本身。使用该地址为目的地址的数据包永远不会离开本机,而总是返回给本机的某个IP软件,通常用于测试本机使用的IP软件是否能正常接收和处理数据包。

此外,InterNIC还把几个IP地址范围专门划分了出来,供任何组织网络内部使用。这些IP地址范围在Internet上永远找不到:

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

 

其他注意的问题:

IP地址的设置是在主机上进行的,但IP地址的实质是给每个网络连接一个确定的人为分配的逻辑地址,而不是给某一个主机。在TCP/IP网络中,对于主机,每个主机如果只有一块网卡,则分配一个IP地址,如果有多块,每块外接的网卡都应该有自己的IP地址。对于路由器,每个连接的端口应该分配一个IP地址。对于使用三层协议的交换机,每个连接的端口也必须分配一个IP地址。

【主机】在因特网中,主机指所有连接到网络中的设备,包括计算机、打印机、网络互联设备(如中继器、路由器等)。

 

8.2  IP协议第六版(IPV6)

目前的IPV4使用32位地址,理论上可容纳232个不同地址(约42亿个)。但由于IPV4采用“网络号+主机”的双层结构,其地址是按“网络”来分配的,因此有相当一部分地址没有使用。随着因特网的飞速发展,IPV4地址资源已变得日益紧张,特别表现在B类地址上,因为B类地址(16000个可用网络,每个网络65000个IP地址)大小适中,适合分配给组织机构,而A类地址太大,C类地址又太小。1991年即有人预计IPV4地址可能会用完,甚至有人预计1994年会用尽。而之所以未出现这样情况,是因为采用内部保留IP地址和代理服务技术。但这是以增加复杂性和成本为代价,并没有从根本上解决地址短缺问题。此外,IPV4是一个非连接的协议,缺少对其目标是尽力传送每个分组报文,难以有效支持QoS。为此,人们特地开发了资源预留协议(RSVP, Resource Reservation Protocol)用于在路由器上分配资源,使IPV4能提供QoS保证。

而IPV6是下一代的IP协议,采用128位地址,一般采用“冒号十六进制”表示,如:

52E6:94C4:0:1234:FFAA:5566:88EC:3489 

IPV6理论上可容纳2128个不同地址,平均起来地球上每平方米可容纳6.6×1023台主机。如此巨大的IP地址数,不仅消除了IP地址对因特网规模的限制,而且可以使地址包含更多的路由信息,简化了路由选择算法,提高了传输效率,减少了路由处理时间,提高了网络速度。IPV6在保留了IPV4非连接的特点的同时,引入了流的概念,更好地综合了QoS和RSVP。此外,IPV4网络中,网络的安全性是通过另外设置防火墙和加密来实现的,而IPV6网络中,可直接采用一系列加密算法和身份认证办法,即通过两个专用的扩展报头来实现,一个是AH(Authentication Header,认证报头),一个是ESP(Encrypted Security Payload, 加密安全有效载荷)。AH用于确认IP信息包的可靠性和完整性,以防止非法修改和信息包电子欺骗。ESP用于提供数据加密,确保用户数据的安全。

这一版的唯一改变的只是网络层的协议:IPV4变成了IPV6,ICMPv4变成了ICMPv6,IGMP和ARP也合并到IGMPv6中,而RARP则被删除了。

 

9 子网掩码   

9.1 子网划分的意义

由于因特网上的IP地址数量有限,特别是A类地址已基本用完、B类地址也所剩无几了,假定某个大型组织好不容易获得了一个B类地址,从而可以对65534台主机进行IP编址,但是这些主机只能归属于同一个网络。这在许多情况下是不合适的。因为一个大型网络往往需要分成由路由器/设备连接的较小的物理网络(子网),其原因在于:

・减少每个子网上的网络通信量(同一子网主机间的广播和通信被路由器隔开,只在子网中进行),只有不同子网的主机相互通信时,才在路由器的管理控制下进行跨子网转发

・便于网络管理(分成几个便于控制的部份,并可由单独的管理员管理本地用户,或在单位内部创建隔离的子网,以阻止非法获取敏感信息)

・提高IP地址的利用率(可使若干物理网络共用单个IP网络地址)

・解决物理网络本身的限制问题(如网络分布超过以太网段最大长度)

 

9.2 子网掩码的作用

  未使用子网掩码时,IP地址由网络地址和主机地址两部分组成。对每台计算机,其地址的网络部份必须与那个网络上其他计算机的网络地址相匹配,然而主机部分对那个网络号必须是唯一的。网络地址有A、B、C三类(A类:1~126,都已分配了;B类:128~191;C类:192~223)。如果为A类,则IP地址的四个字节中,第一个字节为网络地址;为B类,则前两个字节为网络地址;为C类,前三个字节为网络地址。

           A类   网络.主机.主机.主机

           B类   网络.网络.主机.主机

           C类   网络.网络.网络.主机

 

子网掩码是一个32位的数字,其作用是告诉TCP/IP主机,IP地址的哪些位对应于网络地址,哪些位对应于主机地址。TCP/IP协议使用子网掩码判断目标主机地址是位于本地子网还是远程子网。子网中的所有主机必须配置相同的子网掩码。

 

使用子网掩码时,IP地址解释如下:

                        IP地址=网络地址.子网地址.主机地址

 

   网络ID                          
 主机ID
 
 

 
   
 
   网络ID                          
 子网ID
 主机ID
 

    

子网掩码与地址进行逻辑与(AND)。如果IP地址和子网掩码都是1,结果为1,否则为0。

 

无论何时主机试图和其他主机通信时,IP都检查源IP地址和目标地址,并把它们跟发送主机的子网掩码比较(与运算)。运算结果相同,两台主机为同一子网,源主机就用ARP确定目标主机的硬件地址;运算结果不相同,两台主机不在同一子网,源主机就用ARP确定默认网关的硬件地址,并将数据报转发给默认网关。

【例1】172.25.16.51和172.25.25.101两主机,子网掩码均为255.255.0.0--同一子网

【例2】172.25.16.51和172.31.25.101两主机,子网掩码均为255.255.0.0--不同子网

【例3】172.25.16.51和172.25.25.101两主机,子网掩码均为255.255.255.0--不同子网

 172-10101100  25-11001  16-10000  24-11000  51-110011   101-1100101 31-11111

 

没有划分子网的TCP/IP使用默认子网掩码:

A类 255.0.0.0 

B类255.255.0.0 

C类 255.255.255.0。

 

9.3 子网掩码的计算

子网掩码取值均为0或者255时,称为“标准子网掩码”。有时,需要使用非标准子网掩码以便对网络进行进一步细分(将主机部分取出若干位作子网ID)。通常用于:

・减少IP地址的浪费

・分配的IP地址不够用时

 

【例】设某网络中分配到一个IP地址为192.168.50.0,如用标准子网掩码255.255.255.0,则为一个具有254台主机的单一子网(192.168.50.0为网络地址, 192.168.50.255为广播地址)。若子网掩码为255.255.255.128,则可得到两个子网,每个子网最多126台主机:

网络
 子网掩码
 主机地址范围
 广播地址
 
192.168.50.0
 255.255.255.128
 192.168.50.1  ~192.168.50.126
 192.168.50.127
 
192.168.50.128
 255.255.255.128
 192.168.50.129~192.168.50.254
 192.168.50.255
 

192.168.50.1

11000000.10101000.110010.00000001

11111111.11111111.111111.10000000

à 192.168.50.0

 

192.168.50.129

11000000.10101000.110010.10000001

11111111.11111111.111111.10000000

à 192.168.50.128

 

子网掩码的计算取决于所需子网的数目和IP地址的类别。计算时要注意,同NetID一样,均为0或均为1的SubnetID不分配给任何主机,而HostID均为1的地址被保留为供路由器等使用的“广播地址”,HostID均为0的地址则代表该子网本身。

 

【A类地址子网掩码的计算】

假设某个组织有一个A类地址255.0.0.0,现需要分为1000个子网。理论上,需要至少分为1002个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于29<1002<210,所以可知至少需要分配10个二进制位用于子网设置。即子网掩码应为

  

               NetID       SubnetID        HostID

11111111
 11111111  11
 000000  00000000
 

                           即 255. 255. 192. 0

 

地址范围(阴影部分表示全为0或全为1的特殊地址):

HostID均为0                                           HostID均为1          

                                  SubnetID均为0                 

 
 255. 0. 0. 0
 255. 0. 0. 1
 ……
 255. 0. 63. 254
 255. 0. 63. 255
 
第1子网
 255. 0. 64. 0
 255. 0. 64. 1
 ……
 255. 0. 127. 254
 255. 0. 127. 255
 
第2子网
 255. 0. 128. 0
 255. 0. 128. 1
 ……
 255. 0. 191. 254
 255. 0. 191. 255
 
 
 ……
  
  
  
 ……
 
第1022子网
 255. 255. 128. 0
 255. 255. 128. 1
  
 255. 255. 191. 254
 255. 255. 191. 255
 
 
 255. 255. 192. 0
 255. 255. 192. 1
 ……
 255. 255. 255. 254
 255. 255. 255. 255
 

     SubnetID均为1

 

【B类地址子网掩码的计算】

假设某个组织有一个B类地址255.255.0.0,现需要分为12个子网。理论上,需要至少分为14个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于23<1002<24,所以可知至少需要分配4个二进制位用于子网设置。即子网掩码应为         

        NetID           SubnetID      HostID

11111111
 11111111
 1111
 0000  00000000
 

                         即 255. 255. 240. 0

每个子网有4096个地址,可以接入4094台主机(另处一个作为网络地址,一个作为广播地址)。

地址范围(阴影部分表示全为0或全为1的特殊地址):

HostID均为0                                           HostID均为1          

                                  SubnetID均为0                 

 
 255. 255. 0. 0
 255. 255. 0. 1
 ……
 255. 255. 15. 254
 255. 255. 15. 255
 
第1子网
 255. 255. 16. 0
 255. 255. 16. 1
 ……
 255. 255. 31. 254
 255.255. 31. 255
 
第2子网
 255. 255. 32. 0
 255. 255. 32. 1
 ……
 255. 255. 47. 254
 255. 255. 47. 255
 
 
 ……
  
  
  
 ……
 
第14子网
 255. 255. 224. 0
 255. 255. 224. 1
  
 255. 255. 239. 254
 255. 255. 239. 255
 
 
 255. 255. 240. 0
 255. 255. 240. 1
 ……
 255. 255. 255. 254
 255. 255. 255. 255
 

     SubnetID均为1

 

【C类地址子网掩码的计算】

假设某个组织有一个C类地址255.255.255.0,现需要分为5个子网。理论上,需要至少分为7个子网(子网ID为全0和全1时分别用于表示网络本身和广播地址)。由于22<1002<23,所以可知至少需要分配3个二进制位用于子网设置。即子网掩码应为

                               NetID      SubnetID  HostID

11111111  11111111  11111111
 111   
 00000
 

                         即 255. 255. 255. 224

每个子网有32个地址,可以接入30台主机(另处一个作为网络地址,一个作为广播地址)。

地址范围(阴影部分表示全为0或全为1的特殊地址):

HostID均为0                                          HostID均为1          

                                  SubnetID均为0                 

 
 255. 255. 255. 0
 255. 255. 255. 1
 ……
 255. 255. 255. 30
 255. 255. 255. 31
 
第1子网
 255. 255. 255. 32
 255. 255. 255. 33
 ……
 255. 255. 255. 62
 255. 255. 255. 63
 
第2子网
 255. 255. 255. 0
 255. 255. 255. 65
 ……
 255. 255. 255. 94
 255. 255. 255. 95
 
 
 ……
  
  
  
 ……
 
第6子网
 255. 255. 255. 192
 255. 255. 255. 193
  
 255. 255. 255. 222
 255. 255. 255. 223
 
 
 255. 255. 255. 224
 255. 255. 255. 225
 ……
 255. 255. 255. 254
 255. 255. 255. 255
 

     SubnetID均为1

 

常用子网掩码如下:

          255      11111111    (标准)

          254      11111110     128子网

          252      11111100     64子网

          248      11111000     32子网

          240      11110000     16子网

          224      11100000     8子网

          192      11000000     4子网

          128      10000000     2子网    

0        00000000    (标准)



 作业一

1、判定下列IP地址类型(A、B或C类)

131.109.55.1     78.35.6.90    220.103.9.56     240.9.12.2    19.5.91.245 

129.9.235.52     125.78.6.2

2、判定下列IP地址中哪些是无效的,并说明其无效的原因。

131.255.255.18   127.21.19.109    220.103.256.56     240.9.12.12 

192.5.91.25      129.5.91.255     129.9.255.254    10.255.255.254

3、什么是TCP/IP协议?IP层协议包含哪些协议?

4、简述TCP协议与UDP协议的异同。各举二例说明常见网络实用软件中哪些使用TCP协议,哪些使用UDP协议。

5、TCP/IP协议中的端口(port)和套接口(socket)在网络传输中起何作用。

6、将下列网络常用英文术语译成中文:

  arp          submask           socket           port

    subnet mask       Domain Name System

7、IPV6与IPV4相比,有何优越?

8、试分析聊天软件OICQ开发者为什么采用人们认为是不可靠传输的UDP协议作为OICQ的基本通信协议。如果改用能确保可行传输的TCP,会有什么好处,会有什么不利?

9、如果你要设计一个攻击TCP/IP网站的网络“炸弹”,目的是通过持续不断地向该网站发送密集的短信息使该网站服务器瘫痪,你会在TCP和UDP两个协议中选取哪一个作为该炸弹使用的协议?为什么?

10、说明主机名(域名)、IP地址、端口号、MAC地址与TCP/IP各协议层的关系。IP地址和物理地址、IP地址和主机名之间通过什么相互映射?

11、某主机在一个C级网络上的IP地址是198.123.46.237,如果需要将该网络划分为四个子网,子网掩码应取什么?假定子网地址空间均相邻。

 

作业二(上机实验,书面报告结果)

1、用ipconfig检查并记录本机的IP地址、子网掩码和默认网关,说明默认网关的作用。

2、用winipcfg查出本机的MAC地址,说明MAC地址和IP地址在网络传输中作用有何不同。

3、用ping 命令检查并记录与默认网关的连接状态,说明显示结果各部份的意义。



与本章有关的主要知识点及思考题

1、OSI模型分为几层?简述各层主要功能。

2、TCP/IP模型分为几层?简述各层主要功能。

3、为什么说IP是一种无连接的、不可靠的网络通信协议?

    (What’s a unreliable connectonless protocol?)

4、为什么说TCP是一种面向连接的、可靠的网络通信协议?

  (What’s a connection-oriented,reliable protocol?)

5、Ethernet frame format及各字段含义。

6、IP datagram format 及各字段含义。

7、TCP segment format及各字段含义。

8、User datagram(UDP)及各字段含义。

9、host-to-host communication 与 process-to-process communication的区别是什么?

10、TCP/IP模型各层中的数据包形式有何不同?各数据包中哪些字段用来寻址?哪些字段用来控制差错?哪些字段用于流量控制?

11、既然IP协议是无连接的不可靠的传输协议,TCP是面向连接的可靠的传输协议,而Internet的多数网络通信中必须同时使用TCP和IP协议来进行数据传送,它们之间是否存在矛盾?为什么?

12、IPv4与IPv6的主要区别。

13、IP层还有哪些主要协议?简述其主要功能。

14、TCP协议是如何实现差错控制(差错检测和差错纠正)?

Error type: corrupted segments,lost segments,out-of-order segments,and 

duplicated segments

Error detection:checksum,acknoledgment,time-out 

Error correction:time-out counter for each segment and retransmit 

15、TCP协议是如何实现流量控制?

two buffers:sending & receiving buffers

two windows:sliding window and congestion window

16、What’s a process? What’s a port number? What’s a socket address?

17、局域网访问控制方法及协议名称。

18、Ethernet的特点及电缆标识。

19、四种数据交换技术名称、特点及其应用。



参考书目

1、《TCP/IP MCSE(微软认证系统工程师)学习指南》[美]Greg P. Bulette著 廖铮译                   清华大学出版社 1999年10月

2、《网络核心技术内幕――综合IP网络设计解决方案》[美]Khaliid Raza等著,希望图书创作室译     北京希望电子出版社 2000年5月

3、《计算机网络》冯博琴 吕军 主编 陈文革 程向前 编 高等教育出版社 1999年6月

4、《计算机网络――习题与解析》鲁士文 编著  清华大学出版社 2001年6月

5、《现代计算机网络技术与应用――设计・开发・管理・维护》夏云 主编 科学出版社1999年7月

6、《TCP/IP与网络互联技术》 裘实 阳光 晓文 等编著 国防工业出版社 1998年5月

7、《宽带IP网络技术及其应用实例》万博通公司技术部 编 海洋出版社 2000年5月

8、《TCP/IP 协议族》(影印版)[美]Behrouz A. Forouzan & Sophia Chung .Fegan 清华大学出版社 2000年12月

9、《计算机网络(第3版)》[美]Andrew S.Tanenbaum著 熊桂喜 王小虎等译 清华大学出版社 1998年7月

10、《高性能通信网络》[美]Jean Walrand, Pravin Varaiya著 (英文版 第2版)机械工业出版社 2000年3月

11、《数据通信与计算机网络》高传善 钱松荣 毛迪林 编著 高考教育出版社 2000年7月第一版

 


B14层 发表时间: 07/03 10:30

回复: coolwind [coolwind]   论坛用户   登录
我想要,发到我邮箱里吧!谢了!

tomball@eatng.com




B15层 发表时间: 07/17 22:47

回复: ancdut [ancdut]   论坛用户   登录
谢谢~我想要一份。
ancdut5818lj@yeah.net

B16层 发表时间: 07/18 05:32

回复: Rainki [rainki]   论坛用户   登录
你好可以发给我吗?我要一份我的E-mail:goldenqi@etang.com

B17层 发表时间: 07/18 22:45

回复: wq7777777 [wq7777777]   论坛用户   登录
还有我呢,谢谢了发到这里147739791(QQ)中好吗!!
 万分感谢?

B18层 发表时间: 07/19 00:24

回复: lian [lian]   论坛用户   登录
真得好基础,一夜读完,受益非浅,非常非常感谢。再您有您的导师其它教程吗?
万分感谢

B19层 发表时间: 07/19 11:58

回复: yangze [yangze]   版主   登录
deliweb@yangze.vicp.net

B20层 发表时间: 07/19 12:05

回复: erifaw [erifaw]   论坛用户   登录
大哥,我要,

发给我好吗,wafire@21cn.com

B21层 发表时间: 07/19 17:59

回复: fireblue [fireblue]   论坛用户   登录

   http://album5.chinaren.com/album/11/66/346611/157774.zip
大哥们,人家都说上面这个地方有了你们还要人发到你信箱里啊?

B22层 发表时间: 07/26 13:13

回复: bedlamite [bedlamite]   版主   登录
当了。

B23层 发表时间: 07/26 20:49

回复: wywwolf [wywwolf]   论坛用户   登录
东西是很好的
但是我现在不是很懂啊

B24层 发表时间: 07/27 09:02

回复: guxing [guxing]   论坛用户   登录
我正在找呢,给我一份吧,谢了!
guxing25@hotmail.com

B25层 发表时间: 07/27 14:41

回复: yzg5678 [yzg5678]   论坛用户   登录
我也想要啊! 

我来了,没有人知道.我知道我来做什么~~~~~~~~~~!!!
我太菜了,求求你们了教我一点点吧!




       


B26层 发表时间: 07/27 14:43

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号