网络基础之网络协议

一台硬设有了操作系统,然后装上软件你就可以正常使用了,然而你也只能自己使用

像这样,每个人都拥有一台自己的机器,然而彼此孤立

如何能大家一起玩耍

然而internet为何物?

其实两台计算机之间通信与两个人打电话之间通信的原理是一样的(中国有很多地区,不同的地区有不同的方言,为了全中国人都可以听懂,大家统一讲普通话)

普通话属于中国国内人与人之间通信的标准,那如果是两个国家的人交流呢?

问题是,你不可能要求一个人/计算机掌握全世界的语言/标准,于是有了世界统一的通信标准:英语

结论:英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是

一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite).

互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

每层运行常见物理设备

我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议

就理解了整个互联网通信的原理。

首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解

每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件

在了解OSI 模型之前我们先来了解下现实生活中的通讯

现实生活中我们每个人都是一个单一的个体,早期的我们为了满足交流都是咿咿呀呀的交流,但是不同的人想法表现出不同的动作,到后期我们总结提炼了地区性的通用性语言--方言,
但是在国家层面来讲区域大,各个地区的语言又不一样,为了全国性的交流于是就要求大家按照一定的语法发音标准去交流--普通话。

那么换句话说为什么会有网络协议呢?借用生活的例子来说:为了解决两台计算机之间交流的问题我们按照一定的标准去通讯来实现双方
能够理解,那么我们就称这种标准为网络协议,就是各个使用者坐下来提前协商好,来解决各个国家的通讯互通问题。


OSI七层协议:
    互联网协议按照功能不同分为OSI七层或者TCP/IP五层或四层
    
    我们暂且按照五层来理解:
        每一层都必须包含源地址/目标地址
        
        应用层        
                应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式 
                应用层功能:规定应用程序的数据格式。
                例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
                
                
        传输层        端口()用于寻找具体的程序的位置
                传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,
                那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
                端口范围:0-65535,0-1023为系统占用端口
                端口分类:可靠(TCP)/ 不可靠(UDP)
                可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
                格式:    [head]|[data]
                    [以太网头|ip|tcp_port]|[数据]
                不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
                格式:    [head]|[data]
                    [以太网头|ip|udp_port]|[数据]
                在这里会发生:三次握手(无数据)/四次断开(有数据)

        
        
        网络层        IP协议(IP+Netmask)判断局域网位置
                有了数据链路层的ethernet(以太网)的标准,那么局域网通讯依靠ARP广播解析mac地址来实现是没什么问题了,世界范围的互联网是由
                一个个彼此隔离的小的局域网组成的,那么如果所有的通信都采用以太网的广播方式,那么一台机器发送的包全世界都会收到,这就不仅仅是
                效率低的问题了,这会是一种灾难
                必须找到一种方式能有效区分那些计算机属于一个广播域或局域网,哪些不是,如果是就采用广播的方式发送,如果不是,就采用路由方式,如果是在一个局域网就广播
                
                IP协议:通过IP和子网掩码来判断局域网的网关位置
                    网络部分:标识子网(子网掩码)
                    主机部分:标识主机(IP地址)
                格式:    [head]|[data]
                    [以太网头|ip]|[数据]
                    
                
        
        数据链路层    ARP协议()寻找局域网的MAC具体主机
                早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet(Windows网卡都是以太网,而Linux是eth*的缘由)
                收到物理层的0和1高地电压信号没有任何意义,必须规定电信号多少位一组,每组什么意思;数据链路层:定义了电信号的分组方式
                格式:     [head]|[data]            我们成为此层的数据包为“帧”,每一帧包含几个电信号
                    [以太网头]|[数据]
                head包含:(固定18个字节)
                    发送者/源地址,6个字节
                    接收者/目标地址,6个字节
                    数据类型,6个字节
                数据链路层里的通讯是基于MAC地址的,(局域网)主机间的通讯需要借助ARP协议来实现Mac地址的解析,而ARP的通讯是基于广播形式的,于是有了ARP欺骗(伪造网关)
        物理层        双绞线,物理连接设备,物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0
        
        
        封装:发起发送数据的过程就是封装数据包的过程
        解包:接收数据的过程就是解包的过程
        
        详细过程:A发送给B数据包,首先从A端应用层封装data数据部分-->传输层(封装来源和目标tcp端口)-->网络层(封装来源子网IP及掩码和目标子网IP和掩码)--> 数据链路层(封装源MAC和目标MAC)--> 物理层(转换成0/1高低电压传输)
            B收到A的数据包,首先物理层(将0/1传输给上层分组)--> 数据链路层(解包出源MAC地址和目标MAC地址)--> 网络层(解析出源IP和目标IP)-->传输层(解析出协议类型及Port)--> 应用层(解出数据包中的数据)
OSI协议扫盲
原文地址:https://www.cnblogs.com/swiki/p/9550277.html