网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议

网络分层模型和TCP/IP协议族 ——IP协议

这一篇文章主要记录IP协议相关内容。

IP协议是干什么的?

寻址 + 路由选择

寻址中的址是什么?

首先,它不是mac地址,而是ip地址,那么ip地址又是个什么东西呢?

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

我在这里,举一个简单的例子:

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

因为二进制数写起来和读起来都比较费劲,所以我们一般都换算为十进制。

其对应的子网掩码是这样的

11111111 11111111 11111111 00000000

转换为十进制,也就是:
255 255 255 0

接着我们来依次对应下,这张图可以清楚的表示:

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

这里还提到了一个有意义的简写

如果子网掩码的前24位都是1的话,那么我们可以这样简写:/24

接下来补充一下,常见的ip地址列表。

ip地址列表

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image
网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

这里的127.0.0.1 环回也就是 本机地址。

寻址+路由

ip协议中的路由分配以及寻址是怎么个过程呢?接下来慢慢分析。

同一个内网传递数据

给出一个case:

同一个网段下,computerA想给computerB发送数据。

步骤:

  • 首先,对应的是应用层
  • 然后,把它扔进了TCP协议里,给它加上了端口,比如这里的80
  • 再然后,扔进IP协议,包装上了ip地址
  • 接着,扔进以太网,包装mac地址
    注意:在上一篇以太网中已经提到,如何通过ip地址找到**发送目标的**的mac地址,这里不再赘述
网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image
网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image
网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

这样打包完成后,我们就可以顺畅的把数据发出去啦~

网络间的数据传送

说完了内网之间的数据传送,接下来我们说说非内网间,它是怎么进行数据传送的。

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

computerA(192.168.0.1)准备给不同网段的computerB(172.16.0.1)发送数据

步骤:

  • 先发给网关,具体同上

  • 然后发给路由器A

  • 路由器上都有个路由表

    网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
    image
  • 查看是否直连

  • 同上进行发送

IP分片和重组

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

路径发现MTU
我觉得这个机制还是挺有意思,简单来说,我们在发送数据帧的时候,如果它的大小超过网络MTU,那么它会停止发送,并自动调整路径,再重新发送。这个还是挺智能的。

IP相关协议

网络编程02_ 网络分层模型和TCP/IP协议族 ——IP协议
image

其实常用的也就是dns,其他的做个了解就可以了。