互联网分层和协议【学习笔记】

互联网的分层

 

  1. 实体层(Physical Layer

  2. 链接层(Link Layer

  3. 网络层(Network Layer

  4. 传输层(Transport Layer

  5. 应用层(Application Layer

 

  越下面的层,越靠近用户;越上面的层,越靠近硬件。

 

互联网协议

 

  每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"protocol)。

  互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"Internet Protocol Suite)。它们是互联网的核心。

 

 

各分层的定义和作用

 

  "实体层",就是把电脑连接起来的物理手段,例如光缆、电缆、双绞线、无线电波等方式。它主要规定了网络的一些电气特性,作用是负责传送01的电信号。

   "链接层",它在"实体层"的上方,确定了01的分组方式。单纯的01没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?

 

  ①以太网协议:

     以太网规定,一组电信号构成一个数据包,叫做""Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

    "标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

  ②MAC地址

    以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。(每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。)

 

 

网络层

 

  ①IP协议

    规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

    目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。(IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。)

 

因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。

 

  ②ARP协议

     有了ARP协议,我们就可以得到同一个子网络内的主机MAC地址,就可以把数据包发送到任意一台主机之上。

 

传输层

 

  ①由来

    为了区分数据包是提供给哪个程序用的,除了mac地址和ip地址,还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做"端口"port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

    "端口"065535之间的一个整数,正好16个二进制位。01023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。

 

    "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"socket)。有了它,就可以进行网络应用程序开发了。

 

  ②UDP协议

    针对端口定义的新的协议。  

    UDP数据包,也是由"标头""数据"两部分组成。"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

    Head - Head - Head - Data

 

  ③TCP协议  

    UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决这个问题,提高网络可靠性,TCP协议就诞生了。

    这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

 

 

应用层

 

  应用程序收到"传输层"的数据,接下来就要进行解读。数据必须事先规定好格式,否则根本无法解读。"应用层"的作用,就是规定应用程序的数据格式。

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

这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。

 

 

总结:

 

  网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:

 

  发送这个包,需要知道两个地址:

  * 对方的MAC地址

  * 对方的IP地址

  (1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF

  (2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255

  (3)最后的"TCP 标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

   

 

 

参考:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

 

 

 

 

 

 

 

 

posted @ 2013-10-28 00:48  windrainpy-前端开发  阅读(577)  评论(0编辑  收藏  举报