TCP/IP(二):数据链路层和网络层

来源:互联网 发布:常用的网络端口号 编辑:程序博客网 时间:2024/05/16 09:29

数据链路层

  1. 数据链路层的功能:
    1)将数据封装成帧,帧是数据链路层传输的单位
    2)控制帧的传输:处理简单的传输差错,调节发送速率,接送方匹配
    3)维持两个连接网络实体间的链路建立、维持和释放管理

  2. 链路层的3个作用:
    1)为IP模块发送和接收IP数据报
    2)为ARP模块发送ARP请求和接收ARP应答
    3)为RARP模块发送RARP请求和接收RARP应答

    这里写图片描述

    注意MTU(最大传输单元)规定的是帧的数据部分的长度,最大传输单元是链路的要求,MTU 分为接口 MTU路径 MTU:接口 MTU 是所指定的接口所允许发送的最大数据长度;路径 MTU 指两台通信主机路径中最小的 MTU 值。路径 MTU 是不对称的,它在两个方向上不一定一致。

    当从网络层传输下来的IP数据报的长度超过MTU时,那么网络层就需要对IP数据报进行分片。

    MTU的发现机制: 在IP数据报首部格式中,有一个标志位DF用来设置是否允许IP数据报分片,首先源地址将数据报的DF位置位,在逐渐增大发送的数据报的大小——路径上任何需要将分组进行分片的设备都会将这种数据报丢弃并返回“destination unreachable, fragmentation needed but DF bit set”(目的地不可达,需要分片但DF位设置)的ICMP响应到源地址,从而源地址就知道路径中MTU的大小。

    netstat -in//Linux中查看网络的MTU:
  3. 控制帧的传输:
    反馈重发机制:简单的奇偶校验码检查是否发生错误,错误则重发,这需要一个反馈的过程,告诉发送者数据错误,发送者才能重发。
    计时器:如果一个帧发送出去后一直在网络中循环,没有送到,会导致发送过程停滞不前,引入计数器来限定接收方发送反馈消息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传出的帧以出错或丢失,就要重新发送。
    序号:因为同一个帧可能发送多次,为了防止接收方多次接收到同一帧,对发送的帧进行编号

  4. 以太网封装
    根据网络中使用的硬件的不同,链路层支持多种协议:以太网、令牌环网、串性线路……
    主要有以太网协议串行接口链路协议(SLIP,PPP)

    下面是802.3MAC和以太网封装格式:(主要了解以太网封装)

    这里写图片描述

  5. 环回接口
    大多数系统中把127.0.0.1这个IP地址分配到环回接口上,并命名为localhost,一个传输到环回接口的IP数据报不会出现在网络中,环回接口方便运行在同一个主机上的客户和服务器进行通信。环回接口处理IP数据报的简单过程:

    这里写图片描述

网路层

IP 协议位于网络层,它是 TCP/IP 协议族中最为核心的协议,所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 协议提供的是 不可靠无连接 的数据报传送服务。

不可靠(unreliable):IP 协议不能保证数据报能成功地到达目的地,它仅提供传输服务。当发生某种错误时,IP 协议会丢弃该数据报。传输的可靠性全由上层协议来提供。

