了解网络底层信息



了解网络底层信息


使用Web浏览器时,您不必考虑所有7个OSI层中的任何一个,这将允许您专注于浏览而不是协议。在OSI的较高层上,许多协议可以是纯文本,因为较低的层已经考虑了连接的所有其他细节。会话层(5)上有套接字,它提供了从一台主机向另一台主机发送数据的接口。传输层(4)上的TCP提供了可靠性和传输控制。网络层(3)上的IP提供了寻址和包级别的通信。数据链路层(2)上的以太网提供了以太网端口间的寻址,它适用于基本LAN  (Local Area Network,局域网)通信。处于最底层的物理层(1)只不过是用来从一个设备向另一个设备发送位数据的电缆和协议。通过不同的通信方传输单个HTTP消息时,会在多个层中对其进行包装。

一、 数据链路层

最低的可见层是数据链路层。再回到传达员和烦琐的规章制度的类比中如果将下面的物理层看作是来往于各邮局间的邮车,将上面的网络层看作是一个世界范围内的邮政系统,那么数据链路层就是邮局间的邮件系统。该层提供了一种访问邮局中任何人并向他们发送消息的方法,同时也提供了查找什么人在邮局中的方法。

Ethemet(以太网)就是以该层为基础的,该层为所有以太网设备提供了一种标准寻址系统。这些地址被称为媒体访问控制(MediaAccess Control,MAC)地址。每个以太网设备被分配一个由6个字节组成的全球唯一的地址,通常写成十六进制的形式:xx:xx:xx:xx:xx:xx。有时这些地址也被称作硬件地址,因为每个硬件的地址是唯一的并且该地址存储在硬件设备的集成电路存储器中。可以认为MAC地址是硬件的社会保险(SocialSecurity)号,因为每个硬件都应该有一个唯一的MAC地址。

以太网报头长14字节,并且包含该以太网数据包的源和目的MAC地址。以太网编址还提供了一个特殊的广播地址,所有位都由二进制1构成(ff:ff:ff:ff:ff:ff)。任何发往该地址的以太网数据包将被发往所有已连接设备。

一个网络设备的MAC地址不能改变,而IP地址可以定期改变。IP地址的概念在这个级别上并不存在,只存在硬件地址的概念,因此需要一种关联这两种编址模式的方法。在办公室中,送给办公室内某个雇员的邮件会被转送到相应的办公桌上。在以太网中,将这种方法称为地址解析协议(AddressResolution Protocol,ARP)。

这个协议允许以“座位表”的方式将一个硬件设备与一个IP地址关联。有4种不同类型的ARP消息,但两个重要的消息是ARP请求消息和ARP应答消息。所有数据包的以太网报头都包含一个用于说明数据包的类型值。这个类型用来指定数据包是一个ARP类型的消息还是一个IP数据包。

ARP请求消息是发往广播地址的,它包含发送者的IP地址和MAC地址,其主要意思是:“嘿,谁有这个IP地址?如果是您,请响应并告诉我您的MAC地址。”ARP应答是发往请求者MAC地址(和IP地址)的相应响应,它的意思是:“这是我的MAC地址,而且我有该IP地址。”大多数实现将从ARP应答收到的MAC/IP地址对暂时缓存,这样就不需要为每个单一数据包发送ARP请求和应答了。这些缓存就像是办公室间的座位表一样。

例如,如果一个系统的IP地址和MAC地址分别是10.10.10.20和00:00:00:aa:aa:aa,另一个处于同一网络上的系统的IP地址和MAC地址分别是10.10.10.50和OO:OO:OO:bb:bb:bb,在它们知道彼此的MAC地址之前,是不能相互通信的,如图4-4所示。

