2.tcp/ip协议分析-IP协议、ARP协议和RARP协议

IP协议是TCP/IP协议族中最核心的协议,它提供不可靠、无连接的数据报传输服务。所以理解IP协议对于我们学习网络至关重要。

IP首部

重要字段介绍

4bit首部长度:以4字节为单位,决定了IP首部长度最大为15*4=60,一般的IP数据报首部长度为20,此时该字段为5.

8bit的服务类型:包括一个3bit的优先权子字段(可以忽略),4bit的tos子字段和1bit的未用位但必须置0.4bit的TOS分别代表:最小延时、最大吞吐量、最高可靠性和最小费用。

比如在telnet交互应用中就要求有较小的传输时延,在FTP中要求有最大的吞吐量。这些可以通过设置socke选项来设置该字段。

16bit的总长度:最大为65535字节,包含首部和数据长度。

16bit的标识:唯一得标识主机发送的每一份数据报。需要注意的是分片后的各组数据报其标识是相同的。

3位标志:只有两位有意义,最低位为MF,MF=1表示后面还有分片;中间一位DF,DF=1,不允许分片。

13位片偏移:数据报分片后个数据段的偏移量,以8字节为单位。

TTL生存时间:设置数据报可以经过的最多路由器数,俗称跳数。它指定了数据报的生存时间。通常为32或者64.若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。

8bit协议:标记数据报的上层协议。

选项:后面的篇幅介绍

IP路由选择

IP地址

查找主机的ip地址可以使用ifconfig -a(windows上为ipconfig) 命令来看,比如我本机的Ip地址可以这样查看:

这里我们可以看到连个网络接口etho和lo,可以看到etho接口的Ip地址为192.168.152.130 内网地址,掩码为255.255.255.0

物理地址为00:0c:29:e3:72:92,最大MTU=1500,接口支持广播和多播。

下面的lo为环回接口 其MTU=16436

一些特殊的IP地址

路由表表项

1.目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段制定。

2.下一站路由器的IP地址,或者有直接连接的网络IP地址。

3.标志。其中一个标志指明目的地址是网络地址还是主机地址。另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口。

4.为数据报的传输指定的一个网络接口。

这是我本机上的路由表项,对于一个给定的路由器,可以打印出五种不同的标志:

U   该路由可以使用

G 该路由是到一个网关,如果没有该标志,说明目的地址是直接相连的。

H 该路由是到一个主机,也就是说目的地址是一个完整的主机地址。如果没有设置标志,说明该路由是到一个网络,而目的地址时一个网络地址。

D  该路由是由重定向报文创建的。

M 该路由是已被重定向报文修改的。

IP路由选择过程

1.搜索路由表,寻找能与目的地址的iP地址完全匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或者直接相连的网络接口。

2.搜索路由器,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或者直接连接的网络接口。

3.搜索路由器,寻找标为默认的表目。如果找到,则把报文发送该表目指定的下一站路由器。

4.如果上面的都没成功,则数据报不能被发送。

ARP协议

协议格式

工作原理

当一台主机要把以太网数据帧发送到位于同一个局域网的另一台主机时,是根据48bit的以太网物理地址来确定目的接口的。设备驱动程序从来不检查IP数据报中的目的IP地址,IP地址是协议分层设计中虚拟出来的用来进行路由选择的,而真正用于通信的地址是物理网卡的地址即MAC地址。当主机发送数据确定了目的IP地址后,就需要知道目的地址的

物理地址,因为根据链路层的以太网帧格式,我们发现其封装了目的MAC地址。ARP协议正是为IP地址到对应的硬件地址之间提供动态的映射,它工作在以太网。当它想要给知道网络中某一IP地址(可以是路由器或者主机) 对应的物理地址,就发送广播消息,消息内容大致就是:“喂,我是192.168.152.xxx,物理地址是xxxxx,我想要知道192.168.152.yyy的物理地址”。以太网中的主机收到该消息就将消息中的ip地址和自己进行比较,如果是自己,就发送响应告诉发送主机自己的mac地址。这样发送主机就能向其发送ip数据了。

arp缓存

其实并非每次发送数据前都要发送arp广播消息,这主要是由于每个主机都有一个arp高速缓存。这个高速缓存存放了最近ip地址到硬件地址之间的映射地址。因此可以通过该缓存读取到对端的物理地址。但高速缓存中每一项有一定的生存时间,一般为20分钟。

可以通过arp -a 命令来查看最近的arp表目。

下面看一个例子

首先在本机(192.168.152.130 mac addr:00:0c:29:e3:72:92)上运行tcpdump -e 命令来捕获arp消息,在另一台主机(ip:192.168.152.128 mac addr: 00:0c:29:7c:cf:fc)上运行telnet命令。得到的arp消息如下:

