vlambda博客
学习文章列表

从网络到分布式(一)——TCP/IP协议簇与OSI七层网络模型

本篇文章仅代表个人学习时的笔记+理解阐述,如有表述不正确的地方欢迎指正,部分资料或图片来源于网络,会在文末申明,如有侵权可联系删除。


一、TCP/IP的定义是什么?为什么要学它?

        TCP/IP是一个包含众多协议的簇(一群),这个并不单指TCP协议或HTTP协议。一个完整的ISO七层网络模型内每一层都有很多自身对应的协议,他们互相搭配干活就组成了整个TCP/IP协议簇。


        通过学习TCP/IP协议簇与OSI网络模型可以深入理解与推导LVS网络模型与Keepalived的实现,由点到面逐渐完善与构建知识体系。


二、ISO 七层网络模型

上图是OSI七层网络模型的分层图,下面简单介绍一下这张图的组成:

  • 最左侧一列从上到下(应用层-物理层)依次为7-1层。顶三层(7,6,5)为应用程序控制,后四层(4,3,2,1)为内核调度控制。

  • 最右侧为每层列举的一部分协议例子(无需硬记,看过即可)


扩展部分:

从网络到分布式(一)——TCP/IP协议簇与OSI七层网络模型

三、我们一般写程序时的socket建立连接是什么概念?

从网络到分布式(一)——TCP/IP协议簇与OSI七层网络模型

        socket [ 套接字 ],简单概括:服务端与客户端之间IP负责端到端之间的连接,port负责定位端内具体接收处理的是哪一个进程。


        socket具有唯一性,只要四元组内任何一个元素不一致则代表一个新的连接。

那么在发起一个TCP连接建立请求时后四层控制层具体做了些什么事情呢?我们继续往下看:

从网络到分布式(一)——TCP/IP协议簇与OSI七层网络模型

  • 传输控制层:是整个网络体系结构中的关键层次之一,负责两个主机之间的通信控制。

  • 网络层:负责端到端(源IP 到 目标IP)之间的通信,通过route -n可以查看系统路由表查看当前主机内已记录的路由信息(IP,网关,掩码等)。

四、什么是下一跳?

举个栗子:小明到小美家在不同的城市,他们并不在同一局域网内。小明要访问小美的电脑请求路径为:小明发起请求->小明电脑的出口网卡->路由器->ISP->小美的路由器->小美电脑网卡->小美收到。


提问:那为什么不能直接将请求发到小美电脑网卡内呢?


答:算力瓶颈,上述例子只是个简单的说明,实际网络情况会更加复杂,城与城国家与国家之间的骨干网络交换。一个请求下来组成的拓扑链路将会非常的长(1->2->3...->n??),不同的请求需要记录不同的完整路径,这中间寻址与存储都会成为问题。



那么看明白后用这个栗子说明在这个请求中下层模型具体做了些什么,首先假设数据包是长这样的:

从网络到分布式(一)——TCP/IP协议簇与OSI七层网络模型

看到这里是不是感觉想数据结构里的链表,通过网络层与链路层定位一下跳,每次都修改链表中指向下一节点的指针!当到达目标端(IP)时候如果匹配上了,则进入port开始处理业务流程


从传输控制层到链路层每一层都有一张自己的表(这个很重要),这里只给出关系就不展开说明了,像arp广播之类的可以搜一下多看看。



层级名称
查询命令 作用
传输控制层
netstat [-n a t p]
查询当前所有连接的状态
网络层
route 记录了当前网络环境内的IP路由
链路层
arp
记录了IP与MAC地址的映射关系

最后给一个动图方便理解:


TCP/IP协议 (图解+秒懂+史上最全)

https://www.cnblogs.com/crazymakercircle/p/14499211.html