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中找到。

 

 

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

【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/ldxsuanfa/p/10580644.html