TCP/IP基础(二)

来源:互联网 发布:怎样在手机上淘宝购物 编辑:程序博客网 时间:2024/05/29 09:39

一.最大传输单元(MTU,Maximum Transmission Unit)

   (1)以太网和IEEE 802.3 对数据帧的长度都有限制,其最大传输分别是1500和1492字节,这个限制称为最大传输单元。

   (2)如果IP层有一个数据报要传,而且数据的长度要比链路层的数据要大,IP层就要进行分片(Fragmentation).

    (3)当两台主机进行网络通信时,两台主机之间可能需要经过多个网络,每个网络的链路层可能有不同的MTU,两台通信主机路径中的最小MTU称为路径MTU。


   说明: 长度为1501自己的的IP数据报被拆分成两个IP分片,第一个IP分片的长度为1500字节,第二个IP分片的长度为21字节。且第一个IP头部设置了MF标志,第二个IP头部没有这个 标志。


    ICMP协议用于传递差错信息,时间,回显,网络信息等控制信息。

二. 以太网封装格式

              两种帧格式都采用48bit (6字节)的目的地址和源地址, 时指网卡的硬件地址(也叫MAC地址),

  linux可以通过ifconfig 命令,查看以太网的硬件地址. 如:  Link encap:以太网  硬件地址 20:89:84:3d:14:03 

 协议字段有三种值,分别时IP, ARP, RARP. 帧未时CRC校验码.
              ifconfig 命令也可以知道MTU的值,MTU的有效长度不包含帧首的长度.


三. ARP:地址解析协议

                    

         网络通信时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先被网卡接收到,再去处理上层协议. 如果接收到的数据包的硬件地址与本机的硬件地址不相符,这个数据包直接丢弃. 因此在通信前必须知道目的主机的硬件地址是多少.

        ARP协议的作用: 源主机发出ARP请求,ARP请求数据帧中包含目的主机的IP地址,询问"IP地址是10.0.0.1的主机的硬件地址时多少",并将这个请求广播到本机网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播). 当目的主机接收到 ARP请求,发现其中的IP地址与本机IP地址相符,则发送一个 ARP应答数据包给源主机,将自己的硬件地址写在应答包里面.


ARP高速缓

          每台主机都有一个ARP高速缓存,这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录,高速缓存中每一项的生存时间一般为20分钟,起始时间时刚创建时间.

        linux下可以通过: arp  -a    命令查看

ARP的分组格式


        硬件类型字段为硬件地址类型,它的值为1表示以太网; 它的值为0x0800 表示ip地址,

         op字段为操作字段, 1 表示ARP请求, 2 表示ARP应答, 3 表示RARP请求,  4 表示RARP应答.

  地址解析协议流程图:

                   si


四.  RARP --- 逆地址解析协议

作用:
   RARP协议讲局域网中某个主机的物理地址转换成IP地址,比如局域网中有一台主机只知道物理地址,而不知道IP地址,那么可以同RARP协议发出征求自身IP地址的广播请求.然后有RARP服务器来回答.

工作原理:   

   1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
   2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
   3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
   4. 如果不存在,RARP服务器对此不做任何的响应;
   5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

五. ICMP (Internet Control Message Protocol) : internet 控制报文协议


作用: ICMP是 TCP/IP协议族的一个子协议,用于IP主机,路由器之间传递控制消息. 控制消息是指网络是否通,主机是否到达,路由是否可用等网络本身的消息. 这些消息不是传送用户的消息,但对用户的传送有重要的作用.
   

六.   利用ARP和ICMP协议解释ping程序


  步骤a:应用程序ping会判断发送的是主机名还是IP地址,如果是主机名会调用函数gethostbyname()解析

               主机 B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析。
 步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包
 步骤c:将目标主机的IP地址转换为48位硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。
 步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP

            应答到主机A。
 步骤e:发送ICMP数据包到主机B。
 步骤f:主机B接收到主机A的ICMP包,发送响应包。
 步骤g:主机A接收到主机B的ICMP包响应包。







1 0
原创粉丝点击