网络分层模型和TCP/IP协议族 ——IP协议
这一篇文章主要记录IP协议相关内容。
IP协议是干什么的?
寻址 + 路由选择
寻址中的址是什么?
首先,它不是mac地址,而是ip地址,那么ip地址又是个什么东西呢?
我在这里,举一个简单的例子:
因为二进制数写起来和读起来都比较费劲,所以我们一般都换算为十进制。
其对应的子网掩码是这样的
11111111 11111111 11111111 00000000
转换为十进制,也就是:255 255 255 0
接着我们来依次对应下,这张图可以清楚的表示:
这里还提到了一个有意义的简写
如果子网掩码的前24位都是1的话,那么我们可以这样简写:/24
接下来补充一下,常见的ip地址列表。
ip地址列表
image.png
这里的127.0.0.1 环回也就是 本机地址。
寻址+路由
ip协议中的路由分配以及寻址是怎么个过程呢?接下来慢慢分析。
同一个内网传递数据
给出一个case:
同一个网段下,computerA想给computerB发送数据。
步骤:
首先,对应的是应用层
然后,把它扔进了TCP协议里,给它加上了端口,比如这里的80
再然后,扔进IP协议,包装上了ip地址
接着,扔进以太网,包装mac地址
注意:在上一篇以太网中已经提到,如何通过ip地址找到**发送目标的**的mac地址,这里不再赘述
这样打包完成后,我们就可以顺畅的把数据发出去啦~
网络间的数据传送
说完了内网之间的数据传送,接下来我们说说非内网间,它是怎么进行数据传送的。
computerA(192.168.0.1)准备给不同网段的computerB(172.16.0.1)发送数据
步骤:
先发给网关,具体同上
然后发给路由器A
路由器上都有个路由表
查看是否直连
同上进行发送
IP分片和重组
路径发现MTU
我觉得这个机制还是挺有意思,简单来说,我们在发送数据帧的时候,如果它的大小超过网络MTU,那么它会停止发送,并自动调整路径,再重新发送。这个还是挺智能的。
IP相关协议
其实常用的也就是dns,其他的做个了解就可以了。
网络分层模型和TCP/IP协议族 —— TCP/UDP
UDP
UDP协议主要讲 端口 + 校验和
优点:简单 快
端口
端口用于区别不同的程序或者进程
特殊端口
校验和
TCP
TCP的header比UDP 复杂很多
如何连接?tcp的三次握手
进行第一次数据传输
关闭连接
说到这里,大家都知道TCP因为比较复杂繁琐,所以它的速度没有UDP快,为了解决这个问题,然后引入了一个滑动窗口的策略机制
滑动窗口
简单来说,滑动窗口就是增加并行,让数据发送量*3,可以同时发送3份数据
拥塞控制
慢启动