互联网的协议

OSI七层模型与TCP/IP五层模型:https://www.cnblogs.com/qishui/p/5428938.html --图文并茂,讲得很好,将各层功能定义比喻为老板需要与公司B进行文件交换(应用层)--文秘小姐姐把文件翻译为老板与公司B商定的统一交流语言(比如英语)(表示层)--外联部寻找公司B的地址和收件人,并将文件打包写上地址(会话层)--公司的快递小哥把文件送到快递站,建立可靠地传输(传输层)--庞大的快递系统将文件送到目的地,可能会经过多次中转,每次中转地相当于一个IP节点,网络层应该也会进行路由计算和规划(网络层)--(数据链路层没有比较好的比喻--流量控制、差错控制)-- 文件会通过车、船等方式传输,但是上次并不知道也不需要知道这种交通方式是什么,只要文件能顺利到达目的地即可(物理层)

协议架构

物理层:物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。
数据链路层:这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,需要使用IP地址。
网络层:数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。路由算法通常在网络层进行,当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。
传输层:该层的主要任务是:向用户提供可靠的端到端的传输和流量控制,保证报文的正确传输。
会话层:会话层(Session Layer)是用户应用程序和网络之间的接口,任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。当建立会话时,用户必须提供他们想要连接的远程地址。域名(DN)就是一种网络上使用的远程地址。
表示层:对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
应用层:是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。

在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。

在发送方设备中,数据封装的过程如下:
1:用户信息被转换为数据,以便在网络上传输。
2:数据被转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接。
3:数据段被转换为数据包或数据报,并在报头中放上逻辑地址,这样,每一个数据包都可以通过互联网络进行传输。
4:数据包或数据报被转换为帧,以便在本地网络中传输。在本地网段上,使用硬件地址唯一的标识每一台主机。---相当于到了交换机, 交换机的目的设备是用MAC地址标识的
5:帧被转换为比特流,并采用数字编码和时钟方案。

OSI七层模型中,每一层只与接收设备上相应的对等层进行通信。意思是:为了实现通信交换信息,每一层都使用协议数据单元PDU(即传输层报头、网络层包头等),这些含有控制信息的PDU被附加到数据上。这种PDU信息只能由接收方设备中的对等层读取,在读取后,报头就被剥离,然后把数据交给上一层。

尽管看了很多有关于协议的教材、文章,但是总觉得学术性很强,反而没有那么通俗易懂地讲解网络是怎样连接的。在无法了解网络全貌的情况下,总觉得干货有点虚。其中看到了两个比较好的讲解,推荐给大家,以方便了解网络的全貌,也更好地理解之前学到的干货。

  • 第一个是[日]户根勤著的"网络是怎样连接的"。这本书主要内容如下:从我们在浏览器中输入一个网址url开始(如http://www.baidu.com),浏览器会根据url解析出http请求,并委托TCP/IP协议栈将请求转发出去;TCP/IP协议栈将http请求消息打包并加上目的地址等控制信息,通过网卡,交换机,路由器等接入互联网;通过运营商网络,骨干网直到web服务器的接入网;通过web服务器的防火墙,会有一个缓存服务器查看自身存储内是否有请求的消息,若有则直接回应,若没有则转交给web服务器回应;web服务器收到包之后,使用TCP/IP协议栈解包,web服务器根据要求进行回应;经过上述相反的传输过程,浏览器收到回应并将结果显示在显示器上。

  • 第二个是阮一峰的博客:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
    博客里以五层协议(从下往上:物理层、数据链路层、网络层、传输层、应用层)的结构来讲解,从下往上逐层分析,跟以前的从上往下逐层封装顺序不一样,很有意思。不过文中的一些术语跟我们平时了解地不太一样,需要自己换算一下咯。这里我做点总结。

  1. 物理层:是把电脑连接起来的手段,主要规定了网络的一些电气特性,作用是负责传送0和1的电信号
  2. 数据链路层:确定了0和1的分组方式,目前广泛采用的是 以太网协议 规定的分组方式,将一组电信号构成一个数据包(即帧),每一帧有帧头和数据部分。其中,帧头包含数据包的一些说明项,比如发送者、接受者、数据类型等等,固定为18字节;数据部分则是来自上层的待传送的消息,最短46字节,最长1500字节,若超过1500字节,则需要将消息分割成多个小消息并封装成帧。在数据链路层,发送方根据网卡固有的MAC地址来寻求消息的接收方。发送方将消息广播给自己所在的子网!!!!,子网内的其他主机对比MAC地址来决定是否接受该数据包。重点:广播只能使消息在自己所在的子网内传播!!!若是不同的子网之内想要通信呢,那就路由呀~因此,网络层内引入了IP地址使我们能够区分不同子网的计算机。
  3. 网络层:IP地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡(若果两台主机在同一个子网络,发送方通过ARP协议广播数据包,请求已知IP地址的主机的MAC地址,一般情况下,接收方的IP地址应该是知道的)。IP地址分为网络号和主机号,二者的分界线由子网掩码来标识。处于同一个子网的计算机,IP地址的网络部分一定相同。IP数据包分为包头和数据两部分,包头主要包括版本、长度、IP地址等信息,长度限制在20-60字节,数据部分长度限制在65515字节。比数据链路层长度限制更低,因此若数据包太长,下到数据链路层也需要分割数据包,分别封装成帧。
  4. 传输层:"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。主机和主机的通信并不是我们的最终目的,我们想要的是进程与进程的通信,如微信消息发送方和微信消息接收方。由于一个主机上会运行很多进程,为了区分网络中的数据包是哪个进程的,需要用端口号标识,这样就可以实现不同主机上进程到进程的通信了。使用TCP头/UDP头来加入端口信息。UDP头只有8个字节,总长度不超过65535字节。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
  5. 应用层:"应用层"的作用,就是规定应用程序的数据格式,以便收到传输层的报文时可以顺利解读。

总之,应用层产生消息体,TCP头/UDP头加入端口号信息以区分进程,IP头加入IP地址区分不同的子网,帧头加入MAC地址以区分子网内的不同主机(或者采用ARP协议从IP地址获得MAC地址,然后数据链路层的发送方进行广播寻找目的主机),上面封装好的帧转化成0/1的比特流,最后物理层传输电信号。

作者也有自上而下的用户角度解析,描述了从浏览器输入url直到显示页面的整个过程,这里就不再赘述啦(里面有一个比较重要的点是,得到浏览器和服务器的IP地址之后,通过子网掩码判断浏览器与服务器是否属于同一个子网,若属于同一个子网,则目的MAC地址为服务器的MAC地址;若不属于同一个子网,则数据包必须经过网关转发,当前目的MAC地址为网关MAC地址,转发出去之后,源MAC地址变为网关的MAC地址,目的地址为服务器IP对应的MAC地址--通过ARP协议获得)。网址如下:
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

你可能感兴趣的:(互联网的协议)