互联网协议
1、 概述:
互联网协议是两个通信对象在进行通信时所遵从的一组约定和规则。
2、五层模型:
互联网的实现主要分为五层(应用层,传输层,网络层,链路层,实体层),也可分为七层与四层,为了便于理解则将其简化成五层。每一层都有定义了各自的协议,且上层必须依赖于下层,故以下先从实体层来了解互联网协议:
1)实体层:
实体层也称物理层,顾名思义,电脑间通信依赖于物理上的性质,如通过电缆将两台电脑连接起来,并通过规定网络的一些电气特性,传送0和1的电信号来传输信息。
2)链路层:
由于实体层是通过电信号来传输信息,则需要定义电信号组合后的意义,否则单纯的0和1电信号是无法表达所要发送的信息。此时链路层的出现就是为了解决其问题,确定0和1电信号的分组方式和及其表达的意义。
一、以太网:
以太网出现:规定了包括物理层的连线、电子信号和介质访问层协议的内容。
规定:一组电信号构成一个数据包,叫做“帧”,每一帧分为两个部分,标头(Head)和数据(Data)。
标头:包含数据包的一些说明项,比如发送者、接受者、以及数据类型等等。(通过MAC地址标识发送者和接受者的信息,如下)
数据:数据包的具体内容。
二、MAC地址:
MAC地址也称物理地址、硬件地址,由网络设备制造商生产是烧录在网卡的EPROM(一种闪存芯片,通常可以通过程序擦写)。且网络中的每一个网络设备都有一个唯一的网络表示,也就是MAC地址。(知道了对方的MAC地址,如何才能把数据包发送到对方手里?通过广播)
三:广播:
发送数据时,将向网络中所有的设备都发送数据包,然后每台设备根据数据标头中包含的接受方的MAC地址与自身MAC相比,相同则接受,不相同则丢弃。
3)网络层:
按照以上所述,在互联网中通信,需要将信息发送给网络中的所有人,在互联网这么大体量下,我们的网络就早已瘫痪,广播只适用于属于同一个子网络中的设备通信。互联网则是一个由非常多的子网络组成的巨型网络,此时需要让不同子网络间能够通信就是网络层的作用。最常见的网络层通信协议就是IP地址。
一、ip地址:
每台设备都有自己独有的MAC地址,但通过MAC地址无法判断该设备是属于哪个子网络的,所以引入IP地址。
目前最常使用的是IPv4,是IP协议的第四版。IPv4规定网址是由32位二进制数组成,通常以四段10进制数表示,从0.0.0.0到255.255.255.255,例如:192.168.1.1就是一个IPv4地址。
二、子网掩码:
有了发送方和接受方的IP地址,则如何判断他们是否属于同一个子网络呢?此时就出现的子网掩码。
如何判断:子网掩码与IP地址及其相似,也是由32位二进制数所组成,但它的网络部分全为1,主机部分全为0。例如:IP地址为192.168.1.1,子网掩码为“255.255.255.0”,就表示此IP的前24位为网络部分,后8位为主机部分。则如果两台设备的子网掩码相同,则表示同属于一个子网络。
三、IP数据包:
标头:主要包括版本、长度、IP地址等信息。
数据:IP数据包的具体内容。
将IP数据报放入以太网数据内,如下图:
四、ARP协议:
ARP协议作用可以认为是通过ip地址获取属于同一子网络中网络设备的MAC地址。它是通过“广播”的形式在同一子网络下发送数据包,子网络中的设备会获取数据包标头的IP地址与自身IP相比,相同返回自己的MAC地址,不同则丢弃。
五、不同子网络的数据传输:
首先,想要把数据发送到目标设备中,必须知道IP地址和MAC地址。
由于双方属于不同的子网络,则不能再子网络中通过ARP协议获取对方的MAC地址,此时需要通过网关,网关会根据路由协议找到对放的网关,从而在通过ARP协议获取对方的MAC地址。即完成通信。
4)传输层:
建立端口到端口间的通信。为什么需要端到端的定义呢,例如你同时登着QQ与微信,别人通过QQ向你发送消息,为什么不会再微信显示呢,这就是因为他们具有不同的端口,在发送和接收数据时,通过端口号来判断数据包是属于哪个应用程序。
一、TCP:
端口间通信的最常用协议,是面向连接的,通过“三次握手”建立连接,它可以保证数据不丢失,安全性高。
二、UDP:
端口间通信的最常用协议,是面向无连接的,直接向指定的设备发送数据包,效率高,安全性低。
三、传输层数据包:
标头:发送端口和接收端口。
数据:具体内容。
5)应用层:
通过协议对传输层发送来的各类数据进行解析,且数据应进行规范,否则应该程序无法解析数据。
3、HTTP协议:
既然有了UDP和TCP协议,为什么还需要HTTP协议呢?
由于UDP协议具有不安全性和不可靠性,以及TCP协议在B/S架构的网站上同时有数十万的用户同时访问是很简单的,数十万的用户同时与服务器保持连接状态,服务器该如何满足承载呢?
这时就出现了HTTP协议,是基于TCP的可靠性连接。用户在请求服务器之后,服务器立即关闭连接,释放资源。保证了资源的最大限度利用以及汲取了TCP的可靠性与安全性。
1)http协议常用的Get与Post请求:
Get:提交的数据会放在URL的之后,以?分割URL和传输数据,参数之间以&连接。由于数据是存放在URL后,且浏览器对URL的长度有限制,所以对Get请求提交的数据长度有限制。也是因为提交的数据会存在URL之后,故安全性不高,例如登录账号时,URL后会带上你的账号密码。
Post:提交的数据保存在HTTP包的Body中,不可见,安全性高,且没有数据长度的限制。