网络协议分层

->应用层(Application Layer)

->传输层(Transport Layer)

->网络层(Network Layer)

->链接层(Link Layer)

->物理层(Physical Layer)

每一个层都是完成了某一种功能,为了功能实现,所以规定了一些规则,这些规则就被称为“协议”(protocol)

1.1 物理层

电子设备要组网,第一件事就是要让电子设备能通过电信号连接起来。这种连接可以通过实体的电线,网线,光纤进行也可以通过无线信号来实现。物理层主要是一些把电子设备连接起来的手段,它规定了连接设备的电气特性,如网线的数量,无线信号的频段之类的数据。

1.2 链接层

完成了信号传输,还需要对0和1的定义进行规定(类似低电平为0,高电平为1),同时在传输0,1之后还需要对01进行分组如8bit为一个字节多少字节为一个包之类。这就是链接层的功能。

Ethenet和Wifi基本就是属于这个层次。所以wifi协议其实就是解决的一个链路和物理层的问题,在更往上的网络层和传输层一般就是TCP/IP协议。

1.3网络层

由于互联网是一个巨大的网络,如此多的设备,想同时进行互相连接是不可能的(想象用网线把1亿台PC连接在一起)。所以人们构思出一种结构,让少部分设备组成局域网,形成一个子网络,然后把各个子网络相连形成一个稍大的网络,这样不断的组网,从而形成一个如今能覆盖全球的巨大网络。

这样就产生了一个问题,当你需要在如此多的层级的网络中寻找你需要通信的设备时,要如何进行呢?在一个小网络中,以太网协议是通过MAC地址来寻址的(类似I2C的地址),但在如此巨大的网络中不可能每次寻找设备还需要给每个设备发送信息来匹配MAC地址,此时就产生“网址”的概念。

此时,每一个网络设备就有了2种地址,一个是MAC地址,一个网络地址。

1.3.1 IP协议

定义网址的协议,叫做IP协议。所定义的地址也称为IP地址。目前广泛采用的是IPv4协议,这个协议规定,网址由32个bit组成。

习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

互联网上的每个设备,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表设备。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数"子网掩码"(subnet mask)

"子网掩码",就是表示子网络特征的一个参数。它在形式上类似IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址192.168.1.1和192.168.1.5的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是192.168.1.0,因此它们在同一个子网络。

现在总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

 

1.4 传输层

有了MAC地址和IP地址,我们已经可以在互联网上任意两个设备上建立通信了。

接下来的问题是,如果一个设备有多个任务需要进行网络通信的时候,我们如何分配这些数据,让多个任务能够只使用自己对应的数据呢?

传输层的作用就是建立一条规范,使得两台设备上多个任务之间的相互通信能够正常进行,而不需要区分数据到底是来自于哪个程序而能直接接收。

这个实现方式就是,我们添加了一个参数,这个参数被称为“端口”(port)。每个任务拥有自己port,只接受对应port的数据,以此来区分数据。

1.4.1 UDP协议

包含端口号最简单的实现就是UDP协议,他的格式几乎就只是在数据前加上发送端口和接收端口而已。

1.4.2 TCP协议

UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

 

1.5 应用层

"应用层"的作用,就是规定应用程序的数据格式。

举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

为什么说一个WIFI要说以上这么多。。。 好吧,其实大部分没什么用,最重要的要理解一点,WIFI其实只是把赋予设备MAC地址,连接上网络,并分配好IP,或者是作为AP给别的设备分配IP等等,而要真正的传输数据,使用的仍然是TCP 或者 UDP协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值