继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

网络分层模型和TCP/IP协议族(下篇)

前端小喵
关注TA
已关注
手记 17
粉丝 12
获赞 33

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

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

IP协议是干什么的?

寻址 + 路由选择

寻址中的址是什么?

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


5c9afa70000111be07200256.jpg


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



5c9afa710001922c07200388.jpg



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

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

11111111 11111111 11111111 00000000

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

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


5c9afa710001e7fb07200352.jpg


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

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

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

ip地址列表


5c9afa720001c51f07200345.jpg



5c9afa7300013dd204960569.jpg


image.png

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

寻址+路由

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

同一个内网传递数据

给出一个case:

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

步骤:

  • 首先,对应的是应用层

  • 然后,把它扔进了TCP协议里,给它加上了端口,比如这里的80

  • 再然后,扔进IP协议,包装上了ip地址

  • 接着,扔进以太网,包装mac地址
    注意:在上一篇以太网中已经提到,如何通过ip地址找到**发送目标的**的mac地址,这里不再赘述


5c9afa730001d43807200349.jpg



5c9afa740001312a07200370.jpg



5c9afa740001751707200407.jpg


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

网络间的数据传送

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


5c9afa750001c83b07040519.jpg


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

步骤:

  • 先发给网关,具体同上

  • 然后发给路由器A

  • 路由器上都有个路由表


5c9afa7500018c4a05560426.jpg


  • 查看是否直连

  • 同上进行发送

IP分片和重组


5c9afa790001c32c07200316.jpg


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

IP相关协议


5acb3c8700013dc501600160.jpg


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


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

UDP

UDP协议主要讲 端口 + 校验和

优点:简单 快

端口

端口用于区别不同的程序或者进程

特殊端口


5acb3c8700013dc501600160.jpg


校验和


5acb3c8700013dc501600160.jpg


TCP

TCP的header比UDP 复杂很多


5c9afa7d00017f1a07200546.jpg


如何连接?tcp的三次握手


5c9afa7e0001485007200362.jpg


进行第一次数据传输


5acb3c8700013dc501600160.jpg


关闭连接


5acb3c8700013dc501600160.jpg


说到这里,大家都知道TCP因为比较复杂繁琐,所以它的速度没有UDP快,为了解决这个问题,然后引入了一个滑动窗口的策略机制

滑动窗口

简单来说,滑动窗口就是增加并行,让数据发送量*3,可以同时发送3份数据

拥塞控制

慢启动


5c9afa8100010f6907200454.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP