互联网协议入门(1)

经过学习:阮一峰(很全很详细)html

互联网的核心是“一系列协议”,这些协议对电脑如何链接和组网,作出了详细的规定。只要把这些协议搞懂了,就很好理解互联网的原理了。服务器

1、概述网络

1.1五层模型socket

用户接触的是最上面一层学习

实体层-->链路层-->网络层-->传输层-->应用层ui

越往下越靠近硬件,越往上越靠近用户spa

1.2层与协议设计

每一层都须要完成相应的功能,可是必须遵照某种规则,这个规则就称之为“协议(protocol)”3d

每一层都有许多协议,这些协议的总称“互联网协议”(Internet Protocol Suite)htm

接下来就介绍每一层的功能,主要就是介绍每一层的主要协议

2、实体层

首先将电脑链接起来,采用电缆、光缆、无线电波、双绞线

用物理手段将电脑链接起来,规定了网络的一些电气特性,做用是传送0或1的电信号

3、链路层

3.1单纯的0或1的电信号没有意义,必须规定解读方式:多少个电信号一组?每一个信号位表明什么意义?

这就是链路层的功能,在“实体层”上规定了0和1分组方式

3.2“以太网协议”

开始每一个公司都有本身的分组方式,逐渐一个“以太网”协议占据了主导地位。

“以太网协议”规定一组电信号组成一个数据包称之为“帧(Frame)”.每个帧有两部分组成:头(Head)和数据(Data)

“标头”包含了一些信息 (发送者、接受者、数据类型等)

“数据”就是发送的内容

“标头”的长度默认是18字节。“数据”最短为46字节,最长1500字节,所以帧的最短为64字节,最长1518。若是发送的数据过长,就须要拆分红好几帧来发送

3.3MAC地址

上边提到“标头”中包含着发送者和接受者的信息,那么如何标识发送者和接受者的呢

“以太网协议”规定接入网络的全部设备必须就有“网卡”接口。数据包是从一个网卡接口发送至另外一个网卡接口。网卡的地址就是发送和接收的地址,称之为MAC地址

 

 每个网卡都有世界上独一无二的MAC地址,长度是48个二进制,一般用12个十六进制表示

前六个是厂商编号,后六位是该厂商网卡的流水号

3.4广播

定义只是第一步,一个网卡是如何得知另外一个网卡的MAC地址的呢

ARP协议能够解决这个问题,具体的后边在学习

可是知道了另外一个网卡的MAC地址,如何准确的吧数据包送达呢

这里,“以太网”采用了的最原始的方法,向本网络下的全部计算机发送数据包,而后在判断是不是接收方

在上图中,计算机1要向计算机2发送数据,须要将数据包发送到计算机2/3/4/5,而后2/3/4/4在读取数据包中MAC地址和自身比较,若是相同,做进一步的处理;若是不一样,就丢弃这个数据包;这就叫作“广播”

有了数据包的定义、网卡的MAC地址和广播的发送方式,“链路层”就能够在多个计算机之间发送数据包了

 四:网络层

4.1网络层的由来

以太网协议,依靠MAC地址来传输数据。理论上,单单靠MAC地址,上海的网卡是能找获得洛杉矶的网卡(MAC地址惟一性)。

可是这样也有巨大的缺点,以太网依靠广播的方式发送数据包。全部成员人手一份包,效率过低,并且局限于一个子网络,也就是说两台计算机不在一个子网络,广播是过不去的,这样的设计也是合理的,想一想一发送数据,互联网的人人手一包,会引起灾难的。

互联网是由无数个子网络组成的巨型网络,上海的计算机和洛杉矶的计算机不可能在同一个子网络。

所以,能不能区分是否在同一个子网络,若是同一个子网络,直接广播;若是不在同一个子网络,就得“路由”。Mac只与厂商有关,与网络无关。这就致使了网络层的出现,引进了新的地址,称之为网络地址

4.2IP协议

规定网络地址的协议叫作IP协议。网络地址叫作IP地址

如今普遍应用的是IP协议第四版,简称IPv4。

 这个版本规定32个二进制组成,从0-255.255.255.255

每一台主机都会有一个IP地址,IP地址惟一,不然会发生IP地址冲突。,IP地址由两部分组成,前一部分表明网络,后一部分表明主机。

