• TCP/IP协议族


    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/walkerkalr/article/details/34410937

    第一章      TCP/IP协议族

    1.1 TCP/IP协议族体系结构以及主要协议

     

    1.1.1数据链路层

             数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。

             数据链路层两个经常使用的协议是ARP(AddressResolve Protocol,地址解析协议)和RARP(Reverse Address Resolve Protocol,逆地址解析协议)。他们实现了IP地址和机器物理地址之间的相互转换。

             网络层使用IP地址寻址一台机器。而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地址,才干使用数据链路层提供的服务,这就是ARP的用途。RARP协议仅用于网络上某些无盘工作站。由于缺乏存储设备,无盘工作站无法记住自己的IP地址,但他们能够利用网卡上的物理地址来向网络管理者查询自身的IP地址。

    执行RARP服务的网络管理者通常存有该网络上全部机器的物理地址到IP地址的映射。

    1.1.2网络层

            网络层实现数据报的选路和转发。网络层的任务是选择路由器等中间节点,以确定两台主机之间的通信路径。

    同一时候,网络层对上层协议隐藏了网络拓扑连接的细节,使得在传输层和网络应用程序看来,通信两方是直接相连的。

            网络层最核心的协议是IP协议(因特网协议)。IP协议依据数据包的目的IP地址来决定怎样投递它,IP协议使用逐跳(hop byhop)的方式确定路径。

            网络层另外一个重要协议是ICMP(InternrtControl Message Protocol,因特网控制报文协议),主要用来检查网络连接。ICMP报文分为两类:一类是差错报文,用来回应网络错误,还有一类是查询报文,用来查询网络信息。

    ping程序就是使用ICMP报文查看目标报文是否可达。

     

             如图所看到的,8位类型字段用于区分报文类型,代码字段用于进一步细分不同条件。使用16为校验和对整个报文进行循环冗余校验(Cyclic Redundancy Check,CRC)。

    1.1.3传输层

            传输层为两台主机的应用程序提供端到端的通信。与网络层使用的逐跳通信方式不同。传输层仅仅关心通信的起始端和目的端。

            传输层负责数据的收发、链路的超时重发等功能。

            传输层主要有三个协议:TCP协议、UDP协议和SCTP协议

            TCP协议(Transmission Control Protocol,传输控制协议)为应用层提供可靠的、面向连接的和基于流的服务。

            UDP协议(User Datagram Protocol,用户数据报文)为应用层提供不可靠、无连接和基于数据报的服务。

           SCTP协议(Stream Control Trasmission Protocol,流控制协议)是为了在因特网上传输电话信号而设计的。

    1.1.4应用层

            应用层负责应用程序的逻辑。上面三层协议系统负责处理网络通信细节,这部分必须稳定又高效,因此在内核中实现。而应用层则在用户空间实现。

            应用层协议非常多,举比例如以下:

            ping是应用程序,而不是协议:利用ICMP报文检測网络连接

            telnet协议是一种远程登录协议

            OSPF(OpenShortest Path First开放最短路径优先)协议提供一种动态路由更新协议,用于路由器之间的通信。以告知对方各自的路由信息。

           DNS(Domain NameService 域名服务)协议提供机器域名到IP地址的转换。

           应用层协议可能跳过传输层直接使用网络层提供的服务,如ping和OSPF协议。

    通常既能够使用TCP服务,又能够使用UDP服务。比方DNS协议。

           我们能够通过/etc/services文件查看全部知名的应用层协议。

    1.2封装

            上层协议通过分装使用下层提供的服务。应用程序数据在发送到物理网路之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时包含尾部)。以实现该层的功能,这个过程就是封装。

     

            经过TCP封装后的数据成为TCP报文段,经过UDP封装后的数据成为UDP数据报,UDP无须为应用层保存副本,由于它提供的服务不可靠。当一个UDP数据报被成功发送之后。UDP内核缓冲区中的该数据就被丢弃。假设应用层序检測到该数据报未能被接收端正接收,并打算重发这个数据报,则应用层序须要又一次从用户空间将该数据报复制到UDP内核发送缓冲区。

    而发送TCP报文,会在TCP缓冲区中保存副本。

    经过IP封装后的数据成为IP数据报,也包含头部信息和数据部分。

    当中数据部分就是TCP报文段、UDP数据报或者ICMP报文。

             经过数据链路封装后的数据成为帧。

     

            帧的最大传输单元(MaxTransimit Unit, MTU),即帧最多能携带多少上层数据。通常受网络限制。以太网的MTU是1500字节。

    帧才是终于在物理网络上传送的字节序列。

    利用ifconfig命令能够查看MTU值,还能够显示或配置网络设备(网络接口卡)。

    1.3分用

            当帧达到目的主机时。将沿着协议栈向上一次传递。各层协议一次处理帧中本层负责的头部数据。以获取所需信息,并将终于处理后的帧交给目标应用程序。这个过程叫做分用。分用是依靠头部信息中的类型字段实现的。

            帧提供的头部信息中的类型字段用于区分IP,ARP,RARP。当中IP字段值为0x800。ARP为0x806,RARP为0x835。

            相同IP数据报的头部採用16为协议字段区分ICMO,TCP,UDP。

            TCP和UDP则通过头部中的16位port号区分上次应用程序,比方DNSport号为53。HTTP为80。

    所以知名应用层协议使用的port号都能够在/etc/services中找到。

     

     

    转载请注明出处。谢谢~~

  • 相关阅读:
    js代码细嚼慢咽
    HTML知识点记录

    css知识点
    算法第五章作业
    算法第五章上机实践报告
    算法第四章上机实践报告
    算法第四章作业
    算法第三章上机实践报告
    算法第三章作业
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10580644.html
  • Copyright © 2020-2023  润新知