互联网的实现
全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡就收到了,两者实际上根本就不知道对方的物理位置,这难道不是一件很神奇的事情吗? 互联网的**核心**是一些列协议,总称为“互联网协议”(Internet Protocol Suite)。它们对电脑如何连接和组网做出了详细的规定。
互联网协议入门
-
概述
-
五层模型:
- 互联网的实现,分成好几层。每一层都有自己的功能,就想建筑物一样,每一层都靠下一层支撑。而作为用户所接触到的,只是最上面的一层。
-
分层有不同的模型,以下我们把互联网分成五层来理解:
-
他们从上至下应该是
- 应用层
- 传输层
- 网络层
- 连接层
- 实体层
-
他们从上至下应该是
- 越下面的层,越靠近硬件,而越上面的层越靠近用户。它们叫什么名字并不重要,只需要知道互联网分成多层就行了
-
层与协议
- 每一层都是为了完成一种功能。为了实现这些功能,就需要每一层都遵守共同的规则,而这个规则就叫做协议(protocol)
- 互联网的每一层,都定义了很多协议。这些协议的总成就叫做互联网协议(Internet Protocol Suite)。它们是互联网的核心。下面介绍每一层的功能,主要就是介绍每一岑的主要协议
-
实体层
- 电脑要组网,第一件事就是把电脑连接起来。而连接电脑可以用有形介质连接,比如电缆,光缆。也有无形介质的连接方式,比如无线电波
- 这就叫做“实体层”,它就是把电脑连接起来的物理手段。主要规定了网络的一些电器特性,作用是负责传送0和1的电信号
-
链接层
- 定义:单纯的0和1没有任何意义,必须规定解读方式:多少个蒂娜信号算一组?每个信号为有何意义?
- 链接层的功能,它在“实体层”的上方,确定了0和1的分组方式
-
以太网协议
- 早期的时候,每家公司都有自己的电信号分组方式,而后,一种叫做“以太网”的协议,占据了主导地位
- 以太网规定,一组电信号构成一个数据包,它的单位叫做“帧(Frame)”。每一帧分成两个部分:标头(Head),数据(Data)。“标头”包含数据包的一些说明,比如发送者、接受者、数据类型等;“数据”则是数据包的具体内容
- “标头”的长度,固定为18字节。“数据”的长度,最短为46字节,最长为1500字节。因此,整个“帧”最短为64字节。如果数据很长,就必须分割成为多个帧进行发送
-
MAC地址
- 以太网的“标头”包含了发送者和数据接收者的信息。那么发送者和接受者是如何识别的呢?
- 以太网规定,连入网络的所有设备,都必须有“网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接受地址,这个就叫做MAC地址
- 每一块网卡出厂时,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。比如:00-B0-A0-81-AA-C0.它的前6个十六进制数表示厂商编号,后6个十六进制数表示该厂商的网卡流水号
-
广播
- 定义地址只是第一步,后面还有许多的步骤。
- 首先,一块网卡怎么知道另外一块网卡的MAC地址?
- 有一种叫做”ARP”的协议,可以解决两块网卡MAC地址相互通知的问题(后面再介绍)。以太网数据包必须知道接收方的MAC地址,才能发送
- 其次,就算有了MAC地址,系统怎么样才能把数据包准确送到接收方?
- 以太网采用了一种很“原始”的方式,它不是把数据包准确的送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方
- 有了数据包的定义、网卡的MAC地址、广播的发送方式,“链接层”就可以在多台计算机之间传送数据了
-
网络层
-
由来:
- 以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,上海的网卡就可以找到华盛顿的网卡,技术上是可以实现的。
- 但是,这样做右一个重大的缺点。以太网采用广播方式发送数据包,所有成员人手一“包”,不仅效率低,而且局限在发送者所在的子网络。如果两台计算机不在同一个子网络,广播是传不过去的。这种设计师合理的,否则互联网上的每一台计算机都会收到所有包,后果不堪设想
- 互联网是无数子网络共同组成的一个巨型网络,因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用“路由”方式发送。(路由的意思,就是指如何向不同的子网络分布数据包)。但是靠MAC地址无法做到这一点。MAC地址只与厂商有关,与所处网络无关
- 这就导致了“网络层”的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就是“网络地址”,也就是“网址”。网络层出现之后,没一台计算机有了两种地址,一种是MAC地址,另外一种是网络地址。两种地址之间没有任何联系,MAC地址绑定在网卡上,网络地址则是管理员分配,它们只是随机组合在一起。
- 网络地址帮助我们确定计算机所处在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,再处理MAC地址
-
IP协议
- 啊、规定网络地址的协议,叫做IP协议。它所定义的网址,被称为IP地址
- 目前广泛采用的是IPv4(IP协议的第4个版本,简称IPv4) 。它规定,网络地址由32个二进制位组成
- 互联网上的没一台计算机都会分配到一个IP地址。这个地址分成两个部分。第一个部分叫做网络IP,第二各部分叫做主机IP。
- 但是,单单从IP地址,我们无法判断网络部分。我们需要借助子网掩码(subnet mask),它是表示子网络特征的一个参数。在形式上与IP地质一样是32位二进制数,但是它的网络部分全部为1,主机IP全部为0
- 知道“子网掩码”之后,将它与IP地质想与,然后比较两个IP地址结果是否相同,如果相同,则说明二者在一个网络中。否则就不在
- IP协议的主要作用:一是为每一台计算机分配IP地址,另外一个是确定哪些地址在同一个子网络
-
IP数据包
- 根据IP协议发送的数据,叫做IP数据包。其中必定包括IP地址信息。
- 但是以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?不需要,我们可以把数据包直接放进以太网数据包的“数据”部分,因此完全不用修改以太网的规格。这人就是互联网分层结构的好处:上层的变动完全不涉及下层的结构
- 具体来说,IP数据包也分为“标头”“数据”两个部分;标头部分主要包括版本、长度、IP地址等信息,数据部分则是IP数据包的具体内容。
- IP数据包的标头部分的长度为20字节到60字节,整个数据包德宗长度最大为65535字节,因此,理论上一个IP数据包的数据部分,最长为65515字节。以太网数据包的数据部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成为几个以太网数据包,分开发送。
-
ARP协议
- IP数据包是放在以太网数据包里发送的,所以我们需要同时知道两个地址,一个是对方的MAC地址,另外一个是对方的IP地址。通常情况下,对方的IP地址是已知的,但是我们不知道它的MAC地址。
- 有两种情况。第一种情况是:如果两台主句不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包送到两个子网络连接处的“网关”(geteway),让网管去处理。第二种情况:如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,是12个F,FF:FF:FF:FF:FF:FF,它所在子网络的没一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出恢复,向对方报告自己的MAC地址,否则就丢弃这个包
-
由来:
-
传输层
-
由来:
- 有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。但接下来的问题是,同一台主机上有许多程序都需要用到网络,当一个数据包从互联网上发来的时候,你怎么知道它是的是网页的内容,还是在线聊天的内容?
- 也就是说,我们还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数叫做“端口”(port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。
- “端口”是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览器浏览网页,还是使用通讯工具在线聊天,应用程序会随机选用一个端口,然后与服务器响应端口联系
- “传输层”的功能,就是建立“端口到端口”的通信。相比之下,“网络层”的功能是建立在“主机到主机”的通信。只要确定主机和端口,就能实现程序之间的交流。因此,Uinx系统就把主机+端口,叫做“套接字”(socket)。有了套接字,就可以进行网络应用程序开发了
-
UDP协议
- 现在,我们必须在数据包中键入端口信息,就需要新的协议。。最简单的实现叫做UDP协议,它的格式就是在数据数据前面加上端口号。
- UDP数据包,由标头和数据两部分组成
- 标头部分主要定义了发出端口和接受内容,数据部分就是具体的内容,IP数据包有事放在以太网数据包之中的,所以整个以太网数据包现在编程了 Head head head Data
- UDP数据包非常简单,标头部分一共只有8个字节,总长度不超过65535个字节,正好放进一个IP数据包。
-
TCP协议
- UDP协议的优点是比较简单,内容容易实现,但缺点是可靠性较低,一旦数据包发出,无法知道对方是否收到。
- 为了解决这个问题,提高网络可靠性,TCP协议就诞生了。它是一个有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包遗失,就收不到却仍,发厨房就知道有必要重发这个数据包了。
- 因此,TCP协议能够确保数据不会遗失。缺点是过程复杂、实现困难、小号资源较多。
- YCP数据包和UDP数据包一样,是内嵌在IP数据包的数据部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度会尝过IP数据包的长度,以确保蛋哥TCP数据包不必再分割。
-
由来:
-
应用层
- 应用层收到传输层的数据,接下来就要进行数据解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。
- 应用层的作用,就是规定应用程序的数据格式
- TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了应用层
- 这是最上面的一层,直接面对用户。它的数据就放在TCP数据包的数据不封。因此,现在的以太网数据包就编程了head head head Data
-
以上。
原创文章,作者:半斤八两,如若转载,请注明出处:http://www.178linux.com/74794