如果第1个系统想要在第2个设备的IP地址10.10.10.50上通过IP建立一个TCP连接,将首先检查它的ARP缓存以查看是否有10.10.10.50的记录。因为这是这两个系统第一次尝试通信,缓存中没有这样的记录,因此它会向广播地址发送一个ARP请求。该请求的意思是:“如果您是10.10.10.50,请向地址OO:OO:OO:aa:aa:aa回应我。”因为该请求发往广播地址,网络中的每个设备都会看到该请求,但只有相应IP地址的系统打算做出回应。在这个例子中,作为响应,第2个系统会直接向OO:OO:OO:aa:aa:aa回送一个ARP应答并说:“我是10.10.10.10,我的地址是OO:OO:OO:bb:bb:bb。”第1个系统接收此应答,将IP和MAC地址对缓存到ARP缓存中,并使用硬件地址进行通信。

二、  网络层

网络层就像是全球范围内的邮政业务一样:使用一种寻址和传递方法向各个地方发送物品。该层中用于Intemet寻址和传递的协议被称为网际协议(lnternet Protocol,IP),Intemet大部分使用Ipv4。

Intemet上的每个系统都有一个IP地址,它由我们熟悉的形如XX,XX.XX.XX的4个字节的排列组成。在该层中数据包的IP报头大小为20字节,它由RFC791中定义的各种域和位标记组成。

[Page 10]

September 1981

Internet Protocol

                     3. SPECIFICATION

3.1. Internet Header Format

A summary of the contents of theinternet header follows:

0                       1                      2                3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 67 8 9 0 1 2 3 4 5 6 7 8 9 0 1 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|Version  |   IHL  |    Type of Service  |    Total Length    |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Identification    |     Flags   |     Fragment Offset        | 

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Time to Live      |      Protocol    |     Header Checksum   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                           Source Address                      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                           DestinationAddress                 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                  Options         |         Padding            |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Example Internet Datagram Header

Figure 4.

Note that each tick markrepresents one bit position.这个令人惊讶的描述性ASCII图表盟示了这些域以及它们在报头中的位置。标准协议有令人头疼的说明文档。与以太网报头类似,IP报头也有协议域,它用于说明数据包中的数据类型和路由的源及目的地址。此外,报头还附带了协助检测传输错误的校验数字以及处理数据包分割的域。

Intemet协议主要用于传输在较高层中打包的数据包。但是,该层还存在Intemet控制报文协议(IntemetControl Message Protocol,ICMP)数据包。ICMP数据包用于通知消息及诊断。IP没有邮局可靠,这意味着并不能保证IP数据包实际上一定会到达其最终目的地。如果出现问题,会回送ICMP数据包来将问题通知给发送者。

ICMP一般也用于测试连通性。名为ping的工具使用ICMP回应请求(EchoRequest)消息和回应应答(Echo Reply)消息。如果一台主机想测试它是否可以与另一台主机进行通信,它通过发送ICMP回应请求ping远程主机。在收到ICMP回应请求后,远程主机回送一个ICMP回应应答。这些消息可用来测定两台主机之间的连接延迟。然而,很重要的一点是要记住ICMP和IP都是无连接的;所以该协议层真正关心的是尽其最大努力将数据包送达其目的地址。

有时网络连接会对数据包大小有限制,不允许传送大数据包。对于这种情况,IP可以通过将数据分段来处理。

数据包被分割成较小的包片段,这些小片段可以通过网络链接传递,为每个片段加上IP头,随后将它们发送出去。每个片段有一个不同的片段偏移值,该值在报头中存储。目的地接收到这些片段后,这些偏移值用于重新装配IP数据包。

在IP数据包传递过程中提供了诸如数据包分段之类的辅助手段,但它们并不能保持连接或保证正确传递。这些工作由传输层中的协议负责。

三、  传输层

传输层可以被认为是第1个传达员,它从网络层中获得邮件。如果客户想要退掉一个有缺陷的商品,他们必须发送一个请求RMA(ReturnMaterial Authorization)号的消息。然后,传达员会按照退货协议请求一个收据,并最终发放一个RMA号以便客户在其中邮寄物品。邮局所关心的只是来回发送这些消息(和包裹),而不关心它的内容是什么。

