TCP/IP详解 笔记1

T C P传给I P的数据单元称作T C P报文段或简称为T C P段(T C P s e g m e n t)。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特
流称作帧(Fr a m e )。
网络接口层是路由器连接两个不同数据链路层的一层,比如连接令牌网,和以太网之间的一层接口层。
I P和网络接口层之间传送的数据单元应该是分组( p a c k e t)。
分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t)。
U D P传给I P的信息单元称作U D P数据报(UDP datagram),而且U D P的首部长为8字节。
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用( D e m u l t i p l e x i n g)。
网络层( I P)提供点到点的服务,而运输层( T C P和U D P)提供端到端的服务。


数据链路层
大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户程序和服务器程序通过T C P / I P进行通信。

旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当I P数据报离开网络层时把它返回给自己。


1) 传给环回地址(一般是1 2 7 . 0 . 0 . 1)的任何数据均作为I P输入。
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义(第1 2章)包含主机本身。
3 ) 任何传给该主机I P地址的数据均送到环回接口。
看上去用传输层和I P层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口,就像传给其他链路层一样,只不过环回接口把它返回到I P的输入队列中。



当在同一个网络上的两台主机互相进行通信时,该网络的M T U是非常重要的。但是如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的M T U。重要的不是两台主机所在网络的M T U的值,重要的是两台通信主机路径中的最小M T U。它被称作路径M T U。

两台主机之间的路径M T U不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径M T U在两个方向上不一定是一致的。


IP层
I P路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的I P地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标
志字段的值)。
2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所
有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。
3) 搜索路由表,寻找标为“默认( d e f a u l t)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。


ARP
数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的。一个网络如以太网可以同时被不同的网络层使用。

数据报在各站的传输过程中目的I P地址始终不变,但是封装和目的链路层地址在每一站都可以改变。

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查I P数据报中的目的I P地址。

A R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广播。A R P请求数据帧中包含目的主机的I P地址,其意思是“如果你是这个I P地址的拥有者,请回答你的硬件地址。”