无连接(connectionless):IP 协议对每个数据报的处理是相互独立的。这也说明, IP 数据报可以不按发送顺序接收。如果发送方向接收方发送了两个连续的数据报(先是 A,然后是 B),每个数据报可以选择不同的路线,因此 B 可能在 A 到达之前先到达。

  1. IP数据报的格式:

    这里写图片描述

    版本号 :4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6。目前常见的是 IPv4。

    首部长度 :4 位,表示 IP 报头长度,包括选项字段。(只是报头并不包含数据部分)最大值为4*15 = 60字节

    服务类型(TOS) :分别有:最小时延、最大吞吐量、最高可靠性、最小花费 4 种服务,如下图所示。4 个标识位只能有一个被置为 1 :(已经很少使用)

    这里写图片描述

    总长度 :16 位,报头长度加上数据部分长度,便是数据报的总长度。IP 数据报最长可达 65535 字节

    标识 :16 位,接收方根据分片中的标识字段相不相同来判断这些分片是不是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加 1。当一个数据报的长度大于MTU时,需要分片,但是所有分片的标识是一样的,只有不同数据报(同一数据报的不同分片属于同一数据报)的标识不同。

    标志 :3 位,只有最后两位有意义,用于标识数据报是否分片。其中的第 2 位是不分段(DF)位。当 DF 位被设置为 1 时,则不对数据包进行分段处理;第 3 位是分段(MF)位,除了最后一个分段的 MF 位被设置为 0 外,其他的分段的 MF 位均设置为 1。

    偏移 :13 位,在接收方进行数据报重组时用来标识分片的顺序,以8个字节为偏移单位,详细见例子。

    生存时间(TTL) :8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。

    协议 :8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。

    首部校验和 :根据 IP 首部计算的校验和码,只校验数据报的首部,不校验数据部分(数据部分上层协议已经校验,例如TCP)。

    源 IP 和目的 IP :数据报头还会包含该数据报的发送方 IP 和接收方 IP。

    选项 :是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域

    例子:数据报总长度3820byte,需要分片的长度不超过1420byte的数据报片,可将数据部分分为1400,1400,1000字节

    这里写图片描述

  2. IP 地址:
    在上一篇中,只是简单介绍了IP地址,没有介绍子网划分,掩码等概念,这里进一步说明:

    A 类地址
    1) A 类地址网络号范围:1.0.0.0—127.0.0.0
    2)A 类 IP 地址范围:1.0.0.0—127.255.255.255
    3) A 类 IP 的私有地址范围:10.0.0.0—10.255.255.255 (所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)
    4)127.X.X.X 是保留地址,用做循环测试用的
    5) 因为主机号有 24 位,所以一个 A 类网络号可以容纳 2^24-2=16777214 个主机号

    B 类地址
    1) B 类地址网络号范围:128.0.0.0—191.255.0.0
    2) B 类 IP 地址范围:128.0.0.0—191.255.255.255
    3) B 类 IP 的私有地址范围:172.16.0.0—172.31.255.255
    4) 169.254.X.X 是保留地址;191.255.255.255 是广播地址
    5)因为主机号有 16 位,所以一个 B 类网络号可以容纳 2^16-2=65534 个主机号

    C 类地址
    1)C 类地址网络号范围:192.0.0.0—223.255.255.0
    2)C 类 IP 地址范围:192.0.0.0—223.255.255.255
    3)C 类 IP 的私有地址范围:192.168.0.0—192.168.255.255
    4)因为主机号有 8 位,所以一个 C 类网络号可以容纳 2^8-2=254 个主机号

    为了防止IP地址的过段浪费,在ABC类网络地址的基础上, 进一步划分:用主机号的前几位用来划分子网号。经过子网的划分,这样的IP地址变成=网络号+子网号+主机号。

    子网号的位数没有硬性规定,于是我们用 子网掩码 来确定一个 IP 地址中哪几位是主机号,具体使用方法如图:

    这里写图片描述

  3. IP路由选择:
    如果发送方与接收方直接相连(点对点)或都在一个共享网络上(以太网),那么 IP 数据报就能直接送达。 而大多数情况则是发送方与接收方通过若干个路由器(router)连接,那么数据报就需要经过若干个路由器的转发才能送达,它是怎么选择一个合适的路径来”送货”的呢?

    IP 层在内存中有一个路由表(输入命令 route -n 可以查看路由表),当收到一份数据报并进行发送时,都要对该表进行搜索:
    1)从收到的数据报的首部提取目的IP地址D
    2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各个网路的子网掩码和D逐位相与,看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(当然需要把D转化成物理地址,把数据报封装成帧发送出去),转发任务结束。否则进行间接交付,执行3)
    3)若路由中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指定的下一跳路由器;否则,执行4)
    4)对路由 表中的每一行(目的网路地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相与,其结果为N,若N与该行的目的网络地址匹配,则把数据报传送给该行指定的下一跳路由器。否则,执行5)
    5)若路由表中有一个默认的路由器,则把数据报传送给默认路由器。否则执行6)
    6)报告分组错误

    路由表中的信息:
    *目的IP地址:可以是完整的网络名称(网络地址+主机号),也可以是网络地址(主机号为0,代表网络中的所有地址)
    *下一站路由器的IP地址或直接连接的网络IP地址:
    *标志:
    *为数据报传输指定的一个网络接口

    这里写图片描述

    各标志的意义:
    U 该路由可以使用;
    G 表示下一站是一个路由器(网关),没有此标志表示是直接相连的地址
    H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合

  4. NAT(网络地址转换)
    一般家中的路由器和实验室中的路由器,采用NAT技术,在路由器下面的地址都是内网地址,也就是不能够连入外网的地址,当需要与外网连接的时候,路由器将地址转换为该路由器连接的外网地址,与外网进行连接,实现宽带共享。

    当在专用网内部的一些主机本来已经分配到了内网 IP 地址,但现在又想和因特网上的主机通信时,NAT 技术将其内网 IP 地址转换成全球 IP 地址,然后与因特网连接,也就是说,内网的数台主机使用了同一个全球 IP 地址在上网。

0 0
原创粉丝点击