该层中的两个主要协议是传输控制协议(TransportControl Protocol,TCP)和用户数据报协议( User Datagram Protocol,UDP)。TCP是Internet服务最常用的协议:Telnet、HTTP(Web通信)、SMTP(E-mail通信)和FTP(文件传输)都使用TCP。TCP流行的原因之一是它提供了两个IP地址之间透明、可靠且双向的连接。流套接字使用TCP/IP连接。TCP中的双向连接类似于使用电话—拨打一个号码之后,会建立一个连接,双方可以通过这个连接通信。可靠性只不过意味着TCP将保证所有的数据会以正确的顺序到达目的地。如果一个连接的数据包变得混乱并且到达目的地时次序紊乱,TCP将会确保在将它们送到下一层处理之前正确排序。如果某些数据包在连接中丢失,目的地将会等待发送方重新传递丢失的数据包。

一组被称为TCP标志的标志以及对被称为序号的值的跟踪使得所有这些功能成为可能。TCP标志的意义和目的。这些标志与源端口和目的端口一起存储在TCP报头中。在RFC793中有TCP报头的详细说明。

RFC 793片段

[Page 14]

September 1981

Transmission Control Protocol

3. FUNCTIONAL SPECIFICATION

3.1. Header Format

TCP segments are sent as internetdatagrams. The Internet Protocol

header carries severalinformation fields, including the source and

destination host addresses [2]. ATCP header follows the internet www.cnpaf.net

header, supplying informationspecific to the TCP protocol. This

division allows for the existenceof host level protocols other than

TCP.

TCP Header Format

0 1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 67 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|           Source Port         |       Destination Port       |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

|                        Sequence Number                        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                     Acknowledgment Number                     |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|    Data |             |U|A|P|R|S|F|                           |

| Offset|      Reserved |R|C|S|S|Y|I|              Window       |

|       |               |G|K|H|T|N|N|                           |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

|             Checksum          |         Urgent Pointer        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|              Options          |           Padding             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

|                             data                              |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TCP Header Format

Note that one tick markrepresents one bit position.

Figure 3.

序号和确认号用于维持状态。在一个三步握手过程中,SYN和ACK标志一起使用以打开连接。客户端希望打开通向服务器的连接时,就向服务器发送一个SYN标志打开而ACK标志关闭的数据包。随后,服务器响应一个数据包,这个数据包的SYN和ACK标志全都是打开的。为了完成连接,客户端回送一个SYN标志关闭而ACK标志打开的数据包。在此之后,连接中的所有数据包都是ACK标志打开而SYN标志关闭的。只有连接的前两个数据包的SYN标志打开,因为这些数据包是用来同步序号的。

这些序号允许TCP将无序数据包放回原来的顺序、检测数据包是否丢失、防止与来自其他连接的数据包混在一起。

连接开始时,双方都生成一个初始序号。在连接握手的前两个SYN包中,这个序号被传送到另一方。然后,对于每个被发送的数据包,序号的增量为数据包的数据部分的字节数。这个序号包含在TCP数据包的头中。此外,每个TCP头也有一个确认号,该确认号只不过是另一方的序号加1。

对于需要可靠且双向通信的应用程序来说,TCP是很重要的。然而,这些功能的成本增加了通信开销。

与TCP相比,UDP具有少得多的开销和内置功能。功能的缺乏导致它的行为更像是IP协议:它是无连接并且不可靠的。UDP并不使用内置功能创建连接和保持可靠性,而是期望应用程序来处理这些问题。有时是不需要连接的,这时轻量级的UDP是一种更适用于这些情形的协议。在RFC768中定义的UDP报头相对要小得多。它仅仅包含按以下顺序排列的4个1 6位数:源端口、目的端口、长度和校验数字。

了解以上信息后,我们下面一篇文章介绍嗅探。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值