首页 > 其他 > 详细

关于链路层的更多细节

时间:2020-02-16 16:23:29      阅读:87      评论:0      收藏:0      [点我收藏+]

(会持续更新, 当掌握到更多的链路层的相关知识时会继续补充)

链路层

在T C P / I P协议族中,链路层主要有三个目的:

  1. 为IP模块发送和接收IP数据报;
  2. 为A R P模块发送A R P请求和接收ARP应答;
  3. 为R A R P发送R A R P请求和接收RARP应答。

??TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、F D D I(光纤分布式数据接口)及 R S-2 3 2串行线路等

此文讨论以下3个内容:

  1. 以太网链路层协议
  2. 两个个串行接口链路层协议(SLIP和PPP)
  3. 大多数实现都包含的环回(loopback)驱动程序

以太网

以太网采用一种称作CSMA/CD的媒体接入方法

在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984]中定义的, 而在IEEE 802
网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988] , 最常使用的封装格式是 RFC 894定义的格式

技术分享图片 IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)

在 8 0 2标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括 C R C检验码。

以太网的类型字段, 定义了后续数据的类型。在8 0 2标准定义的帧格式中类型字段则由后续的子网接入协议( Sub-network Access Protocol, SNAP)的首部给出。

幸运的是, 8 0 2定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分

??在以太网帧格式中,类型字段之后就是数据;而在 8 0 2帧格式中,跟随在后面的是 3字节的802.2 LLC和5字节的802.2 SNAP。 DSAP和SSAP的值都设置为0xaa

尾部封装

RFC 893[Leffler and Karels 1984]描述了另一种用于以太网的封装格式,称作尾部封装(trailer encapsulation)。这是一个早期B S D系统在DEC VA X机上运行时的试验格式,

它通过调整I P数据报中字段的次序来提高性能, 现在,尾部封装已遭到反对,因此我们不对它举任何例子。

SLIP:串行线路IP

SLIP的全称是Serial Line IP。它是一种在串行线路上对 I P数据报进行封装的简单形式,在
RFC 1055[Romkey 1988]中有详细描述。

一种在串行线路上对IP数据包进行封装的简单形式

??SLIP一般提供基于服务类型的排队方法. 允许对交互通信数据在处理大块数据之前进行处理。由于大多数的实现都不使用 TO S字段,因此这种排队机制由S L I P自己来判断和处理,驱动程序先查看协议字段(确定是否是一个 T C P段),然后检查T C P信源和信宿的端口号,以判断是否是一个交互服务。

S L I P是一种简单的帧封装方法,还有一些值得一提的缺陷

  1. 每一端必须知道对方的I P地址。没有办法把本端的I P地址通知给另一端。
  2. 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于 S L I P,
    那么它不能同时使用其他协议
  3. S L I P没有在数据帧中加上检验和(类似于以太网中的 C R C字段)。

尽管存在这些缺点,S L I P仍然是一种广泛使用的协议

PPP 协议

PPP点对点协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分

  1. 在串行链路上封装 I P数据报的方法。 P P P既支持数据为 8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
  2. 建立、配置及测试数据链路的链路控制协议( L C P:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
    3.针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。当前RFC定义的网络层有IP、OSI网络层、DECnet以及AppleTalk。例如,IPNCP允许双方商定是否对报文首部进行压缩,类似于CSLIP(缩写词NCP也可用在TCP的前面)。
技术分享图片
PPP数据帧的格式

??尽管P P P比S L I P有更多的优点,但是现在的S L I P用户仍然比P P P用户多。随着产品越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP

环回接口(Loopback Interface)

A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据报不能在任何网络上出现, 一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作

但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己

技术分享图片 环回接口处理IP数据报的过程

MTU 最大传输单元

??如果 IP层有一个数据报要传,而且数据的长度比链路层的 MTU还大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。

可以用netstat命令打印出网络接口的M T U

  • 路径MTU

    但是如果两台主机之间的通信要通过多个网络,重要的不是两台主机所在网络的 M T U的值,重要的是两台通信主机路径中的最小 M T U


最后

以上是当今TCP/IP所采用的部分数据链路公共技术。TCP/IP成功的原因之一是它几乎能在任何数据链路技术上运行。

IP:网际协议

??IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、IMP及IGMP数据都以IP数据报格式传输

??不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。

??无连接(connecltionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

IP: Headers

普通的IP首部长为2 0个字节,除非含有选项字段。

技术分享图片 IP数据报格式及首部中的各字段

??由于T C P / I P首部中所有的二进制整数在网络中传输时都要求以big endian字节序,因此它又称作网络字节序。

  • 首部长度 指的是首部占 32 bit字的数目,包括任何选项。
    由于它是一个 4比特字段,因此首部最长为6 0个字节。在第8章中,我们将看到这种限制使某些选项如路由记录选项在当今已没有什么用处。普通IP数据报(没有任何选择项)字段的值是 5 (20个字节)

    \[5\times 32 \div 8 = 20\]
    \[(2^4-1)\times 32 \div 8 = 60\]

  • 服务类型(TO S)字段包括一个3 bit的优先权子字段(现在已被忽略)
    现在大多数的T C P / I P实现都不支持TO S特性


    技术分享图片

    服务类型字段推荐值

  • 总长度字段 是指整个 I P数据报的长度,以字节为单位
    利用首部长度字段和总长度字段,就可以知道 I P数据报中数据内容的起始位置和长度。当数据报被分片时,该字段的值也随着变化

    • 尽管可以传送一个长达 65535字节的IP数据报,但是大多数的链路层都会对它进行分片, 而且,主机也要求不能接收超过 576字节的数据报

    一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为 4 6字节

ifconfig

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp4s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp4s0
172.16.93.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0
192.168.124.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1


Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    600    0        0 wlp4s0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 wlp4s0
172.16.93.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0
192.168.124.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1

??后三条是自动生成的,因为是直连的网段,不需要走三层,直接走二层协议,在每块网卡上每配置一个IP就会生成一条记录(一个网卡上可以配置多个IP)。表示去往这两个网段的数据包,直接由网卡接口ens33及ens37发送出去
??这两条记录中的gateway并没有意义,Flags那一列中有G时才会使用Gateway。这两条路由并没有这样的标志,由于它们是本地的,匹配这些条目的数据包会直接通过Iface列中的网卡发送出去。

后两条表达的意思:

192.168.0.0 ? 10.77.238.254 ?255.255.0.0 ? ? UG ? ?0 ? ? 0 ? ?0 ?eth0
表示去往192.168.0.0网段的数据包由网关10.77.238.254通过网卡eth0来转发
0.0.0.0 ? ? ? 169.254.0.0 ? ?0.0.0.0 ? ? ? ? UG ? ?0 ? ? 0 ? ?0 ?eth1
表示去往所有目标地址数据包由网关169.254.0.0 通过网卡eth1来转发
?

路由匹配是先匹配掩码(mask)最长的? ?如果mask一样 就根据Metric值匹配的顺序。

关于链路层的更多细节

原文:https://www.cnblogs.com/Kimbing-Ng/p/12316767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!