互联网协议的诗与远方(一)

我滴妈呀,不看不知道,一看吓一跳,前几天发现公司的缴费机器人是通过tcp协议和外界通信的,发现自己计算机网络是low的一批,得补一下

王老师说,古今之成大事业、大学问者,必经过三种之境界: “昨夜西风凋碧树,独上高楼,望尽天涯路。” 此第一境也。 “ 衣带渐宽终不悔,为伊消得人憔悴。” 此第二境也。 “ 众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。”此第三境也,当然互联网有五种境界 (五层模型)

五层模型

其实有不同的分层模型,但是这里我根据阮一峰老师的分为五层,我们平时接触得多其实是七层模型
在这里插入图片描述看图说话,下面一层是实体层,最上一层是应用层,基本上底层是对用户透明的,越下面的层越接近硬件,越上面的层越接近用户

层与协议

协议就是一种规则,一种大家都遵守的规则,就好像大家都白天工作,晚上睡觉,当然程序员晚上也要工作,肯定是加班,被资本主义无情的压榨,互联网的规则就是互联网协议,互联网的每一层都定义了许多的协议,下面我来一一列举

实体层

在这里插入图片描述
实体层,把电脑连接起来的物理手段,主要规定了网络的一些电气特性,,负责传送0和1的信号

链接层

定义
单纯的0和1,没有意义,好像小时候学123一样,不用数字来做计算,那么数字就没有用,既然实体层定义了0和1,那么自然要有人来使用,链路层就是这样的作用,他在实体层的上方,确定0和1的分组方式

以太网协议
开始的时候,每一家都有着自己的电信号分组方式,但是古人诚我不欺,天下大势合久必分,分久必合,逐渐一种叫以太网的协议,称霸互联网
以太网规定,一组电信号组成一个数据包,叫帧,每一帧分为两个部分,标头(head)和数据(data)(我想到了jvm对象分为对象头,实体部分,还有一个尾巴,螺旋式学习法,每天进步一点点),标头包含数据的一些具体说明,比如发送者,接受者,数据内型,数据则是数据包的具体内容

MAC地址
以太网数据包的标头,包含发送者和接受者的信息,那么发送者和接受者又是通过什么标识的,一般来说,以太网规定,链接网络的所有设备,都必须具有网卡的接口,数据包是从一块网卡,传送到另外一块网卡上面的,网卡的地址就是数据包发送地址和接收地址,即MAC地址,没一块网卡都有一个独一无二的的地址(通常用12个十六进制数表示,前六个是厂商编号,后面俩个是该厂商的流水号)

广播
地址有了,好的开始是成功的一半,既然可以定位到自己,那么怎么让别人发现了,那就又有一种协议了,就是ARP协议,总而言之,以太网数据包必须知道对方的MAC地址,然后才可以发送,其次就算有勒MAC地址,系统怎么才可以发送,以太网采用了一种很原始的方式,它不是把数据包准确的送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方,就是懒人搞重担,我反正不管你我每一个人都发一遍,你要不要接你自己要有逼数,
在这里插入图片描述上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。

ARR协议
如果两台主机都在同一台网络,那么我们可以用ARP协议,得到对方的MAC地址,ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询的主机IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个广播地址,它所在的子网络的每一台组件,都会接受到这个数据包,从中取出IP地址和自身的IP地址比较,如果相同都做出回复,向对方报告自己的MAC地址,不然就丢弃这个包

网络层

以太网采用广播的方式发送数据包,所有人员人手一包其实是有缺点的,效率低还不说,主要是有局限性,但是这种局限性又是合理的,不能打破,所以只能找其他办法来判断,区分那些MAC地址属于同一个子网络,如果他是同一个就用广播方式发送,不然就用路由的方式发送,这直接或者间接的就导致了网络层的诞生**,他的作用是引进一套新的地址,使得我们可以区分不同的计算机是否处于同一个子网络,这套地址就叫网络地址,简称网址**
这时候,计算机就有了俩中地址,一种是MAC地址,一种是网址,两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

IP协议
规定网络地址的协议,就叫IP协议,它定义的地址,就叫ip地址,现在广泛都有IPv6了,但是用得多的应该还是IPv4,IPv4规定网络地址由32个二进制位组成
**加粗样式**在这里插入图片描述习惯我们一般会分为4段表示IP地址,从0.0.0.0一直到255.255.255.255,互联网的每一台计算机,都会分配到一个IP地址,这个地址分为两个部分,前一部分代表网络,后面一部分代表主机,处于同一个子网络的电脑,他的Ip地址的网络部分是一样的 ,但是我们不能单单从ip地址来判断是否处于网络部分,如果要想从IP地址来判断两台计算机是否处于同一个子网络,要用到另外一个参数,即使子网掩码
子网掩码
子网掩码就是表示子网络的一个特征的一个参数,他在形式上面等同于IP地址,也就是32位二进制数,他的网络部分为1,主机部分为0

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

IP数据包
顾名思义,根据IP协议发送的数据,就叫IP数据包,我们可以直接把IP数据包放进以太网数据包的数据部分
IP数据包也分为标头和数据两个部分
在这里插入图片描述
标头包括版本,长度,IP地址等信息,数据部分则是IP数据包的具体内容,它放进以太网数据包之后,以太网数据包就变成了下面这样
在这里插入图片描述

IP数据包的"标头"部分的长度为20到60字节,整个数据包的总长度最大为65,535字节。因此,理论上,一个IP数据包的"数据"部分,最长为65,515字节。前面说过,以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了

传输层

有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。但是怎么让数据精确定位到指定的地址了,那么我们就还需要一个参数**,即port端口,**它其实是每一个使用网卡的程序的编号,每一个数据包都会发到主机的特定端口,所以不同的数据就可以取到自己所需要的数据
端口是一个0到65335之间的整数,正好16个二进制位,0到1023的端口被系统占用,用户只能选择大于1023的端口
传输层的功能就是建立端口到端口之间的通信,相比较之下,网络层的功能是建立在主机到主机之间的通信上面的,确定主机和端口我们就可以实现程序之间的交流(Unix系统就把主机+端口,叫做"套接字"(socket))

UDP
假如要想在数据包中加入端口信息,这就需要最新的协议,最简单的实现叫UDP协议,它的格式几乎就是在数据前面,加上端口号,UDP数据包也是由标头和数据两个部分组成的,标头主要定义了发出端口和接收端口,数据就是具体的内容。

TCP
UDP的优点是简单,容易实现,但是可靠性差,一旦数据包发出,无法知道对方是否接受到,为了解决,提高网络可靠性,但是网络基本上是不可靠的,TCP就诞生了,可以这么认为他是由确认机制的UDP

应用层

主要作用就是规定应用程序的数据格式,如果FTP,网页,电子邮件等这一些协议构成了应用层

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值