网络:网络层

网络层:IP

位于数据链路层之上的是网络层,它关注的是如何将包从源主机发送到目标主机。这一层执行了很多任务,比如:

  • 将数据分解成足够小的的片段以便数据链路层进行传输(有必要的话)
  • 在因特网上传输数据
  • 为传输层提供服务

在TCP/IP协议族中,网络层的主要协议是IP。IP分为两种:IPv4和IPv6。这两个版本之间最显著的差别在于IPv4使用32位地址来标识子网和主机,而IPv6使用了128为的地址,能为主机提供更大的地址范围。IPv4和IPv6都支持高层的UDP和TCP传输协议。

下图给出了一个裸socket(SOCK_RAW),它允许应用程序直接与IP层进行通信。实际上这是很少见的,大部分应用程序会使用基于其中一种传输协议(TCP/UDP)之上的socket而不是裸socket。有关裸socket的最常见的例子是senip程序,它是一个命令行工具,允许使用任意内容来构建和传输IP数据报等
在这里插入图片描述

IP传输数据报

IP以数据报(包)的形式来传输数据。在两个主机之间发送的每一个数据报都是在网络上独立传输的,它们经过的路径可能会不同。一个IP数据报包括一个头,其大小范围为20字节到60字节。这个头中包含了目标主机的地址,这样就可以在网络上讲这个数据报路由到目标地址了。此外,它还包括了包的源地址,这样接收主机就知道数据报的源头。

一个IP实现可能会给它所支持的数据报的大小设置一个上限。在 IPv4 中,这个限制值是 576 字节;在 IPv6 中,这个限制值是 1500 字节。

IP是无连接和不可靠的

IP是一种无连接的协议,因为它并没有在相互链接的两个主机之间提供一个虚拟电路。

IP也是一种不可靠的协议:它尽最大可能将数据报从发送者传输给接受者,但并不保证包到达的顺序会与它们被传输的顺序一致,也不保证包是否重复,甚至不保证包是否会到达接受者。IP也没有提供错误恢复(头信息错误的包会被静默的丢弃)。可靠性是通过使用一个可靠的传输层协议或者应用程序本身来保证的。

IPv4为IP头提供了一个校验和,这样就能检测出头中的错误,但并没有为包中所传输的数据提供任何错误检测机制。IPv6没有为IP头提供校验机制,它依赖于高层协议来完成错误校验和可靠性。(UDP 校验和在 IPv4 是可选的,但一般来讲都是启用的;UDP 校验和在 IPv6 是强制的。TCP 校验和在 IPv4 和 IPv6 中都是强制的。

IP数据报的重复是可能会发生的,因为一些数据链路层采用了一些技术来确保可靠性以及IP数据报可能会以隧道的形式穿越一些采用了重传机制的非TCP/IP网络

IP 可能会对数据报进行分段

IPv4 数据报的最大大小为 65 535 字节。在默认情况下,IPv6 允许一个数据报的最大大小为 65 575 字节(40 字节用于存放头信息,65 535 字节用于存放数据),并且为更大的数据报(所谓的 jumbograms)提供了一个选项。

而大多数数据链路层会为数据帧的大小设定一个上限(MTU)。如在常见的以太网架构中这个上限值是1500字节节(比一个 IP 数据报的最大大小要小得多)。IP还定义了路径MTU的概念,它是源主机到目的主机之间路由上所有链路层的最小MTU(在实践中,以太网 MTU 通常是路径中最小的 MTU)

当一个IP数据报的大小大于MTU时,IP会将数据报分解成一个个大小合适在网络上传输的单元,这份单元在达到最终目的地之后就被重组成原始的数据报(每个IP分段本身就是包含了一个偏移量字段的IP数据报,该字段给出了一个该分段在原始数据报中的位置)

IP 分段的发生对于高层协议层是透明的,并且一般来讲也并不希望发生这种事情。这里的问题在于由于IP并不进行重传并且只有在所有分段都达到目的地之后才能对数据报进行组装,因此如果其中一些分段丢失或者包含传输错误的话就会导致整个数据报不可用。在一些情况下,这会导致极高的数据丢失率(适用于不进行重传的高层协议,比如UDP)或者降低传输速率(适用于进行重传的高层协议,比如TCP)。现代TCP实现采用了一些算法(路由MTU发现)来确定主机之间的路径MTU,并根据该值对传递给IP的数据进行分解,这样IP就不会碰到需要传输超过MTU的数据报的情况了(UDP没有提供这种机制)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值