网络层简析

网络层

  1. 地址管理
  2. 路由选择:路径规划

IP报头

网络层的代表协议:IP

IPv4 协议(v4:版本号)

  • 4位版本:只有4和6

  • 4位首部长度:描述了IP报头多长(IP报头是变长的)。报头中有一个选项部分,是变长的,此处单位也是4字节。

  • 8位服务类型(TOS):实际只有4位有效,4位中只有1位可以是1,其他都是0。4位就表示IP协议的4种形态/工作模式。
    4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。
    对于 ssh/telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。

  • 16位总长度(字节数):IP数据包的长度(报头 + 数据)
    总长度 - 首部长度 = 数据长度(载荷长度),即一个完整的TCP/UDP数据报长度。
    16位总长度是否表示一个IP数据报,最大只能支持64kb?
    确实有这个限制,但是IP自身支持对包的拆分和组装。当IP数据报携带的数据太长了,就会在网络层对数据进行拆分,把一个数据拆分成多个IP数据报,在分别发送,接收方再拼装。

发送方:把100KB的数据,交给传输层(封装),传输层交给网络层(封装),网络层就把这个100KB的数据拆分。再交给数据链路层,由以太网分装成两个数据帧。
接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层。网络层针对这些IP数据报进行解析,把里面的载荷拼成一个,交给传输层。

下面3个字段是辅助拆包 / 组包 提供的

  • 16位标识:同一个数据拆成多个包,该标识是一样的

  • 3位标志:结束标志

  • 13位片偏移:多个包的先后顺序。分片相对于原始IP报文开始处的偏移。
    表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍,否则报文就不连续了。

  • 8位生存时间:一个数据报在网络上能够传输的最大时间(跳数)。
    数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL= TTL - 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

  • 8位协议:表示上层协议的类型。

  • 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。如果校验和不一致,直接丢弃,IP不负责重传。如果上层是TCP,TCP会在没收到ack后重传。

  • 32位源地址和32位目标地址:表示发送端和接收端。我们使用点分十进制。32位数字 只能表示42亿9千万个数字,表示全世界所有的上网设备。

  • 选项字段:不定长,最多40字节。

IP地址

IP地址分为两个部分,网络号和主机号

  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
  • 127.*的IP地址:用于本机环回(loop back)测试,通常是127.0.0.1
  • 主机号为1,比如192.168.0.1 一般为网关IP。

IP地址不够用的解决方案

为了解决IP地址不够用的问题,
1. 动态分配IP地址,没有从根本上增加IP地址,只是提高了利用率
2. NAT网络地址转换,本质是使用一个IP代表一批设备,提高IP地址的利用率,使用端口区分。NAT机制能够解决IP不够用,单让网络环境变得更复杂了
在NAT背景下,就把IP地址分成两个大类
- 内网IP:10.*; 172.16.* - 172.31.*; 192.168.*
- 外网IP:
3. IPv6:从根本上解决IP不够用问题。使用16字节表示IP地址,128位。 42亿 * 42亿 * 42亿 * 42亿

数据链路层

考虑相邻两个节点之间的传输。
相邻节点:通过网线/光纤/无线直接相连的两个设备。
数据链路层典型协议:以太网 (规定了数据链路层,也规定物理层的内容)
我们使用的网线,就叫做 ” 以太网线“ ,(遵循以太网协议的网线)

以太网帧格式

以太网数据帧 = 帧头 + 载荷(完整的IP数据报) + 帧尾
帧头包含:目的地址,源地址,类型 。
(目的地址,源地址此处不是IP地址,是MAC地址)

MAC地址:也叫物理地址,和IP地址完全独立的另一套地址体系。每个设备都有唯一的mac地址,出厂设置好的。6字节。
IP地址是用来描述整个传输过程的起点和终点;
MAC则是用来描述两个相邻节点的起点和终点。

帧协议类型字段有三种值:IP、ARP、RARP

  • 类型0800:普通的以太网数据帧,载荷部分就是一个完整的IP数据包。
  • 类型0806:载荷部分是ARP报文。
  • 类型8035:载荷部分是RARP报文。

ARP和RARP都是数据链路层中另外的协议。
ARP协议会在交换机/路由器 里建立出一个表,这个表相当于一个hash表,能够建立出IP和mac之间的映射关系。

MTU是一个数据链路层的数据帧能够承载数据的最大长度。(载荷的长度)
载荷具体多长和使用的物理介质有很大关系,也和数据链路层使用的协议有很大关系.
比如使用以太网协议, MTU 就是1500 (字节) (和物理层有很大关系)
正是MTU,引起了IP这个协议来进行分包组包。IP的分包组包通常不是根据这个IP最大长度64kb分的。因为大概率情况下数据链路层的MTU都比64kb要小

DNS协议

DNS协议(应用层):域名解析协议

网络传输的基本单位:
报 Datagram 广泛一些?
段 segment 传输层
包 packet 网络层
帧 frame 数据链路层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值