TCP-IP详解卷-基础知识

时间:2023-01-08 00:06:30

最近准备TCP-IP知识温故知新,收集部分资料。

收集这些基础模型主要是加深对网络编程的理解,故未对网络管理进行过多的了解,即包是如何选路的。

TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识TCP-IP详解卷-基础知识

TCP-IP详解卷-基础知识

ARP协议---Address Resolution Protocol---地址解析协议

       在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧之前将目标主机的IP地址转换成目标主机的MAC地址的过程。ARP协议的基本功能就是通过目标主机的IP地址,查询目标主机的MAC地址,以保证通信的顺利进行。协议又称做服务,ARP协议也即ARP服务,提供把IP地址转换成MAC地址的服务
       在现行寻址机制中,主机的以太网网卡只能识别MAC地址,而不能识别IP地址,若数据帧中不指明主机B的MAC 地址,主机B的网卡不能识别该帧是发给自己的,因此主机A仅知道主机B的IP地址还不够,还必须知道主机B的MAC地址,才能完成对主机B的访问;网络之间是用IP地址寻址,网络之内(同一物理网段或称IP子网)是用MAC地址寻址。   举例:
为了通俗易懂的解释ARP协议的作用,这里就举一个简单的PING命令例子:   假设在一个局域网中,(注意这里的前提是两台主机在同一局域网中)我们的计算机IP地址是192.168.1.1,现在DOS窗口中执行这个命令:ping192.168.1.2。该命令会通过ICMP协议发送ICMP数据 包。该过程需要经过下面的步骤: 1、应用程序构造数据包,该步骤是产生ICMP包,然后把它提交给内核(网卡驱动程序); 2、内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表; 3、如果存在该IP-MAC对应关系,那么跳到步骤7;如果不存在该IP-MAC对应关系,那么接续下面的步骤; 4、内核进行ARP广播,即发送 ARP Request,向整个网络中大喊,这个IP是谁的,这个IP是谁的(这个ARP Request中包含有我们计算机的MAC地址; 5、当192.168.1.2主机接收到该ARP请求后,就发送一个ARP 回应,即ARP REPLY命令,说道:这个IP是我的,你看这是我的MAC地址(ARP Request中包含自己的MAC地址); 6、我们的计算机获得192.168.1.2主机的IP-MAC地址对应关系,就保存到自己的ARP缓存中; 7、内核将把目标主机IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去; 8、这样主机B看到发送过来的数据包包头里有自己的MAC地址,才会识别它,噢,这个数据是发送给我的(当数据包包头里只有B的IP地址时,主机B会不认识它,不去接收这个数据包)
IP地址就像人的姓名,MAC地址就像人的身份证,当一个包裹发送过来,上面写着,是给张三的,但是叫张三的多了,张三不会去接收,但是包裹上面写了张三的身份证号码,张三一看,啊,是我的,身份证是唯一的,他才接收。那IP的作用是什么呢?   IP地址具有全网范围内的寻址能力,主机A和B可能分别处在不同网络,主机A要访问主机B首先要知道主机B的IP地址,不然找不到主机B所在 的网络。也就是说有了主机B的IP地址,主机A会知道主机B在哪里,知道它所在的网络,但不会把数据给它,只有得到它的MAC地址,之后,才会给它,就像验证身份证一样。   使用  arp  -a  命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。
  知道了ARP协议的作用,就能够很清楚地知道,数据包的向外传输是非常依赖MAC地址,可以看出ARP协议在网络传输中的不可缺少的作用。
假如说两台主机不在同一局域网,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)。也就是说,本地主机当寻求一个IP地址的MAC时,找不到,不是同一局域网,那它会收到路由器的MAC地址,说,这个数据就交给你了,剩下的事就你来处理了,你去找目的主机吧!