精华内容
下载资源
问答
  • 以太网数据包如何发送

    千次阅读 2013-10-12 17:23:20
    以太网数据包是如何发送的?ip和MAC有什么关系呢?下面所讲的数据传送只设计网络层和数据链路层。在linux下。 在局域网内,一台主机H1(192.168.1.110)想发送数据给主机H2(192.168.1.111)时。数据是怎样过去...
    在以太网中数据包是如何发送的?ip和MAC有什么关系呢?下面所讲的数据传送只设计网络层和数据链路层。在linux下。
    在局域网内,一台主机H1(192.168.1.110)想发送数据给主机H2(192.168.1.111)时。数据是怎样过去的呢?
    首先H1会查看自己的route table(命令route查看):

    Destination        Gateway                Genmask                Flags Metric Ref      Use Iface
    192.168.1.0                                  255.255.255.0                              0 eth0
    default                192.168.1.1        0.0.0.0                UG                          0 eth0

    确定H2在同一局域网内,将数据包直接从网卡eth0发出。再查看arp table,获取H2的MAC地址(命令arp查看):

    Address                                  HWtype  HWaddress                    Flags Mask                      Iface
    192.168.1.1                          ether    00:1d:0f:3e:95:46                                          eth0

    当arp中没有H2的IP到MAC映射时,H1需要广播一个frame,包含下面的几个值:

    H1MAC  ||  广播MAC  ||  H1IP  ||  H2IP

    局域网内所有主机都接受这个frame,因为是广播MAC(广播MAC为: FF-FF-FF-FF-FF-FF),所以都需解析它的数据内容,获得其中的目标IP。与自己的IP不匹配的主机直接忽略frame。匹配的主机发回一个frame,包含:

    本机IP  ||  本机MAC  ||  H1IP  ||  H1MAC

    这样H1就获得了H2的IP与MAC映射了。接着就进行frame的之间传输了(其他的主机无需解析出frame的IP,只要查看它的MAC是否与自己的匹配就行。也就是说无需提交到网络层,节省运算时间和资源)。
    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201608/04/1470295313_883599.png)
  • IP 数据包在以太网数据包里面,TCP 数据包在 IP 数据包里面。 2》直接广播地址 目的:区分受限广播地址。 用于同时向网络中所有的工作站进行发送的地址。 主机标示段host ID全为1的IP...

    1.网络层次划分

    OSI/RM模型:它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:
    物理层(Physics Layer)          :面向用户
    数据链路层(Data Link Layer):面向用户
    网络层(Network Layer):面向用户
    传输层(Transport Layer)      :数据传送服务
    会话层(Session Layer)
    表示层(Presentation Layer)
    应用层(Application Layer)。


    协议分类:OSI七层模型;TCP/IP七层协议;TCP/IP五层协议
    图示:


    服务:物理层->数据链路层->网络层。。。

    2.OSI七层网络模型

    TCP/IP协议是互联网的基础协议

    不管是OSI七层模型还是TCP/IP的四层、五层模型,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。


    分类解释:

    1》物理层
    该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。
    重要器件: 中继器(放大器)  集线器

    中继器:工作于局域网中,用以延长信号的传输距离。因为信号在传输过程中会出现消耗使得信号逐渐减小,中继器用于在适当位置放大信号
    集线器:工作于局域网,用于放大信号,增大传输距离,把所有节点集中在以他为中心的节点上,但不对信号进行编码,收到什么发送什么,将网络带宽平均分配给各个网络设备

    2》数据链路层
    服务于上层(网络层),将来自网络层的数据可靠地传给目标网络机。功能是将数据整合成数据块(桢:基本单位)
    主要协议:以太网协议:与IP网很好的结合
    主要设备:
    网桥:网桥是一种对帧进行转发的技术,根据MAC地址分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来。是连接两个局 域网的一种存储/转发设备。可扩展局域网。
    交换机:高级集线器,可划分VLAN,可以使局域网内每台机器灵活使用网络总带宽

    3》网络层

    目的:实现两个系统间的数据透明传输
    功能:路径选择,路由(路由器接收到数据包传送到目标地址的过程),逻辑寻址
    重要协议:也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP
    基本单位:IP数据报
    主要设备:路由器:路由和转换,路由器就是连接两个以上个别网络的设备。由于位于两个或更多个网络的交汇处,从而可在它们之间传   递分组


    注:网络层根据网络地址将源结点发送的数据包传送到目的结点,传输层负责将数据可靠的传输到相应端口。

    4》传输层

    开始端到端的传输,处理端到端的控制和流量,为两个端系统的会话层之间,提供建立维护和取消传输连接的功能。
    信息传送的协议数据单元:段,报文

    主要协议:TCP协议,UDP协议
    主要设备:网关:路由器的IP用于连接局域网和INTERNET,网关能在网络间传送数据包。

    网关与路由器区别:网关能在协议间传送数据而路由器只在网络间传送数据。

    5》会话层

    会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。

    6》表示层

    对上层数据进行变换以保证一个主机应用层信息可被另一个主机应用层理解。
    7》应用层

    为操作系统或网络应用程序提供访问网络服务的接口。



    会话层,表示层,应用层:
    基本单位:报文
    主要协议: FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

    IP地址

    1》网络地址
    Ip地址由网络号和主机号组成,网络地址的主机号全为0,网络地址代表整个网络。
    IP 数据包在以太网数据包里面,TCP 数据包在 IP 数据包里面。


    2》直接广播地址
    目的:区分受限广播地址。
    用于同时向网络中所有的工作站进行发送的地址。
    主机标示段host ID全为1的IP地址,所有的主机都能收到广播消息。可跨网段广播。
    例:192.168.10.255


    3》组播地址(D类地址)

    A类地址以0开头,第一个字节作为网络号,地址范围为:0.0.0.0~127.255.255.255;

      B类地址以10开头,前两个字节作为网络号,地址范围是:128.0.0.0~191.255.255.255;

      C类地址以110开头,前三个字节作为网络号,地址范围是:192.0.0.0~223.255.255.255。

      D类地址以1110开头,地址范围是224.0.0.0~239.255.255.255,D类地址作为组播地址(一对多的通信);无网络号和主机号

      E类地址以1111开头,地址范围是240.0.0.0~255.255.255.255,E类地址为保留地址,供以后使用。


    4》255.255.255.255
    受限广播地址,路由器不会进行转发,只能用于本地网络。

    5》0.0。0.0
    常用于寻找自己的IP地址,例如在我们的RARP,BOOTP和DHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围(具体而言是被各个路由器屏蔽的范围内)的服务器发送IP请求分组。

    6》回环地址
    127.0.0.0/8/1  本机地址

    7》A,B,C类私有地址(专用地址)
    只具有本地意义。

    A类私有地址:10.0.0.0/8,范围是:10.0.0.0~10.255.255.255

      B类私有地址:172.16.0.0/12,范围是:172.16.0.0~172.31.255.255

      C类私有地址:192.168.0.0/16,范围是:192.168.0.0~192.168.255.255

    8》IP网络地址的多重复用技术:使若干物理共享网络共享同一IP网络地址。

    例:
     192.9.200.13其缺省的子网掩码为:
    255.255.255.0则它的网络号和主机号可按如下方法得到:
    ①将IP地址192.9.200.13转换为二进制11000000 00001001 11001000
    00001101
    ②将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111
    00000000
    ③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分
    11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111
    00000000
    11000000 00001001 11001000 00000000结果为192.9.200.0,即
    网络号为192.9.200.0。
    ④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主
    机部分11000000 00001001 11001000 00001101 AND 00000000 00000000
    00000000 11111111 00000000 00000000 00000000 00001101结果为0.0.0.13,
    即主机号为13。

    计算子网掩码方法:

    1》
    利用子网数计算:需知道划分的子网数目,以及每个子网所需的主机数目。

    (1) 将子网数目转化为二进制来表示;

      如欲将B类IP地址168.195.0.0划分成27个子网:27=11011;

      (2) 取得该二进制的位数,为N;

      该二进制为五位数,N = 5

      (3) 取得该IP地址的类子网掩码,将其主机地址部分的的前N位置1即得出该IP地址划分子网的子网掩码。

      将B类地址的子网掩码255.255.0.0的主机地址前5位置 1,得到 255.255.248.0

    2》

    利用主机数来计算

      如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:

      (1) 将主机数目转化为二进制来表示;

      700=1010111100;

      (2) 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为N,这里肯定 N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位;

      该二进制为十位数,N=10;

      (3) 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

      将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255,然后再从后向前将后 10位置0,即为:11111111.11111111.11111100.00000000,即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址 168.195.0.0的子网掩码。

    3》

    还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码。这也可按上述原则进行计算。

      比如一个子网有10台主机,那么对于这个子网需要的IP地址是:

      10+1+1+1=13

      注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。

      因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。

      如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为14+1+1+1=1717大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224。

    !!ARP/RARP协议

    是根据IP地址获取物理地址的一个TCP/IP协议。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除
    静态对应关系等。
    工作流程:
    主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
      主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
      当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
      (1)根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
      (2)如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
      (3)主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
      (4)主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
      (5)当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

    逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址

    路由选择协议:

    RIP协议,OSPF协议

    RIP协议 :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。

      OSPF协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。


    TCP/IP协议

    TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

    IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

    UDP协议

    UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

    每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(2字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
      (1)源端口号;
      (2)目标端口号;
      (3)数据报长度;
      (4)校验值。
      使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议) NFS、 BOOTP。
       TCP 与 UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。
    DNS协议

    DNS:域名系统的缩写,将URL转换为IP地址。

    还协议进行域名解析

    NAT协议:

    接入广域网技术,私有地址转换为合法IP地址。

    DHCP协议:

    是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段

    HTTP协议:

    所有WWW都应遵守的超文本传输协议。

    HTTP 协议包括哪些请求?

      GET:请求读取由URL所标志的信息。

      POST:给服务器添加信息(如注释)。

      PUT:在给定的URL下存储一个文档。

      DELETE:删除给定的URL所标志的资源。

      HTTP 中, POST 与 GET 的区别

      1)Get是从服务器上获取数据,Post是向服务器传送数据。

      2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。

      3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。

      4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。


    在浏览器中输入 www.baidu.com  后执行的全部过程

      现在假设如果我们在客户端(客户端)浏览器中输入http://www.baidu.com,而baidu.com为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:

      1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。

      2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

      3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

      4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。



    展开全文
  • 以太网首部 目地MAC地址(6字节) 源MAC地址(6字节) 类型(2字节) 1、IP头的结构 版本(4位) 头长度(4位) 服务类型(8位) 封包总...

    以太网首部

    目地MAC地址(6字节)

    源MAC地址(6字节)

    类型(2字节)

     

     

    1、IP头的结构

    版本(4位)

    头长度(4位)

    服务类型(8位)

    封包总长度(16位)

    封包标识(16位)

    标志(3位)

    片断偏移地址(13位)

    存活时间(8位)

    协议(8位)

    校验和(16位)

    来源IP地址(32位)

    目的IP地址(32位)

    选项(可选)

    填充(可选)

    数据

    (1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。

    (2)版本:占第一个字节的高四位。头长度:占第一个字节的低四位。

    (3)服务类型:前3位为优先字段权,现在已经被忽略。接着4位用来表示最小延迟、最大吞吐量、最高可靠性和最小费用。

    (4)封包总长度:整个IP报的长度,单位为字节。

    (5)存活时间:就是封包的生存时间。通常用通过的路由器的个数来衡量,比如初始值设置为32,则每通过一个路由器处理就会被减一,当这个值为0的时候就会丢掉这个包,并用ICMP消息通知源主机。

    (6)协议:定义了数据的协议,分别为:TCP、UDP、ICMP和IGMP。定义为:

    #define PROTOCOL_TCP    0x06

    #define PROTOCOL_UDP    0x11

    #define PROTOCOL_ICMP   0x06

    #define PROTOCOL_IGMP   0x06

    (7)检验和:校验的首先将该字段设置为0,然后将IP头的每16位进行二进制取反求和,将结果保存在校验和字段。

    (8)来源IP地址:将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

    (9)目的IP地址:转换方法和来源IP地址一样。

    在网络协议中,IP是面向非连接的,所谓的非连接就是传递数据的时候,不检测网络是否连通。所以是不可靠的数据报协议,IP协议主要负责在主机之间寻址和选择数据包路由。

    2、ICMP协议的头结构

    类型(8位)

    代码(8位)

    校验和(8位)

    类型或者代码

     

    (1)类型:一个8位类型字段,表示ICMP数据包类型。

    (2)代码:一个8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为0。

    (3)检验和:数据包中ICMP部分上的一个16位检验和。

     

     

    3、TCP协议的头结构

    来源端口(2字节)

    目的端口(2字节)

    序号(4字节)

    确认序号(4字节)

    头长度(4位)

    保留(6位)

    URG

    ACK

    PSH

    RST

    SYN

    PIN

    窗口大小(2字节)

    校验和(16位)

    紧急指针(16位)

    选项(可选)

    数据

    (1)TCP源端口(Source Port):16位的源端口包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。

    (2)TCP目的端口(Destination Port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

    (3)序列号(Sequence Number):TCP连线发送方向接收方的封包顺序号。

    (4)确认序号(Acknowledge Number):接收方回发的应答顺序号。

    (5)头长度(Header Length):表示TCP头的双四字节数,如果转化为字节个数需要乘以4。

    (6)URG:是否使用紧急指针,0为不使用,1为使用。

    (7)ACK:请求/应答状态。0为请求,1为应答。

    (8)PSH:以最快的速度传输数据。

    (9)RST:连线复位,首先断开连接,然后重建。

    (10)SYN:同步连线序号,用来建立连线。

    (11)FIN:结束连线。如果FIN为0是结束连线请求,FIN为1表示结束连线。

    (12)窗口大小(Window):目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。

    (13)校验和(Check Sum):这个校验和和IP的校验和有所不同,不仅对头数据进行校验还对封包内容校验。

    (14)紧急指针(Urgent Pointer):当URG为1的时候才有效。TCP的紧急方式是发送紧急数据的一种方式。

    4、UDP协议的头结构

    源端口(2字节)

    目的端口(2字节)

    封报长度(2字节)

    校验和(2字节)

    数据

    (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。

    (2)目的端口(Destination Port):6位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

    (3)封包长度(Length):UDP头和数据的总长度。

    (4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行校验,还对包的内容进行校验。

     

    5、ARP报头结构

    硬件类型

    协议类型

    硬件地址长度

    协议长度

    操作类型

    发送方的硬件地址(0-3字节)

    源物理地址(4-5字节)

    源IP地址(0-1字节)

    源IP地址(2-3字节)

    目标硬件地址(0-1字节)

    目标硬件地址(2-5字节)

    目标IP地址(0-3字节)

    (1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;

    (2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);

    (3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

    (4)操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

    (5)发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;

    (6)发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;

    (7)发送方IP(0-1字节):源主机硬件地址的前2个字节;

    (8)发送方IP(2-3字节):源主机硬件地址的后2个字节;

    (9)目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;

    (10)目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;

    (11)目的IP(0-3字节):目的主机的IP地址。

     

    ARP的工作原理如下:

    1.   首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。

    2.   当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。

    3.   网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;

    4.   源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

    展开全文
  • 以太网数据包TCP、IP、ICMP、UDP、…

    千次阅读 2014-04-15 10:51:56
    以太网首部 目地MAC地址(8字节) 源MAC地址(8字节) 类型(2字节)     1、IP头的结构 版本(4位) 头长度(4位) 服务类型(8位) 封包总长度(16位) 封包标识(16位) ...

    以太网首部

    目地MAC地址(8字节)

    源MAC地址(8字节)

    类型(2字节)

     

     

    1、IP头的结构

    版本(4位)

    头长度(4位)

    服务类型(8位)

    封包总长度(16位)

    封包标识(16位)

    标志(3位)

    片断偏移地址(13位)

    存活时间(8位)

    协议(8位)

    校验和(16位)

    来源IP地址(32位)

    目的IP地址(32位)

    选项(可选)

    填充(可选)

    数据

    (1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。

    (2)版本:占第一个字节的高四位。头长度:占第一个字节的低四位。

    (3)服务类型:前3位为优先字段权,现在已经被忽略。接着4位用来表示最小延迟、最大吞吐量、最高可靠性和最小费用。

    (4)封包总长度:整个IP报的长度,单位为字节。

    (5)存活时间:就是封包的生存时间。通常用通过的路由器的个数来衡量,比如初始值设置为32,则每通过一个路由器处理就会被减一,当这个值为0的时候就会丢掉这个包,并用ICMP消息通知源主机。

    (6)协议:定义了数据的协议,分别为:TCP、UDP、ICMP和IGMP。定义为:

    #define PROTOCOL_TCP    0x06

    #define PROTOCOL_UDP    0x11

    #define PROTOCOL_ICMP   0x06

    #define PROTOCOL_IGMP   0x06

    (7)检验和:校验的首先将该字段设置为0,然后将IP头的每16位进行二进制取反求和,将结果保存在校验和字段。

    (8)来源IP地址:将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

    (9)目的IP地址:转换方法和来源IP地址一样。

    在网络协议中,IP是面向非连接的,所谓的非连接就是传递数据的时候,不检测网络是否连通。所以是不可靠的数据报协议,IP协议主要负责在主机之间寻址和选择数据包路由。

    2、ICMP协议的头结构

    类型(8位)

    代码(8位)

    校验和(8位)

    类型或者代码

     

    (1)类型:一个8位类型字段,表示ICMP数据包类型。

    (2)代码:一个8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为0。

    (3)检验和:数据包中ICMP部分上的一个16位检验和。

     

     

    3、TCP协议的头结构

    来源端口(2字节)

    目的端口(2字节)

    序号(4字节)

    确认序号(4字节)

    头长度(4位)

    保留(6位)

    URG

    ACK

    PSH

    RST

    SYN

    PIN

    窗口大小(2字节)

    校验和(16位)

    紧急指针(16位)

    选项(可选)

    数据

    (1)TCP源端口(Source Port):16位的源端口包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。

    (2)TCP目的端口(Destination Port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

    (3)序列号(Sequence Number):TCP连线发送方向接收方的封包顺序号。

    (4)确认序号(Acknowledge Number):接收方回发的应答顺序号。

    (5)头长度(Header Length):表示TCP头的双四字节数,如果转化为字节个数需要乘以4。

    (6)URG:是否使用紧急指针,0为不使用,1为使用。

    (7)ACK:请求/应答状态。0为请求,1为应答。

    (8)PSH:以最快的速度传输数据。

    (9)RST:连线复位,首先断开连接,然后重建。

    (10)SYN:同步连线序号,用来建立连线。

    (11)FIN:结束连线。如果FIN为0是结束连线请求,FIN为1表示结束连线。

    (12)窗口大小(Window):目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。

    (13)校验和(Check Sum):这个校验和和IP的校验和有所不同,不仅对头数据进行校验还对封包内容校验。

    (14)紧急指针(Urgent Pointer):当URG为1的时候才有效。TCP的紧急方式是发送紧急数据的一种方式。

    4、UDP协议的头结构

    源端口(2字节)

    目的端口(2字节)

    封报长度(2字节)

    校验和(2字节)

    数据

    (1)源端口(Source Port):16位的源端口域包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。

    (2)目的端口(Destination Port):6位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。

    (3)封包长度(Length):UDP头和数据的总长度。

    (4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行校验,还对包的内容进行校验。

     

    5、ARP报头结构

    硬件类型

    协议类型

    硬件地址长度

    协议长度

    操作类型

    发送方的硬件地址(0-3字节)

    源物理地址(4-5字节)

    源IP地址(0-1字节)

    源IP地址(2-3字节)

    目标硬件地址(0-1字节)

    目标硬件地址(2-5字节)

    目标IP地址(0-3字节)

    (1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;

    (2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);

    (3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

    (4)操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

    (5)发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;

    (6)发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;

    (7)发送方IP(0-1字节):源主机硬件地址的前2个字节;

    (8)发送方IP(2-3字节):源主机硬件地址的后2个字节;

    (9)目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;

    (10)目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;

    (11)目的IP(0-3字节):目的主机的IP地址。

     

    ARP的工作原理如下:

    1.   首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。

    2.   当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。

    3.   网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;

    4.   源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

     

     

    展开全文
  • pcap_捕获以太网数据包的例子(一)

    千次阅读 2006-10-25 14:32:00
    本实例只捕获一个以太网数据包,并分析其属于IP,ARP,RARP,还是其他。。。。。其中使用pcap_next ( pcap_t *p, struct pcap_pkthdr *h)作为捕包函数。 /*****************************************************...
  • 局域网A中主机A产生的数据包是如何发送至局域网B中的主机B的。下图展示了数据包从主机A中应用程序生成到转发到主机B的过程。 主机A的应用程序先生成应用层数据,应用层数据达到传输层后,传输层根据应用层协议类型...
  • 发送ARP数据包

    千次阅读 2016-11-16 15:20:12
    发送ARP数据包 ARP地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发 送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定...
  • 本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个TCP数据包发送给目的主机,并在目的主机接收此TCP数据包,将数据字段显示在标准输出上。 2.设计原理 TCP位于IP层之上,应用层之下的传输层...
  • 网络数据包发送接收全过程

    千次阅读 2019-05-29 06:22:27
    发送: 应用程序调用系统调用,将数据发送给socket socket检查数据类型,调用相应的send函数 send函数检查socket状态、协议类型,传给传输层 tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口...
  • ARP广播原理和数据包格式

    万次阅读 2018-04-04 16:33:55
    (1)A(135.24.25.23)和同一网段内的主机B(135.24.25.32)通信 查找arp 表没有32 IP的MAC地址 判断A 和B 是在同一局域网内,A向局域网发送ARP广播,B收到广播后 会把自己的MAC地址以广播的形式发送给A,...
  • 网络主机发送IP数据包过程

    千次阅读 2020-05-24 11:27:44
    主机发送IP数据包过程 当一个拥有公网IP的主机给其它主机发送IP数据包时,首先在IP首部封装自身IP地址(源IP)和目的主机的IP地址(目的IP),实现网络层数据的封装。接下来进行数据链路层封装,数据链路层数据帧的...
  • I’m …)1.2 高端任务完成两台主机通过中间主机的数据通信(网络层)增加基于IP地址的转发功能增加网络层封装2 帧结构2.1 以太网帧格式 2.3 对于基本任务获取本机mac的实现原理:主机A发送了...
  • 使用Xcap发送网络数据包

    千次阅读 2019-07-06 09:51:44
    4)双击已创建的报文,出现报文配置向导,首页为以太网头部。 5)输入目的MAC和源MAC。源MAC随便填写,目的MAC可填写Ubuntu虚拟机MAC,Type中选中“EthernetII”,下拉框选择“0x0800 (IPv4)”。 6)点击下一步,...
  • 1) 什么是以太网广播包? 在需要让网内所有的...在一般的物理层广播并不容易,但以太网本身就是个广播媒介,所传送的数据包会被洪泛到所有的节点,十分方便。 3) 以太网怎么把广播包传递给所有的节点?以太网把...
  • 网络数据包发送接收详细过程

    千次阅读 2018-09-21 09:47:23
    原文链接:... &nbsp;Linux的网络接口分为四部分:网络设备接口,网络接口核心,网络协议族,网络接口socket层。 ... 网络设备接口部分主要负责从物理介质接收和发送数据,实现的文件在linu/d...
  • #pragma pack(push) //保存对齐状态 #pragma pack(1)//设定为1字节对齐  // 定义ARP帧  struct APRRequest  { ... // 以太网MAC地址(ff ff ff ff ff ff作为广播地址)  char chSource
  • 总线型以太网广播特性 PC1向PC2发送一个数据包 PC2给PC1的响应数据包 总线型以太网的冲突特性 PC1给PC3发送一个数据包,PC2也给PC3发送一个数据包。 碰撞后的信号,发给了各个主机。 ...
  • 默认情况下, Microsoft Windows NT 4.0 DHCP 服务器 发送所有的 DHCP 响应作为 IP 广播到受限广播地址 (255.255.255.255)。 但是,DHCP 服务器 可以将配置为单播响应如果客户端请求指定广播的响应不需要。  ...
  • 原始套接字发送ARP数据包

    千次阅读 2019-04-14 10:42:29
    什么是ARP协议     ARP协议是Address Resolution Protocol(地址解析协议)的缩写...所谓“地址解析”就是主机在发送数据帧之前将目标IP地址转化成目标MAC地址的过程。ARP协议的基本功能就是通...
  • ARP数据包

    千次阅读 2013-05-23 14:28:46
     我们都知道以太网设备比如网卡都有自己全球唯一的MAC地址,它们是MAC地址来传输以太网数据包的,但是它们却识别不了我们IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC...
  • 我们需要让各个计算机相互发送1个数据包, 这样各个计算机的ARP高速缓存就会记录 网络中其他主机的ip地址和相应的MAC地址 ==>防止后面出现ARP广播请求 集线器广播ICMP数据包 上面这台主机收到数据包,根据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,057
精华内容 11,622
关键字:

以太网数据包以广播方式发送