精华内容
下载资源
问答
  • 网络协议分层

    千次阅读 2017-04-06 16:36:50
    而TCP/IP的协议分层的5层网络架构: 应用层(第五层) 传输层(第四层) 互联网层(第三层) 网络接口层(第二层) 物理层(第一层)

     网络协议分层

     

      一直用TCP套接字做游戏服务器的网络通信,关于网络分层的原理却很模糊,最近好好看了一些网络分层的文章,把觉得重要的点整合了一下。

     

    众所周知的网络分层中的OSI七层模型,如下(第七层到第一层):

      应用层

     表示层

     会话层

     传输层

     网络层

     数据链路层

     物理层

     

    而实际中按TCP/IP的协议分层的5网络架构:                    

    应用层 
    传输层 
    互联网层  
    网络接口层
    物理层

     

    也有TCP/IP参考模型分为四层:应用层、传输层、网络互连层和主机到网络层。

     

    下面主要说5层架构中每一层的作用以及各层的常使用的协议:

     

    一、物理层(实体层)

     

          用光缆、电缆、双绞线、无线电波等方式把PC机、互连网服务器、网络设备等连接起来。这就是物理层,也叫做”实体层”。它主要规定了网络的一些电气特性,使这些设备都能够互相连接并兼容使用。它的主要作用是负责传送0和1的电信号。

     

    二、数据链路层(链接层/网络接口层)

        这层确定了0和1这些电信号的分组方式。定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

       下面是数据链路层的几个名词:


    以太网协议:

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

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

     “标头的长度,固定为18字节。数据的长度,最短为46字节,最长为1500字节。因此,整个”帧”最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

    MAC地址

        以太网规定,连入网络的所有设备,都必须具有”网卡”接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。以太网数据包的”标头”,包含的发送者和接受者的信息,就是MAC地址。

       每块网卡都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示(6个字节),类似这样:40-8D-5D-FE-71-70。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

    广播

      一块网卡如何知道另一块网卡的MAC地址,在网络层会详细解释,是通过ARP协议。以太网数据包必须知道接收方的MAC地址,然后才能发送。

      有了MAC地址,系统如何把数据包准确送到接收方?

      这里以太网采用了一种很”原始”的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

    例如:1号计算机向2号计算机发送一个数据包,和2号在同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的”标头”,通过ARP协议,由IP地址找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做”广播”(broadcasting)。

    有了数据包的定义、网卡的MAC地址、广播的发送方式,”链接层”就可以在多台计算机之间传送数据了。

     

    三、网络层

    网络层由来:

        以太网协议,依靠MAC地址发送数据。理论上,单单依靠MAC地址,不同的网卡在局域网内可以通信。但这样做有个重大的缺点。以太网采用广播方式发送数据包,所有局域网内的计算机都会收到包,不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。互联网是无数子网络共同组成的一个巨型网络,不同地域的电脑在一个子网络,这几乎是不可能的。

       因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用路由方式发送。(”路由”的意思,就是指如何向不同的子网络分发数据包)而MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

    这就导致了网络层的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做网络地址,简称网址,也就是IP

      于是,”网络层”出现以后,每台计算机有两种地址,一种是MAC地址,另一种是网络地址(IP)。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

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

     

    网络层作用:


       IP层接收由网络接口层发来的数据包,并把该数据包发送到更高层—传输层;相反,IP层也把从传输层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

          传输层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

     

    IP(Internet Protocol)协议

        规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。IP协议规定了数据传输时的基本单元和格式。目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

        互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

       但是,问题在于单单从IP地址,我们无法判断网络部分是多少位,主机是多少位,无法判断两台计算机是否属于同一个子网络。这里要用另一个参数子网掩码subnet mask

       所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是

          比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

    总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

     

     IP数据包

      根据IP协议发送的数据,就叫做IP数据包。其中包括IP地址信息。但是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。这里也不需要修改数据定义,我们可以IP数据包直接放进以太网数据包的数据部分。这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构。

    具体来说,IP数据包也分为”标头”和”数据”两个部分。

     “标头”部分主要包括版本、长度、IP地址等信息,”数据”部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。



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


    ARP协议

       地址解析协议,即ARP(Address ResolutionProtocol),是根据IP地址获取物理地址的一个TCP/IP协议。(因为这个协议的工作内容是链接层的,所以有的人将其算作链接层的协议,但其实是在网络层工作的,根据IP地址获取MAC地址)

        因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另一个是对方的IP地址。通常情况下,对方的IP地址是已知的,但是我们不知道它的MAC地址。所以,我们需要一种机制,能够从IP地址得到MAC地址。

       这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的网关gateway),让网关去处理。

       第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个广播地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

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

     与ARP一对的,RARP协议(Reverse Address Resolution Protocol),反向地址转换协议。反向地址转换协议就是将局域网中某个主机的物理地址转换为IP地址,现在基本上RARP被淘汰了,DHCP协议对RARP做了提升。

      DHCP属于应用层协议,并且使用的是UDP协议的应用层协议。

          DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

    DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:

    1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

    2. DHCP应当可以给用户分配永久固定的IP地址。

    3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

     

    四、传输层

       有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。通常同一台主机上有许多程序都需要用到网络,因此还需要一个参数,表示这个数据包到底供哪个程序(进程)使用。这个参数就叫做”端口port),它其实是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

        “端口065535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。不管是浏览网页还是在线聊天,应用程序会随机选用一个端口,然后与服务器的相应端口联系。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。

     

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

        传输层提供了节点间的数据传送服务,主要协议:传输控制协议(TCP)、用户数据报协议(UDP等,TCPUDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收

     

    UDPTCP的区别:UDP是不面向连接的,不可靠的协议;TCP是面向连接的,可靠的传输协议。那么为什么?

     首先有个信道复用的概念:  1、频分复用    2、时分复用    3、波分复用    4、码分复用    5、空分复用    6、统计复用    7、极化波复用 。不同的信道复用技术,使用不同的复用技术,目的就是创建“虚拟信道   
      
    一个TCP协议连接其实就是在物理线路上创建的一条虚拟信道。这条虚拟信道建立后,在TCP协议发出FIN包之前(两个终端都会向对方发送一个FIN包),是不会释放的。正因为这一点,TCP协议被称为面向连接的协议!   
      
    UDP协议,一样会在物理线路上创建一条虚拟信道,否则UDP协议无法传输数据!但是,当UDP协议传完数据后,这条虚拟信道就被立即注销了!因此,称UDP是不面向连接的协议! (注意:
    一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的.

      使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到!UDP协议就没有这种确认机制!这就是为什么说TCP协议可靠,UDP协议不可靠. 

     

     UDP协议

      UDP协议,它的格式几乎就是在数据前面,加上端口号。UDP数据包,也是由”标头”和”数据”两部分组成。标头部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

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


        UDP与TCP位于同一层,但对于数据包的顺序错误不重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。

    UDP没有建立初始化连接(三次握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

     

    TCP协议

       TCP协议提供了可靠的面向对象的数据流传输服务的规则和约定。简单的说在TCP模式中,对方发一个数据包给你,你要发一个确认数据包给对方。通过这种确认机制来提供可靠性。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。因此,TCP协议能够确保数据不会遗失。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

      TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

    TCP数据包和UDP数据包一样,都是内嵌在IP数据包的”数据”部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

     

    五、应用层

       应用程序间沟通的层。“应用层”的作用,就是规定应用程序的数据格式,对收到”传输层”的数据按规定的格式进行解读。

       举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,简单电子邮件传输(SMTP)、文件传输协议(File Transfer Protocol,FTP)、网络远程访问协议(Telnet)、超文本链接协议(Hyper Text Transfer Protocol,HTTP)等应用程序协议就构成了”应用层”。也有基于UDP协议的DNS:53,TFTP:69, SNMP:161, RIP:520(各个服务对应的端口)。

    这是最高的一层,直接面对用户。它的数据就放在TCP数据包的”数据”部分。因此,现在的以太网的数据包就变成下面这样。



    借鉴了这篇文章http://blog.csdn.net/jiqiandong/article/details/39393847(用了其中的图),以上就是整个互联网的五层结构。

     

     


    展开全文
  • 网络协议分层模型

    千次阅读 2019-09-13 11:57:23
    一、OSI网络分层模型 1、协议的分层 在OSI网络分层模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做接口。同一层之间的交互所...

    一、OSI网络分层模型

    1、协议的分层

    在OSI网络分层模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做接口;同一层之间的交互所遵循的约定叫做协议
    在这里插入图片描述

    2、OSI参考模型

    在这里插入图片描述
    第七层:应用层,为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件、远程登录等协议
    在这里插入图片描述
    第六层:表示层,将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换
    在这里插入图片描述
    第五层:会话层,负责建立和断开通信连接,以及数据的分隔等数据传输相关的管理
    在这里插入图片描述
    第四层:传输层,管理两个节点之间的数据传输。起着可靠传输的作用
    在这里插入图片描述
    第三层:网络层,将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择
    在这里插入图片描述
    第二层:数据链路层,负责物理层面上互连的节点之间的通信传输。将0、1序列划分为具有意义的数据帧传送给对端
    在这里插入图片描述
    第一层:物理层,负责0、1比特流与电压的高低、光的闪灭之间的互换
    在这里插入图片描述

    3、OSI参考模型通信处理举例

    发送方从第7层、第6层到第1层由上至下按照顺序传输数据,而接收端则从第1层、第2层到第7层由下至上按照顺序传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层所必须的首部信息。然后接收端对收到的数据进行数据首部与内容的分离,再转发给上一分层,并最终将发送端的数据局恢复为原状
    在这里插入图片描述
    假定用户A要给用户B发送一封内容为早上好的邮件,从上至下进行分析:

    1)、应用层

    在这里插入图片描述
    从用户输入完所要发送的内容并点击发送按钮的那一刻开始,就进入了应用层协议的处理。该协议会在所要传送数据的前端附加一个首部信息。该首部标明了邮件内容为早上好和收件人为B。这一附有首部信息的数据传送给主机B以后由该主机上的收发邮件软件通过收信功能获取内容

    2)、表示层

    在这里插入图片描述
    表示层是进行统一的网络数据格式与某一台计算机或某一款软件特有的数据格式之间相互转换的分层。表示层与表示层之间为了识别编码格式也会附加首部信息,从而将实际传输的数据交换给下一层去处理

    3)、会话层

    在这里插入图片描述
    假定用户A新建了5封电子邮件准备发送给用户B。这5封邮件的发送顺序可以由很多种。例如,可以每发一封邮件时建立一次连接,随后断开连接。还可以一经建立好连接后就将5封邮件连续发送给对方。甚至可以同时建立好5个连接,将5封邮件同时发送给对方。决定采用何种连接方法是会话层的主要责任

    会话层也像应用层或表示层那样,在其收到的数据前端附加首部或标签信息后再转发给下一层。而这些首部或标签中记录着数据传送顺序的信息

    4)、传输层

    在这里插入图片描述
    进行建立连接或断开连接的处理,在两个主机之间创建逻辑上的通信连接即是传输层的主要作用。此外,传输层为确保所传输的数据到达目标地址,会在通信两端的计算机之间进行确认,如果数据没有到达,它会负责进行重发

    会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理

    为了确保可靠性,在这一层也会为所要传输的数据附加首部以识别这一分层的数据。然而,实际上将数据传输给对端的处理是由网络层来完成的

    5)、网络层

    在这里插入图片描述
    网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机
    在这里插入图片描述

    6)、数据链路层、物理层

    在这里插入图片描述
    通信传输实际上是通过物理的传输介质实现的。数据链路层的作用就是在这些通过传输介质互连的设备之间进行数据处理

    物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC地址,也可称为物理地址或硬件地址。采用MAC地址,目的是为了识别连接到同一个传输介质上的设备。因此,在这一分层中将包含MAC地址信息的首部附加到从网络层转发过来的数据上,将其发送到网络

    网络层与数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终目标地址,而数据链路层则只负责发送一个分段内的数据

    7)、主机B端的处理

    接收端主机B上的处理流程正好与主机A相反,它从物理层开始将接收到的数据逐层发给上一分层进行处理,从而使用户B上使用邮件客户端软件接收用户A发送过来的邮件,并可以读取相应内容为早上好

    二、TCP/IP网络分层模型

    1、TCP/IP与OSI参考模型

    在这里插入图片描述
    第一层:网络接口层(数据链路层)

    网络接口层负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的设备,所以有时候也叫MAC层

    第二层:互联网层(网络层)

    互联网层使用IP协议,它相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据
    在这里插入图片描述
    TCP/IP分层中的互联网层与传输层的功能通常由操作系统提供。尤其是路由器,它必须得实现通过互联网转发分组数据包的功能

    IP

    IP是跨越网络传送数据包,使整个互联网都能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识

    IP还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能够实现通信

    虽然IP也是分组交换的一种协议,但是它不具有重发机制。即使分组数据包未能到达对端主机也不会重复。因此,属于非可靠性传输协议

    ICMP

    IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个异常的通知。ICMP就是为这一功能而制定的。它有时也被用来诊断网络的健康状况

    ARP

    从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议

    第三层:传输层
    在这里插入图片描述
    传输层最主要的功能就是能够让应用程序之间实现通信。计算机内部,通常同一时间运行着多个程序。为此,必须分清是哪些程序与哪些程序在进行通信。识别这些应用程序的是端口号

    TCP和UDP的区别:

    TCP是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。而UDP则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方

    TCP的数据是连续的字节流,有先后顺序,而UDP则是分散的小数据包,是顺序发,乱序收

    第四层:应用层

    应用层有各种面向具体应用的协议,例如Telnet、SSH、FTP、SMTP、HTTP等

    MAC层的传输单位是帧,IP层的传输单位是包,TCP层的传输单位是段,HTTP的传输单位则是消息或报文

    2、TCP/IP分层模型与通信示例

    1)、数据包首部

    在这里插入图片描述
    每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层所必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。如上图,在下一层的角度看,从上一分层收到的包全部都被认为是本层的数据

    2)、发送数据包

    假定用户A要给用户B发送一封内容为早上好的邮件

    1)应用程序处理

    应用在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层的TCP,再做实际的转发处理

    2)TCP模块的处理

    TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输

    为了实现TCP的这一功能,需要在应用层数据的前端附加一个TCP首部。TCP首部中包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(用以表示该包中数据是发送端整个数据中第几字节的序列号)以及校验和(用以判断数据是否被损坏)。随后将附加了TCP首部的包再发送给IP

    3)IP模块的处理

    IP将TCP传过来的TCP首部和TCP数据合起来当做自己的数据,并在TCP首部的前端加上自己的IP首部。因此,IP数据包中IP首部后面紧跟着TCP首部,然后才是应用的数据首部和数据本身。IP首部中包含接收端IP地址以及发送端IP地址。紧随IP首部的还有用来判断其后面数据是TCP还是UDP的信息

    IP包生成后,参考路由控制表决定接受此IP包的路由或主机。随后,IP包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正发送数据

    如果尚不知道接收端的MAC地址,可以利用ARP查找。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输

    4)网络接口(以太网驱动)的处理

    从IP传过来的IP包,对于以太网驱动来说不过就是数据,给这数据附加上以太网首部并进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太数据的协议。根据上述信息产生的以太网数据包将通过物理层传输给接收端。发送处理中的FCS由硬件计算,添加到包的最后。设置FCS的目的是为了判断数据包是否由于噪声而被破坏
    在这里插入图片描述

    3)、经过数据链路的包

    在这里插入图片描述
    包流动时,从前往后依次被附加了以太网包首部、IP包首部、TCP包首部(或者UDP包首部)以及应用自己的包首部和数据。而包的最后则追加了以太网包尾

    每个包首部中至少都会包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型

    经过每个协议分层时,都必须有识别发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP则会用端口号作为识别两端主机的地址。即使是在应用程序中,像电子邮件地址这样的信息也是一种地址标识。这些地址信息都在每个包经由各个分层时,附加到协议对应的包首部里面

    4)、数据包接收处理

    1)网络接口的处理

    主机收到以太网包之后,首先从以太网的包首部找到MAC地址判断是否为发送给自己的包。如果不是发给自己的包则丢弃数据

    而如果是接收到了恰好是发给自己的包,就查找以太网包首部中的类型域从而确定以太网协议所传送过来的数据类型。在这个例子中数据类型是IP包,因此再将数据传给IP的字程序。如果以太网包首部的类型域包含了一个无法识别的协议类型,则丢弃数据

    2)IP模块的处理

    IP模块收到IP包首部及后面的数据部分以后,也做类似的处理。如果判断得出包首部中的IP地址与自己的IP地址匹配,则可接收数据并从中查找上一层的协议。如果上一层是TCP就将IP包首部之后的部分传给TCP处理;如果是UDP则将IP包首部后面的部分传给UDP处理。对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或路由器以后再转发数据

    3)TCP模块的处理

    在TCP模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序

    数据接收完毕后,接收端则会发送一个确认回执给发送端。如果这个回执信息未能达到发送端,那么发送端会认为接收端没有接收到数据而一直反复发送

    数据被完整地接收以后,会传给由端口号识别的应用程序

    4)应用程序的处理

    接收端应用程序会直接接收发送端发送的数据,解析数据进行处理

    展开全文
  • 计算机网络分层结构

    2021-03-05 15:52:25
    计算机网络分层结构 文章目录计算机网络分层结构一、计算机网络的分层 一、计算机网络的分层    Java、大数据开发学习要点(持续更新中…) 参考:王道考研计算机网络

    计算机网络分层结构



    Java、大数据开发学习要点(持续更新中…)


    一、计算机网络的分层**

      计算机网络中分层结构由实体(每层中的活动元素,同一层的实体叫对等实体)、协议(对等实体数据交换的规则【水平】)、接口(上层使用下层服务的入口)和服务(下层为相邻上层提供的功能调用【垂直】)组成。

    1.1 OSI参考模型(理论模型)

    OSI参考模型分为七层:
    OSI参考模型
    用OSI参考模型解释通信过程:
    用OSI参考模型解释通信过程

    • 应用层:所有能和用户交互产生网络流量的程序。主要的协议分为文件传输协议(FTP)、电子邮件协议(SMTP等)、万维网协议(HTTP)。
    • 表示层:用于处理在两个通信系统中交换信息的表示方式。其功能有数据格式变换
      数据加密解密数据压缩与恢复。ps:这个分层没有特定的协议,完全可以被纳入应用层。
    • 会话层:向表示层实体/用户进程提供建立连接的功能在连接上有序传输数据(即建立同步,各个会话互不影响)。其功能在于(1)建立、管理、终止会话(2)使用校验点来实现数据同步
    • 传输层:负责主机中两个进程的通信,即端到端通信,传输单位是报文段或用户数据报。其功能分有可靠传输与不可靠传输(TCP与UDP)差错控制流量控制复用分用(复用是多个应用层可同时使用下面运输层服务,分用是传输层把收到的信息分别交付给上面应用层相应进程,用端口号实现)。
    • 网络层:主要任务是把分组从源端传送到目的端,为分组交换网上的不同主机提供通信服务,单位是数据报(数据报过大切割成分组)。其功能分为路由选择(最佳路径)、流量控制差错控制拥塞控制
    • 数据链路层:主要任务是把网络层传下来的数据报组装成。其功能分为数据成帧(定义帧的开始和结束)、差错控制(检错与纠错)、流量控制访问控制
    • 物理层:在物理媒体上实现比特流的透明传输,单位是比特。其功能分为定义接口特性定义传输模式(单工、半双工、双工)、定义传输速率比特同步比特编码

    1.2 TCP/IP参考模型与五层模型(应用模型)

      TCP/IP参考模型是一个从应用中发展成主流的参考模型,先有TCP/IP协议栈再划分成对应的参考模型。
    两种模型对应关系综合OSI和TCP/IP参考模型的五层模型如下:
    TCP/IP模型五层模型


    参考:王道考研计算机网络

    展开全文
  • 网络分层模型

    千次阅读 2015-03-16 16:04:49
    目前存在的两种网络分层模型:OSI模型和TCP/IP模型。OSI模型一共分为七层,TCP/IP模型和OSI模型类似,但是只分为四层。OSI模型OSI的全程是Open Systems Interconncection,即开放系统互联,它由ISO(International ...

    目前存在的两种网络分层模型:OSI模型和TCP/IP模型。OSI模型一共分为七层,TCP/IP模型和OSI模型类似,但是只分为四层。

    OSI模型

    OSI的全程是Open Systems Interconncection,即开放系统互联,它由ISO(International Organization for Standardization)制定。OSI是网络通信的一种通用框架,它分为七层,并且定义了在每一层上数据的处理方法。

    层数 层名 备注
    7 应用层(Application)
    6 表示层(Presentation)
    5 会话层(Session)
    4 传输层(Transport)
    3 网络层(Network) 路由器
    2 数据链路层(Data Link) 交换机
    1 物理层(Physical) 网卡、集线器(Hub)

    英语速记:All People Seem To Need Data Processing.

    第七层——应用层(Application)

    这里的“应用”要和应用程序相区别。
    当用户使用浏览器来打开网页时,需要利用DNS提供的域名解析服务,来获取网址对应的IP地址,然后再通过另外一个协议HTTP来下载页面内容。在这个过程中出现的两个协议(DNS和HTTP)都是工作在应用层上的协议。

    应用层的其他常用协议:

    • FTP:文件传输协议,用来在客户机和FTP服务器之间传输文件。
    • DHCP:动态主机配置协议,DHCP服务器为客户机动态分配IP地址。
    • POP3:邮件接收协议,用于从POP3服务器接收邮件。
    • SMTP:邮件发送协议,用户通过SMTP服务器发送邮件。

    第六层——表示层(Presentation)

    这里的“表示”是指数据的表示。
    该层的主要功能:转换压缩加密
    工作在表示层的加密协议最常用的是SSL(Secure Sockets Layer)。加密协议并不一定需要工作在表示层,如IPSec(Internet Protocol Security,因特网协议安全)就工作在第三层网络层中。

    第五层——会话层(Session)

    可以把“会话”理解为两个应用程序进程之间的逻辑连接,两个应用程序通过这个逻辑连接在一段时间内交换数据。会话层的作用就是为创建、管理和终止会话提供必要的方法。这些方法一般以API(Application Program Interface,应用程序编程接口)的形式出现。常用的API由NetBIOS(Network Basic Input/Output System,网络基本输入/输出系统)、RPC(Remote Procedure Call,远程过程调用)和Socket API。

    会话层还负责管理和确定传输模式。计算机可以由三种模式来传输数据:单向(Simplex)、半双工(Half-Duplex)、全双工(Full-Duplex)。

    • Simplex:数据只可以单向传输。
    • Half-Duplex:允许数据单向传输,但是一个时刻只能有一个方向传输,不能同时双向传输。
    • Full-Duplex:数据可以同时双向传输。

    第四层——传输层(Transport)

    传输层提供数据传输的服务。这里的“传输”指的是端对端(End-to-End)或者主机对主机(Host-to-Host)的传输。

    传输层上最重要的两个协议是TCP和UDP。TCP是面向连接的协议(Connection-Oriented),UDP是无连接的协议(Connection-Less)。

    TCP(Transmission Control Protocol,传输控制协议)

    TCP在传输数据之前必须先建立一个连接。TCP做了很多工作来提供可靠的数据传输,包括建立、管理和终止连接,确认和重传。同时TCP还提供分段和重组,流量控制(Flow Control)等。

    UDP(User Datagram Protocol,用户数据报协议)

    UDP是一种简单的传输层协议,所以它并不能提供可靠的数据传输。简单地说,UDP只是把应用程序发给它的数据打包成一个UDP数据报(UDP Datagram),然后再把这个数据报传给IP。
    TCP会把应用程序发来的数据根据需要分成若干个大小合适的TCP段(TCP Segment),而UDP却只是简单地把所有发送来的数据打包成一个UDP数据报,所以我们在编写使用UDP的程序时,不能一次性向UDP写入太多数据,否则可能会导致IP分段的后果。

    由于可能有很多应用程序同时在使用TCP/UDP,它们都会把数据交给TCP/UDP,而TCP/UDP也会接收来自IP的、包含指向不同应用程序的数据,所以就需要有一种方法来区别(标识)应用程序,这种方法就是通过端口号(Port)来进行多路复用多路分解。端口号是一个16位的二进制整数,其取值范围是0~65535。

    多路复用(Multiplexing)
    多路复用是只当应用程序把数据交给TCP或UDP时,TCP会把这些数据分成若干个TCP段,UDP则会产生一个UDP数据报。在这些TCP段和UDP数据报中,会填入应用程序指定的源端口号和目标端口号,源端口号用于标识发送的应用程序(进程),目标端口号用于指明在目标机器上应该接收数据的目标应用程序。

    多路分解(Demultiplexing)
    多路分解是多路复用的逆过程。当在目标机器上的TCP或者UDP接收到TCP段和UDP数据报时,会检查它们的目标端口号,然后根据不同的目标端口号把数据分发给不同的应用程序(进程)。

    第三层——网络层(Network)

    网络层关心的主要是如何把数据从一个设备发送到另一个设备。网络层需要提供三个最基本的功能:地址路由分段和重组。同时还需要一些附加的功能,比如错误处理和诊断。

    网络层上最重要的协议IP(Internet Protocol),就是为了这些功能而设计的。目前IP一共有两个版本IPv4和IPv6。两者最主要的区别是使用了不同位数的二进制整数作为地址:IPv4使用32位二进制地址,IPv6使用128位二进制地址。IPv4的地址表示方法一般为用点隔开的4个数字,每个数字的取值范围是0~255,即一个字节的大小,如192.168.1.1。IPv6的表示方法为用冒号隔开的8个字(word,16位二进制),每个字都用十六进制来表示,如2012:0000:4528:7D76:3C2B:05AD:3F57:1C98。

    网络层关心的是如何把数据从一个设备发送到另外一个设备,这另外一个设备有可能在本地网络中或者在一个很远的网络中。数据链路层关心的是如何把数据发送到本地网络中去。我们平时常说的LAN(Local Area Network,局域网)技术,如以太网(Ethernet)、令牌环网(Token Ring)、光纤分布数据接口(FDDI)和802.11(WiFi)都定义在这一层。
    数据链路层又分为两个子层:逻辑链路控制层(Logical Link Control)介质访问控制层(Media Access Control)

    数据链路层还有一个重要的概念,即MAC地址,也有人称其为物理地址、硬件地址、以太网地址等。每一个网卡(Network Interface Card)都有一个唯一的MAC地址,数据链路层通过MAC地址来确保数据能够正确被发送到目标设备。MAC地址是一个48位二进制整数,通常的表示方法是用-隔开的6个十六进制整数,如14-FE-B5-B0-2B-96。

    第一层——物理层(Physical)

    物理层位于OSI的底层,所有其他层的数据最终都必须经由物理层才能发送出去。物理层的功能包括:

    • 硬件规范的定义,如电缆、连接器、无线接收器等的工作方式,网卡、集线器(Hub)等网络设备也工作在物理层。
    • 编码和信号,物理层把计算机中的二进制0和1转换成可以在物理介质上传输的信号。
    • 在把数据转换成信号后(如对于双绞线电缆则是电子脉冲信号),物理层负责信号的实际发送和接收。

    TCP/IP模型

    TCP/IP模型分为四层:应用层(Application)、传输层(Host-to-Host Transport)、互联网层(Internet)、网络接口层(Network Interface)。

    在TCP/IP模型中并不包含物理层。另外,两个重要的协议ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址转换协议),在OSI模型中一般被认为是在位于第二层数据链路层和第三层网络层之间,而在TCP/IP模型中则位于网络接口层。

    总结

    发送方应用程序的数据总是从最上层开始,层层向下,最终经由物理层发送出去;相应的,在接收方的物理层接收到数据后,层层向上,最终经由应用层分发到具体的应用程序进程中。
    在数据层层向下的过程中,每一层都会对数据进行一些封装处理(如打包或者编码);而在数据层层向上的过程中,每一层都会对数据进行一些逆处理(如解包或者解码)。这些对数据的处理和逆处理的过程就是为了实现该层的服务。

    展开全文
  • 网络协议分层

    2018-07-11 16:34:13
    网络七层协议:
  • 计算机网络 WAN与LAN WAN 范围:几十到几千千米 作用:用于连接远距离的计算机网络 典型应用:Internet LAN 范围:1km左右 作用:用于连接较短距离内的计算机 典型应用:企业网,校园网 计算机网络参考...
  • 一、分层基本原则、 二、分层结构、 三、"协议" 三要素、 四、数据、 五、计算机网络体系结构、 六、分层相关概念、
  • 文章目录一、网络分层划分(ISO标准七层, TCP标准四层)1、应用层、表示层、会话层1.1 应用层1.2 表示层1.3 会话层2、传输层3、网络层4、数据链路层5、物理层(Physical Layer)6、举例二、IP地址、子网掩码及网络...
  • 计算机网络分层理解

    千次阅读 2020-02-24 22:02:13
    计算机分层网络,学习笔记。
  • 【TCP/IP】概述网络分层以及协议介绍

    万次阅读 多人点赞 2020-10-05 11:46:08
    本文是该系列文章的第一篇,将简单概述一下网络分层等简单知识 网络分层以及协议介绍 网络通信是一个非常复杂的过程,国际标准组织(ISO)将这个过程分为七个层次,将其称为OSI模型,七个层次分别为:应用层、表示层...
  • 转自: http://www.flickr.com/photos/caseorganic/4510691991/in/set-72157624621620243 小图 大图Network Models - Random network, Scale-free network, Hierarchical network随机网络The Erdös–Rényi (ER)...
  • 计算机网络分层

    千次阅读 2014-03-20 10:56:53
    1.3 计算机网络协议与分层 1.3.1 协议与分层的必要性 通信协议代表着标准化,规定了计算机信息交换中消息格式和意义的协定,是通信双方都必须遵循的一系列规则。在计算机网络中要做到有条不紊地交换数据,就必须...
  • 初识网络协议和网络分层

    千次阅读 2020-06-26 21:53:13
    今天所说的网络协议,亦不过如此。 协议有三要素: 语法:内容要符合规则和形式 语义:内容能够代表某种意义 顺序:先做什么,再做什么,这个顺序要有规范 下面这个图片就是一个符合三要素的例子 在这里插入代码...
  • 理解网络分层与数据加密

    千次阅读 2017-07-22 20:29:34
    网络分层网络的基础分层是OSI的七层架构: OSI的全称是Open System Interconnection(开放系统互联模型),是由国际标准化组织ISO设计,解决不同体系结构网络互相连接的问题。 实际应用中,五层架构是最常见的,也是最...
  • 1.2.1计算机网络分层结构

    千次阅读 2016-08-04 23:09:36
    两个系统中实体间的通信是一个很复杂的过程,为了降低协议设计和调试过程的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作,通常对计算机网络的体系结构以分层的方式进行建模。 我们把计算机网络的...
  • 一、网络为什么要分层? 因为,是个复杂的程序都要分层分层可以更好的明确每一层的职责。 理解计算机网络中的概念,一个很好的角度是,想象网络包就是一段Buffer,或者一块内存,是有格式的。同时想象自己是一个...
  • 网络分层结构

    千次阅读 2019-09-27 07:39:05
    身为开发人员懂得网络结构层次划分是必须的,但是由于工作中不太经常用到所以在学校学的通信网络相关的知识全部还给老师了 刚刚在公众号上看了一下网络分成结构的通俗解释,感觉更加便于理解和记忆,下面就本人的...
  • HTTP -- 网络分层

    千次阅读 2020-11-04 22:09:43
    Http -- 网络分层1,网络四层2,网络七层(OSI网络分层模型)3,四VS七4,TCP/IP协议栈的工作方式 1,网络四层 link layer(链接层):负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,...
  • 网络为什么要分层? 这里我们先探讨第一个问题,网络为什么要分层?因为,是个复杂的程序都要分层。 理解计算机网络中的概念,一个很好的角度是,想象网络包就是一段 Buffer,或者一块内存,是有格式的。同时,想象...
  • 2018.9.1 网络安全day01_计算机网络分层思想 网络安全 计算机网络 分层思想    LAN与WAN   LAN(Local Area Network)--局域网    局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机...
  • 网络分层体系结构

    千次阅读 2020-05-04 10:07:11
    网络分层模型一级目录二级目录三级目录 一级目录 二级目录 三级目录
  • 网络分层模型主要有两大类,一种是偏学术性的:OSI 七层网络模型;一种是偏应用性的:TCP/IP 网络模型,其又分为四层模型和五层模型。 1、这两大类网络分层模型的区别? OSI 七层模型是学术界提出的,从层数上就...
  • 网络协议分层 五层模型

    千次阅读 2019-08-04 17:30:02
    网络协议分层 经典五层模型(客户端) 五层模型在服务端时,与客户端顺序相反 Created with Raphaël 2.2.0应用层 (HTTP、FTP ...)传输层 (TCP、UDP)网络层数据链路层物理层 低三层 物理层主要的作用就是定义...
  • 网络之间互相通信,就必须制定一些规则,比如怎么搜索到目标,怎么开始,结束通信,这种规则我们称为协议。 TCP/IP是互联网相关的各类协议族的总称,通常使用的网络是在tcp/ip协议族的基础上运作的,http属于它内部...
  • 网络分层模型简介

    千次阅读 2018-08-03 14:42:39
    自上而下:应用层,表示层,会话层,传输层,网络层,链路层,物理层 物理层:最底层或第一层,该层包括物理联网媒介,双绞线、同轴电缆、光纤等。物理层的协议产生并检测电压以便发送和接收携带数据的信号,一般...
  • 一篇文章,只用看三遍,终生不忘网络分层

    千次阅读 多人点赞 2021-06-12 10:38:16
    如果你对网络分层不太了解,当听到三层协议、五层协议时是不是一头雾水?不知道所谓的层是什么,所谓的协议是什么?甚至对网络通信都知之甚少,那么这篇文章一定能够让你快速学到,如果没有收获就别点赞。 网络、...
  • 网络分层思想和数据封装与解封装概论 1、网络分层思想 1.1、什么是分层分层的目的又是什么? 对于网络分层,很多新手小白可能不太理解为什么要分层。 其实呢,我们所知道的网络数据传输,是一件很复杂的事情...
  • 计算网络的各个分层

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,486
精华内容 55,394
关键字:

网络是如何分层的