网络通信协议概念及TCP/IP的分层结构

电子说

1.3w人已加入

描述

网 络 通 信 协 议 概 述

网络通信协议本质上是由一组协议组成的,而协议的本质则是一组规则和规范的组合体。举个例子:两个物流业务点在地域角度看是两个独立的整体,那么要何如对接才能把货物从一点输出到另一点呢?首先他们需要商定一个暗号,这个暗号的作用是可以证明货物是输出地发出来的,当前的站点可以进行接收,这个暗号可以任何形式:工牌、工服等,接下来还需要考虑用什么交通工具,可以是电车,也可以无人机等。

其中工服、工牌、电动车属于一个一个规则和规范,而他们结合起来就形成了配送的协议,而站点按照这个协议最终就可以完成货物的运输和配送。

OSI七层模型、TCP/IP四层模型

随着技术的发展,计算机的应用越来越广泛,计算机之间的通信开始了百花齐放的状态,每个具有独立计算服务体系的信息技术公司都会建立自己的计算机通信规则,而这种情况会导致异构计算机之间无法通信,极大的阻碍了网络通信的发展,至此为了解决这个问题,国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,OSI模型把网络通信的工作分为7层,分别是 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

这七层模型是设计层面的概念,每一层都有固定要完成的职责和功能,分层的好处在于清晰和功能独立性,但分层过多会使层次变的更加复杂,虽然不需要实现本层的功能,但是也需要构造本层的上下文,空耗系统资源,所以在落地实施网络通信模型的时候将这七层模型简化合并为四层模型分别是 应用层、传输层、网络层、网络接口层 (各层之间的模型、协议统称为:TCP/IP协议簇)。

TCP

TCP/IP 分 层 解 析

一、网络接口层:

TCP/IP的网络接口层承接OSI七层模型中物理层和数据链路层的功能,对标物理层的部分完成的是将高低电压转换成传输信号(电信号、无线信号等)传递给目标方;对标数据链路层的部分则是规定了输出信号组的规则及格式,统一标准后则为我们所知的以太网协议(ethernet),协议规定网络接口层每一个信号数据包称为一个数据帧,数据分为head和data两部分,其中head部分包括:

  • 发送者地址---6字节(mac地址)
  • 目标地址---6字节(mac地址)
  • 数据类型---6字节

mac地址释义:以太网协议规定接入的网络设备必须具备网卡,而网卡的标识就是mac地址,地址为6个字节,前三个字节为标准化组织给厂商分配的编码,后三个字节为厂商生产的序列号,由此保证地址唯一。

数据部分为上层需要向外发送的数据,如下:

TCP

具有了上述规则,两台计算机就可以进行通讯了,而通讯的方式则为广播,类比为通信的时候先问所有人”故宫”是谁家的地址,局域网内地址是”故宫”的主机则会回复自己的mac地址,这个模式在小型的局域网主机数相对较少的情况下可以玩转,但整个世界数以亿计的主机,如果一台主机需要知道目标的地址就需要给世界上所有的主机都发一个广播消息,那就成为灾难了,故需要下一层设计解决这个问题。

二、网络层:

由上层的遗留问题可知,必须找到一种方法,区分相同局域网内的直播域,不是同域内的请求需要进行转发广播,而网络层就是解决这种问题而存在,它定义了一套地址称之为ip地址,有读者可能会有疑问:为什么不使用mac地址在上一层完成这个需求呢?这是因为mac地址只跟厂商有关,不能标识局域网内网规则,就类比笔者虽然身份证是黑龙江人但是人却在北京飘,身份证类比mac地址,身份证是无法证明本人到底在哪也就无法做下一步骤了,这个网络层的协议目前通常使用的是IPV4,协议规定地址为32位表示,通常大家看到ip地址都是以十进制展示,每8位以 . 号分割,例如:192.168.1.1,IP数据包同样分为head和data两部分:

TCP

接下来我们通过抓包的形式来看一下ip头的主要字段:

TCP

至此网络层帮我们定位目标网路,网络接口层帮助我们锁定目标主机,我们之间距离天涯海角的两台主机已经可以完成通讯,但是每一台机器上有好多服务,比如邮件服务、微信、咚咚,如何定位是哪个应用的数据包呢,这需要下层设计给予解决。

三、传输层:

由上层协议遗留问题可知,我们需要定位是哪个服务程序的数据包,不然会造成数据错乱,而传输层正是解决此类问题,传输层依靠端口来唯一定位一个服务,而发送端端口+接收端端口组成一组链接,传输层的作用总结为提供端口到端口的通信,传输层通常是指tcp(udp)协议,TCP协议提供可靠性传输能力、分包传输能力。tcp层数据包也分为head和data部分:

TCP

接下来让我们通过抓包的方式来看一下tcp头信息的主要字段:

TCP

至此两台主机已经有可以完成指定服务信息传输的能力,但是不同应用程序所要应用的场景不同,需要数据的数据结构也不尽相同,截止目前的能力无法为丰富多彩的应用程序提供规范的数据信息,此问题需要由下层设计给予解决。

四、应用层:

由上层协议遗留的问题可知,我们需要为丰富多彩的应用程序对应不同场景设计不同的数据结构。而应用层正是为了解决此问题而存在,所以需要应用层定义丰富多彩的协议来对应适配复杂场景所需的数据结构,故应用层定义为规范了应用层的数据结构,目前大家常用的应用层协议有http、https、ssl、ftp等。

TCP

接下来让我们通过抓包的形式,来看看应用层(http)协议数据信息:

TCP

至此两台主机对等应用程序信息传输的条件都已具备,可以愉快的开始通信了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分