1. 获取目的IP

2. 判断源IP与目的IP是否在同一网段   -->   比较 IP & Genmask 是否相同

2.1 若在同一网段,则先查询arp缓存中是否有目的ip的mac地址,如果arp缓存中有则封装mac包,将ip数据发送给目的主机;如果arp缓存中没有则发送arp请求得到目的主机的mac地址

2.2 若不在同一网段,则将数据包发送给默认路由(或者是网关),通过多个路由(或者是网关)的转发,找到目标子网。重复2.1的操作。

MAC头部

mac头部是以太网使用的头部。在数据包的传输过程中,IP包中的源IP地址和目的IP地址始终不变,通过改变mac头部的接收方mac地址和发送方mac地址达到两点之间的传输。

MAC头部结构
                                         接收方MAC地址(48位)
                                         发送方MAC地址(48位)
                                               协议类型(16位)
  1. 0800:ip协议
  2. 0806:ARP协议

ARP(地址解析协议)

在传输一个IP数据报的时候,确定了源IP地址和目标IP地址之后,就会通过主机的路由表来确定数据包的下一跳,网络层的下一层是数据链路层,所以是通过ARP协议得到下一跳的MAC地址。

ARP是通过ARP请求ARP相应两种包来确定下一跳MAC地址的。

获取下一跳的MAC地址过程

  1. 主机先通过广播发送ARP请求,这个请求中包含着想知道的MAC地址的主机IP地址
  2. 当同一个链路中的所有设备收到ARP请求时,会去拆开ARP请求包中的内容,如果其中的目标IP地址和自己主机的IP地址一致,那这个设备就将自己的MAC地址塞入ARP响应包返回给主机

操作系统一般会把第一次通过ARP请求得到的MAC缓存起来,但是这个缓存是有一个期限,超出期限的,缓存的内容将会被清除。

IP与路由转发

route -n : 查看当前系统的路由表

参数 含义
destination 目的IP
Gateway 网关IP
Genmask 子网掩码
Flags U--活动路由,G--网关,H--主机
Iface 网卡

IP数据包在网络中的传输过程相关推荐

  1. 数据包在网络中的传输过程详解

    我们当今使用电子设备都离不开网络,通过网络我们可以聊天.玩游戏.看电影都操作. 网络的本质就是交换数据. 本文我们就来看下数据是如何在网络中传输的. 计算机网络模型 现在有两种计算机网络模型,分别为O ...

  2. 探究!一个数据包在网络中的心路历程

    来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...

  3. 图解数据在网络中的传输过程

    数据在网络中的传输过程 在计算机网络当中,数据是怎么样保证准确的从客户端发送到服务器端的,这是本文探究的重点. 下图是本文中使用的网络拓扑图,数据从客户端发送给服务器端. 客户端各层对数据的封装 ja ...

  4. 一个数据包在网络中的心路历程

    1. 浏览器做的第一步工作是解析 URL 首先浏览器做的第一步工作就是要对 URL 进行解析,从而生发送给 Web 服务器的请求信息. PS :上图中的蓝色部分 URL 元素都省略了,哪应该是请求哪个 ...

  5. 消息在网络中的传输过程

    PC-A向PC-B传输消息,首先是用户打开消息应用例如QQ,然后给小黑发消息(你吃了吗), 1)在应用层生成数据"你吃了吗(小黑IP)",然后数据传入表示层节点-表示层, 2)在表 ...

  6. 探究 | 一个数据包在网络中的心路历程

    目录

  7. IP数据包传输的完整过程

    主机A与主机B通信,A Ping B,图1:A-交换机-B,AB同一子网 (1)ping数据包用的是ICMP协议,IP协议的一个子协议,位于三层,包含A的IP,B的IP,三层进行IP封装成包,进入二层 ...

  8. 读书笔记(随笔2)数据在网络中的传输

    2 数据在网络中的传输 所有的数据对于网络来说都是业务,不同的业务数据对传输的要求不一样, 就需要有不同的 信令协议 来满足它,不同的信令协议对数据的封装和标识提出 了不同的要求,从而又产生了各种 封 ...

  9. IP数据包(详解版)

    1.IP数据包详解图 2,使用Wireshark抓包 (1)版本--占4位,指IP协议的版本目前的IP协议版本号为4(即IPv4). (2)首部长度--占4位,这里的值为20Bytes. (3)总长度 ...

最新文章

  1. Windows7在Eclipse中配置Python+OpenCV
  2. 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)
  3. vim之好用插件-ctrlp.vim
  4. C++:Static修饰变量 vs Static修饰函数
  5. 太阳能计算机作文500字,自制太阳能热水器
  6. 一文教你用java实现儿时的超级玛丽游戏
  7. springboot 整合 kafka demo 顺便看一下源码
  8. Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
  9. Spring 框架基础(01):核心组件总结,基础环境搭建
  10. Restful 表述性状态传递
  11. 微信小程序获取上一页路由 获取从哪个页面跳转进来的
  12. 推荐21个顶级的Vue UI库!
  13. POJ3664 Election Time【排序】
  14. Iframe背景透明
  15. SAP在采购和销售中的税务处理-增值税
  16. 范围求和 II-c语言解决
  17. 20180504_android传感器入门之光线传感器
  18. 360漏洞响应平台(SRC)为白帽子挑选的10本互联网安全好书
  19. linux运行jar文件Invalid or corrupt jarfile错误
  20. MYSQL窗口函数用法

热门文章

  1. 如何设计一个风控实验?以度小满风控实验平台架构设计为例
  2. 海航重组当当,航机飘上书香
  3. 小程序头像和昵称填写能力用底部弹框界面实现
  4. CDA Level2建模备考心得
  5. 获取淘宝价格区间l-r的商品a的详细信息(商品名等)
  6. python for x in range(0,10) 例如使用python打印9*9乘法表
  7. Xilinx FPGA DDR3设计(一)DDR3基础扫盲
  8. 银河麒麟V10-桌面版 用户登录密码遗忘解决过程
  9. 我也写写致青春观后感
  10. windowxp网络无法发现其他计算机,几个步骤轻松解决win7无法访问XP系统共享问题...