首先消息中0x0806代表该消息为arp请求或者应答。length 60 是指以太网数据帧的长度,由于arp请求或者应答的数据帧长都是42字节(28字节的arp数据,14字节的以太网帧头)因此必须加入填充字符以达到以太网的最小长度要求:60字节(有些书籍说是64,它包含了以太网的帧尾)。后面的46代表arp请求数据大小。在请求中可以看到ubuntu-2.local发送了该arp请求。

在响应消息中本机对其进行了回复告诉它自己的硬件地址。响应数据长度为28.

接着打印出本机的arp缓存条目,发现增加了第二条表目,这说明了在其他主机请求本主机的硬件地址时,同时也将对端的硬件地址添加到映射表来,这样以后和其通信就不需要进行arp请求了,如下图:

RARP协议

RARP协议和ARP协议的目的相反,它的作用是只知道自己硬件地址的主机能够通过RARP协议找到其IP地址。RARP的分组格式与ARP分租基本一致。主要是其帧类型代码为0x8035。这个协议在过去比较重要,用于无盘引导系统时获取主机的IP地址。现在的DHCP协议已经包含了RARP的功能。在这里就不多做介绍了。

完。

时间: 2024-10-29 10:45:56

2.tcp/ip协议分析-IP协议、ARP协议和RARP协议的相关文章

TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情.所以这也就出现了TCP是一个可靠的协议

《网络协议》ARP 协议和 RARP 协议

ARP 概述 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC 地址(硬件地址).而在 TCP/IP 协议中,网络层和传输层只关心目标主机的 IP 地址.这就导致在以太网中使用 IP 协议时,数据链路层的以太网协议接到上层 IP 协议提供的数据中,只包含目的主机的 IP 地址. ARP 是一种地址解析协议,是一个位于 TCP/IP 协议栈中低层的协议,主要是负责将 IP 地址解析为对应的 MAC 地址.ARP 协议只适用于局域网.另外,当发送主机

对TCP/IP协议的一些看法(3):SLIP协议和PPP协议

今天主要讲一下我对链路层上的SLIP协议和PPP协议的看法.今天应该是写的第三天了,为自己的坚持点个赞. SLIP协议其实用到的并不多,它全名叫serial line imternet protocol,译为中文是串行线路网际协议.它属于低速串行线路,可用于专业线路,也可用于拨号线路,传输速率在1200bps到19200bps之间.对slip帧(因为它是链路层协议)的格式,主要需要记住的是一个END位,位于帧的首部和尾部,用于判断帧的开始与结束.这样就可能存在如果在帧中间有个END的话,数据帧就

TCP协议和UDP协议的区别

转载:http://www.cnblogs.com/obama/p/3292335.html  作者: 曾见绝美的阳光 第一部分:TCP/IP相关知识点 对TCP/IP的整体认 链路层知识点 IP层知识点 运输层知识点 应用层知识点 (这些知识点都可以参考:http://www.cnblogs.com/newwy/p/3234536.html) 第二部分:常见面试题 TCP协议和UDP协议的区别是什么 TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握

TCP协议和UDP协议

TCP协议和UDP协议 TCP协议和UDP协议 TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览器:电子邮件.文件传输程序. UDP(User Datagram Protocol)不可靠的.无连接的服务,传输效率高(发送前时延小),一对一.一对多.多对一.多对多.面向报文,尽最大努力服务,无拥塞控制.使用UDP的应用:域名系统 (DNS):视频流:IP语

(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层. 在发送数据之前要按照上述七层协议从上到下一层一层进行加包处理,再发送出去; 在接收数据之后要按照上述七层协议从下到上一层一层进行拆包处理,再解析出来: 1.2 常用的协议(熟悉) http协议 - 超文

tcp协议和udp协议的差别

tcp协议和udp协议的差别 是否连接          面向连接                 面向非连接 传输可靠性       可靠                       不可靠 应用场合         传输少量数据         大量数据 速度                   慢                            快 TCP要求和服务器保持连接  UDP不需要   TCP数据是有序的(先写的数据对方一低昂先收到)UDP数据是无序的 AsyncSocke

RS-232协议和RS-485协议

RS232 RS232是一种异步传输标准接口.通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现 .RS232最常用的连接方式是三根线:一条发送线.一条接收线及一条地线. 电平信号:逻辑1(MARK)=-3V--15V,逻辑0(SPACE)=+3-+15V 传输距离:RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m:若每米电缆的电容量减小,通信距离可以增加.传

BLE GAP 协议和 GATT 协议

BLE GAP 协议和 GATT 协议 最近要打算学习 Blufi 协议进行蓝牙配置,其中必然使用 GAP 协议和 GATT 协议,于是进行重新学习一番. BLE 是一个 Bluetooth SIG 组织颁布的协议,对于使用 BLE 我们开发人员,最关注的是 上层的 GAP 协议和 GATT 协议. 1.1 GAP 和 GATT 有什么不同呢? GAP :定义一个 BLE 网络栈的通用拓扑结构. GATT:描述关于如何数据在连接中如何传输的细节. GATT 尤其关注于数据如何被格式化.打包.然后