好比172.16.254.1,假设前24位表明网络,后8位则表明主机;两个出于同一子网络下的网络部分相同,好比172.16.254.3和172.16.254.7处于同一个子网下;

可是单单从IP地址看不出来,由于你不知道是前16位仍是前24位甚至前28位表明网络部分;这个时候子网掩码就出来了

子网掩码和IP地址同样,网络部分全为1主机部分为零.好比172.16.254.1,假设前24位表明网络,后8位则表明主机;那么他的子网掩码就是255.255.255.0

 只要知道了子网掩码就能够判断两个IP是否在同一个子网络,将两个IP地址和子网掩码进行and操做,是否相等。

IP地址的做用是:1.为每个计算机安排一个地址 2.判断是否在同一个子网络下

4.3IP数据包

直接将IP数据包放进以太网数据包中,不须要增长新的栏位,这就是互联网分层的好处。

“IP数据包”包括标头和数据

标头部分包括版本、长度、IP地址,“数据”部分是IP数据包的具体内容,放进以太数据包中就变成了

IP数据包的标头长度20字节到60字节,整个数据包的长度是65535,所以“数据部分”最长65515字节;以太网数据包的“数据部分”最长为1500字节。所以若是IP数据包超过了1500字节,那么就要分割为几个以太网数据包,分开发送

4.4ARP协议

网络层,IP数据包放在以太网数据包中,所以咱们必须须要知道两个地址,一是Mac地址一个是IP地址。一般,对方的IP地址是已知的,可是不知道Mac地址

因此,须要一种机制,能从IP地址得知Mac地址

这里分为两种状况

一:两个没有在同一个子网络下,只能是吧数据包发送到两个子网络相连的网关,须要网关去处理

二:在同一个子网络下,能够用ARP协议,获得Mac地址。ARP协议也是发送一个数据包,包含在以太网数据包,其中包含他要访问的IP地址,在对方的Mac地址这一栏,填的是FF.FF.FF.FF,表示这是一个“广播”地址。在该子网络中的每一个主机都会收到这个数据包,从中取出IP地址与本身比较,若是相等,作出回复,告诉对方本身的Mac地址;若是不相等,丢弃这个包

5、传输层

有了Mac地址和IP地址以后,咱们就能够实如今任一两个主机之间创建联系

可是,在同一个主机上,有不少进程在使用到网络,好比一边浏览网页,一边和朋友聊天,当接收到个数据包时须要判断是表示谁的内容

所以,咱们还须要一个“参数”表示接收到的数据包供哪一个进程使用,这个“参数”就是“端口”(port),其实就是每一个进程使用网卡的编号。每一个数据包发送到特定的端口,每一个进程到特定的端口取数据包

端口号是0-65535,16个二进制,0-1023的端口被系统占用,所以用户只能选择大于1023的端口。

不论是聊天仍是浏览网页,都会随机选择一个端口号和服务器相连

“传输层”的做用就是肯定端口到端口,“网络层”肯定的是主机到主机;只要肯定了主机和端口就能实现程序之间的交流。所以Unix把主机+端口成为“套接字”(socket)。

有了它,就能够实现网络应用程序开发

5.2UDP协议

在数据包中加入端口信息,就须要新的协议,最简单的实现就是UDP协议,就是在数据前边加上端口号

 

 标头中是发送端口和接收端口,数据部分就是具体的内容;而后把UDP数据包中放入IP数据包中

UDP数据包很是简单,"标头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

5.3TCP协议

UDP有一个缺陷就是发送出去不能肯定是否接受到了

为了解决这一问题,TCP协议就出来了,能够近似认为他是有确认机制的UDP协议,每发送一个数据包,都须要一个确认;若是数据包丢失没有接收到确认那么就知道数据包丢失,须要从新发送

 TCP数据包理论上无限长,可是为了保证网络的效率,通常不会超过IP数据包的长度,以确保单个TCP数据包不被分割

6、应用层

应用程序接受到了数据包,接下来就是解读。TCP协议传输的数据五花八门,好比Email、WWW、FTP,那么就须要不一样协议来规定电子邮件、网页、FTP的格式,这些应用程序协议就构成了应用层。

至此,整个互联网的五层结构,自下而上所有讲完了。

下一篇主要回顾TCP协议

相关文章
相关标签/搜索