网络理论,程序通信过程

前言

作为软件工程师,如果要实现机器间通信,对我们来只是获取到socket就可以了,但是我们不能只看表面,应该尽量多问下自己,为什么是这样?这是我的领导炬哥教我,因为工作了3年,如果还停留在根据产品原型进行CRUD。那么很多人在3-5年就没有太多的突破,而工作了3-5年,很多人都会遇到技术瓶颈,至于怎么突破,只能靠自己。平时多问自己几个为什么,靠自己去查找资料去学习。做为一个搞技术,不应该局限于语言,java,python这些对你来说只是实现的工具,也不应该局限于岗位,什么前端,后端,大数据,运维等,对于搞技术的人来说都应该要会。当然,我们是要有比较擅长的一项,这样以后我们才有强大的基础,让我们在技术这条道路上越走越远。
回到正题,要学习网络,最好的方式是去系统学习思科的CCNA到CCIE的课程体系,但是对我们软件开发来说,我觉得把CCNA学完基本就可以应付大部分网络问题了,听我以前考到CCIE的同学讲,平时工作,他们CCNA的水平基本就够用了。那么更何况我们呢!

一、OSI七层模型

下面这张图是OSI七层模型
在这里插入图片描述

1.下面我们讲下为什么会出现OSI七层模型?

ISO组织为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。
这里的OSI七层模型只是个概念,相当于咱们JAVA中的接口,他只是个定义。

2.为什么要分层

理由很简单,这跟咱们java后台为什么也要分controller service dao分层的道理一样。好处就是解耦,每层把自己的事情做好,提供接口给其他层调用就好,出现问题,我们好定位问题。

3.每一层的概念含义

<1> 应用层
OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。
<2> 表示层
表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。

<3> 会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。

<4> 传输层
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。

<5> 网络层
本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。
网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。

<6> 数据链路层
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。

<7> 物理层
实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。

二、TCP/IP五层模型

下面是OSI七层模型和TCP/IP五层模型对照图
在这里插入图片描述

这里会有几个问题

1.为什么TCP/IP不按照OSI七层进行划分

有一句话叫做理想很丰满,现实很骨感。TCP/IP五层模型经过市场检验得出最适合市场使用的。也就是说,虽然OSI七层模型虽然很完美,但是对于市场使用来说,成本较高。

2.TCP/IP五层模型和OSI模型减少了哪些层

由上图可知,TCP/IP模型将应用层,表示层,会话层归纳为应用层。

三、举例两个机器间通信数据包传输的过程

假设我们自己研发了一款类似QQ的软件,假设两个安装了QQ软件的机器A,B在同个局域网内。
比如用户甲在A机器的QQ上输入“hello”给机器B的乙用户,并且按下回车
这个时候按照OSI七层模型来分析
我们甲看到的QQ界面就是应用层
按下回车后,表示层会把"hello"进行编码,并且加密
然后表示层把数据交给会话层,会话层会记录下,当前需要进行会话的信息
然后会话层会把信息交给传输层,这里我们举例TCP可靠传输,这个时候传输层会与机器B进行TCP三次握手。
TCP三次握手建立连接后,后面传输层将数据丢给网络层**,网络层**经过路由找到机器B的下一跳地址。

网络层将数据交给了数据链路层,然后链路层通过ARP协议获取到机器B的MAC地址,然后将数据传输到机器B上。

机器B收到信息后,在QQ界面给用户乙显示出来,这个时候,如果乙也要回消息,则这个过程和上面一致,只是TCP如果没有进行四次分手,则机器B就不需要在传输层再进行一次三次握手的过程。

总结

这些都是简单的理论基础。如果需要详细学习,需要系统学习下CCNA的知识

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值