在A R P背后有一个基本概念,那就是网络接口有一个硬件地址(一个48 bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,T C P / I P有自己的地址: 32 bit的I P地址。知道主机的I P地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。A R P的功能是在32 bit的I P地址和采用不同网络技术的硬件地址之间提供动态映射。


R A R P协议是许多无盘系统在引导时用来获取I P地址的。R A R P分组格式基本上与A R P分组一致。一个R A R P请求在网络上进行广播,它在分组中标明发送端的硬件地址,以请求相应I P地址的响应。应答通常是单播传送的。

ICMP
I C M P报文分为  查询报文    ,差错报文。

ICMP查询报文:
             I C M P地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码
 
             I C M P时间戳请求允许系统向另一个系统查询当前的时间。

ICMP差错报文:
             ICMP端口不可达报文        


PING、TRACEROUTE
“p i n g”这个名字源于声纳定位操作。P i n g程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份I C M P回显请求报文给主机,并等待返回I C M P回显应答.
p i n g程序为我们提供了查看I P记录路由( R R)选项的机会。
                                              时间戳选项。

Tr a c e r o u t e程序可以让我们看到I P数据报从一台主机传到另一台主机所经过的路由。Tr a c e r o u t e程序还可以让我们使用I P源路由选项。

我们现在可以猜想一下Tr a c e r o u t e程序的操作过程。它发送一份T T L字段为1的I P数据报给目的主机。处理这份数据报的第一个路由器将T T L值减1,丢弃该数据报,并发回一份超时I C M P报文。这样就得到了该路径中的第一个路由器的地址。然后Tr a c e r o u t e程序发送一份T T L值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到T T L值为1的I P数据报,也不会丢弃该数据报并产生一份超时I C M P报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?
Tr a c e r o u t e程序发送一份U D P数据报给目的主机,但它选择一个不可能的值作为U D P端口号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的U D P模块产生一份“端口不可达”错误(见6 . 5节)的I C M P报文。这样,Tr a c e r o u t e程序所要做的就是区分接收到的I C M P报文是超时还是端口不可达,以判断什么时候结束。


我们描述了I P记录路由选项( R R)。为什么不使用这个选项而另外开发一个新的应用程序?有三个方面的原因。

首先,原先并不是所有的路由器都支持记录路由选项,因此该选项在某些路径上不能使用( Tr a c e r o u t e程序不需要中间路由器具备任何特殊的或可选的功能)。
其次,记录路由一般是单向的选项。发送端设置了该选项,那么接收端不得不从收到的I P首部中提取出所有的信息,然后全部返回给发送端。在7 . 3节中,我们看到大多数P i n g服务器的实现(内核中的I C M P回显应答功能)把接收到的R R清单返回,但是这样使得记录下来的I P地址翻了一番(一来一回)。这样做会受到一些限制,这一点我们在下一段讨论( Tr a c e r o u t e程序只需要目的端运行一个U D P模块—其他不需要任何特殊的服务器应用程序)。
最后一个原因也是最主要的原因是, I P首部中留给选项的空间有限,不能存放当前大多
数的路径。在I P首部选项字段中最多只能存放9个I P地址。在原先的A R PA N E T中这是足够的,但是对现在来说是远远不够的。


静态初始化路由表

一个常用的方法是在系统引导时显式地在初始化文件中运行r o u t e命令

初始化路由表的其他方法是运行路由守护程序、

用较新的路由器发现协议


没有到达目的地的路由

如果数据报是由本地主机产生的,那么就给发送该数据报的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。如果是被转发的数据报,那么就给原始发送端发送一份I C M P主机不可达的差错报文


动态选路协议,它用于路由器间的通信

路由器上有一个进程称为路由守护程序( routing daemon),它运行选路协议,并与其相邻的一些路由器进行通信。

当路由随时间变化时,路由是由路由守护程序动态地增加或删除,而不是来自于自引导程序文件中的r o u t e命令。

每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议I G P(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。最常用的I G P是选路信息协议R I P(Routing Infromation Protocol),。一种新的I G P是开放最短路径优先O S P F(Open ShortestPath First)协议。

外部网关协议E G P(Exterier Gateway Protocol)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器。新E G P是当前在N S F N E T骨干网和一些连接到骨干网的区域性网络上使用的是边界网关协议B G P(Border Gateway Protocol)。B G P意在取代E G P。

RIP报文包含中在UDP数据报中。

与采用距离向量的R I P协议不同的是, O S P F是一个链路状态协议。距离向量的意思是,R I P发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。
在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主
动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在
自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。

从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快。收敛的
意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来。O S P F与R I P(以及其他选路协议)的不同点在于, O S P F直接使用I P。也就是说,它并不使用U D P或T C P。对于I P首部的p r o t o c o l字段,O S P F有其自己的值。


U D P检验和覆盖U D P首部和U D P数据。回想I P首部的检验和,它只覆盖I P的首部—并不覆盖I P数据报中的任何数据。U D P的检验和是可选的,而T C P的检验和是必需的。



I P数据报是指I P层端到端的传输单元(在分片之前和重新组装之后),分组是指在I P层和链路层之间传送的数据单元。一个分组可以是一个完整的I P数据报,也可以是I P数据报的一个分片。


当系统接收I P数据报的速率超过这些数据报被处理的速率时,系统可能发送I C M P源站抑制差错报文。使用U D P时很容易产生这样的I C M P差错。


广播和多播仅应用于U D P,它们对需将报文同时传往多个接收者的应用来说十分重要。T C P是一个面向连接的协议,它意味着分别运行于两主机(由I P地址确定)内的两进程(由端口号确定)间存在一条连接。


通常每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播( u n i c a s t )。

有时一个主机要向网上的所有其他主机发送帧,这就是广播。

多播(multicast) 处于单播和广播之间:帧仅传送给属于多播组的多个主机。


主机对由信道传送过来帧的过滤过程

首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序。通常网卡仅接
收那些目的地址为网卡物理地址或广播地址的帧。另外,多数接口均被设置为混合模式,这种模式能接收每个帧的
一个复制。(如果帧检验和错,网卡将丢弃该帧)。设备驱动程序将进行另外的帧过滤。首先,帧类型中必须指定要使用的协议( I P、A R P等等)。其次,进行多播过滤来检测该主机是否属于多播地址说明的多播组。
设备驱动程序随后将数据帧传送给下一层,比如,当帧类型指定为I P数据报时,就传往I P层。I P根据I P地址中的源地址和目的地址进行更多的过滤检测。如果正常,就将数据报传送给下一层(如T C P或U D P)。每次U D P收到由I P传送来的数据报,就根据目的端口号,有时还有源端口号进行数据报过滤。如果当前没有进程使用该目的端口号,就丢弃该数据报并产生一个I C M P不可达报文(T C P根据它的端口号作相似的过滤)。如果U D P数据报存在检验和错,将被丢弃。

使用广播的问题在于它增加了对广播数据不感兴趣主机的处理负荷。拿一个使用U D P广
播应用作为例子。如果网内有5 0个主机,但仅有2 0个参与该应用,每次这2 0个主机中的一个
发送U D P广播数据时,其余3 0个主机不得不处理这些广播数据报。一直到U D P层,收到的
U D P广播数据报才会被丢弃。这3 0个主机丢弃U D P广播数据报是因为这些主机没有使用这个
目的端口。
多播的出现减少了对应用不感兴趣主机的处理负荷。使用多播,主机可加入一个或多个
多播组。这样,网卡将获悉该主机属于哪个多播组,然后仅接收主机所在多播组的那些多播帧。


支持主机和路由器进行多播的I n t e r n e t组管理协议( I G M P)。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发

正如I C M P一样, I G M P 也被当作I P 层的一部分。I G M P报文通过I P数据报进行传输。不像我们已经见到的其他协议, I G M P有固定的报文长度,没有可选数据。


多播的基础就是一个进程的概念(使用的术语进程是指操作系统执行的一个程序),该进程在一个主机的给定接口上加入了一个多播组。在一个给定接口上的多播组中的成员是动态的—它随时因进程加入和离开多播组而变化。


域名系统( D N S)是一种用于T C P / I P应用程序的分布式数据库,从应用的角度上看,对D N S的访问是通过一个地址解析器( r e s o l v e r)来完成的。解析器通常是应用程序的一部分。解析器并不像T C P / I P协议那样是操作系统的内核。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值