CCNA-数据包在网络设备直接的通信流程

工作以来,感触最深的就是很多人学完了网络,甚至做了几年项目,还没有搞明白数据包的走向问题以及设备的转发原理。导致工作过程中出现问题,在拍错的时候一头雾水,抓耳挠腮,今天我用这个图简单说说PC1 访问 PC2 的一个HTTPS的WEB网站的数据包走向问题(最后附带了TCP包头和IP包头的格式,基础不好的可以先看最后两个图得内容):

先看拓扑图:

大家可以瞅瞅我下面总结的流程,感觉不错的话可以记下来PC1 地址192.168.1.100/24,网关地址192.168.1.1----也就是路由器f0/0口的地址;

PC2地址172.16.1.100/24,网关地址172.16.1.1----也就是路由器f1/0口的地址。

下面从OSI七层模型对数据包进行封装,封装完毕通过物理线路发送出去,结合路由器交换机工作原理进行描述:

1、PC1在应用层发起个目标IP为172.16.1.100的Https请求。

2、传输层(TCP层)接到上层请求的数据,将数据分段并加上传输层报头(也就是TCP包头,目的端口号为443)。下传到网络层。

3、网络层接收来处上层的数据后,根据IP协议(三层)进行封装,添加PC1的IP为源IP为和PC2的IP为目标IP后封装成数据包,同时协议号位6(TCP的协议号,标识包头里面是TCP的内容)。下传到数据链路层(二层),因PC1 IP与PC2 IP不在同一网段,所以数据包将发往网关路由条目的下一跳,也就是路由器F0/0口。

4、数据链路层接收网络层封装好的数据包后,继续进行封装帧头,添加源MAC地址为PC1的MAC地址,目标MAC地址则查询自己的ARP缓存表以获取网关MAC地址(路由器F0/0口的MAC)。如果PC1 ARP缓存表中没有网关对应的MAC地址,则PC1发出一个ARP广播报文。ARP报文中源MAC地址为PC1 MAC地址,所要请求的是网关IP对应的MAC地址.

5、交换机SW1从F0/0接收到ARP广播帧后,检查自己ARP缓存表中是否有与F0/0口相对应PC1的MAC地址。没有,则将PC1MAC地址与F0/0接口对应起来,存储到交换机SW1的ARP缓存表中。然后将该ARP请求报文进行除F0/0口以外的其他所有端口进行泛洪。

6、Router收到ARP广播后,进行解封装,发现所要请求的MAC地址是自己的。则Router将PC1的MAC地址写入ARP缓存表中。然后向 PC1发送一个ARP单播回应。该单播消息包括目标IP为PC1 IP,目标MAC为PC1 MAC地址,源IP为Router的F0/0口IP,源MAC为 Router的F0/0的MAC。

7、交换机通过F0/1口收到ARP单播帧,交换机同样检查MAC表,然后将F0/1口与Router的F0/0(ARP单播包里面的源MAC)的MAC地址对应起来,存入MAC缓存表中,然后转发该帧。

8、PC1接收到Router的ARP应答帧后,将Router的F0/0的MAC地址存入ARP缓存中(缓存默认4个小时超时),并将Router的F0/0的MAC地址作为目标地址封装到数据帧中。发给下层(物理层)进行网络传输。

9、Router的F0/0接收这个帧后,看目标mac地址是否指向自己。是,PC2则将帧头去掉,然后检查目标IP地址,发现这个目标IP不是自己,刚不再进行解封装。

10、Router在自己的路由表中检查自己的是否有去往目标地址的路由,没有则丢弃该帧。有,路由器经检查发现是去往与F1/0口直连的网段。则路由器对数据包进行二层封装成帧,源IP为PC1的IP,源mac地址为Router F1/0口的MAC地址,目标IP为PC2的IP,目标MAC地址则检查自己的ARP缓存表获取。如果没有,则发送ARP请求报文(这里就不再描述ARP请求过程了)。

11.Router把二层帧封装完毕,完后把数据帧发给SW2,SW2查看MAC地址表,根据之前ARP的映射缓存表项通过F0/1口转发数据帧。

12.PC2收到数据帧拆开最外面的帧头,一看目的MAC是自己,他继续拆IP包头

15、PC2拆开IP包头,发现目标IP和自己匹配,则继续拆封装,发现IP里面协议号是6,代表是TCP的数据,将数据向上层传输。

16、传输层(TCP)接收来自下层的Https请求TCP报文,则去掉TCP报头,向应用层传送。

17、应用层收到Https请求后,发送一个Https回应报文给PC1

回包过程同理。

下面附IP包头,TCP包头格式图。


好的本次到这里就结束了,欢迎观看我的文章。我是CCIE-Yasuo,喜欢就关注我吧,下一期见。
欢迎新盟教育的同学一起来交流,我是41期的疾风剑豪
同时我也是一名18岁来自大专的学生在学校写的,如有写的不对或侵权请及时联系删除。

CCNA-数据包在网络设备直接的通信流程相关推荐

  1. 数据包接收系列 — IP协议处理流程(一)

    本文主要内容:在接收数据包时,IP协议的处理流程. 内核版本:2.6.37 Author:zhangskd @ csdn blog IP报头 IP报头: struct iphdr { #if defi ...

  2. 数据包通过分层模型实现通信的过程

    传输前,由操作系统层层封装,然后经由网卡,路由器.交换机等进入网络. 接收时,仍然由操作系统层层解封,露出数据. 封装和解封顺序相反. 每层的详细内容在我的计算机网络专栏有写,这个模块是放在网络编程里 ...

  3. linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer

    Linux网络核心数据结构是套接字缓存(socket buffer),简称skb.它代表一个要发送或处理的报文,并贯穿于整个协议栈.1.套接字缓存skb由两部分组成:(1)报文数据:它保存了实际在网络 ...

  4. 数据帧,数据包,报文段,报文,分组,数据包的概念和区别

    应用层--消息 传输层--数据段(segment) 网络层--分组.数据包(packet) 链路层--帧(frame) 物理层--P-PDU(bit) 分组.包,packet,信息在互联网当中传输的单 ...

  5. tcpdump - 数据包进行截获的包分析工具

    From:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 30 分钟掌握 tcpdump:http://zhuanla ...

  6. tcpdump使用详解及数据包分析

    tcpdump使用与数据分析 语法 tcpdump(选项) 选项 -A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: ...

  7. 《Wireshark数据包分析实战》读书笔记

    1.OSI参考模型中的特殊功能: 表示层(第六层):进行用来保护数据的多种加密和解密操作. 会话层(第五层):负责以全双工或者半双工的方式来创建会话和关闭连接. 传输层(第四层):提供面向连接和无连接 ...

  8. tcpdump 网络数据包分析工具

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  9. 什么是数据包,数据包是用来干什么的?

    转自:http://www.weidianyuedu.com/content/2711824216204.html 数据包是TCP/IP协议通信传输中的数据单位.数据包包含发送者和接收者的地址信息.这 ...

最新文章

  1. bzoj 3864: Hero meet devil [dp套dp]
  2. 水晶报表技术(12)——一个投票系统水晶报表应用
  3. docker-compose 安装mysql
  4. 云路由 vyatta 体验(四)web代理
  5. wireshark 抓包显示 TCP segment of a reassembled PDU的问题
  6. 计量经济学及stata应用思维导图_小学毕业数学重点考点,火车过桥应用题,用思维导图轻松掌握...
  7. 使用XFire+Spring构建Web Service(一)——helloWorld篇
  8. 集合对象-“块数据”操作--其实是同一对象引用
  9. 2017 开源软件排行_2017年最佳开源教程
  10. 自动化测试框架搭建三python环境安装selenium和手动下载安装selenium的方法
  11. 4g网络切换软件_游戏掉线坑队友?OPPO Reno网络切换超快,上分吃鸡更稳
  12. 多媒体网络计算机室标准,10校园网、计算机教室、多媒体教室建设标准试行.docx...
  13. 实用小技能 | 用 Word 和 Excel 自制一个题库自判断答题系统!
  14. 易点易动助力叮咚买菜数字化管理固定资产和易耗品
  15. echarts 圆环图渐变
  16. 米兔机器人终于拼完了_米兔机器人上手组装如果你不会拼装或拆卸建议收藏
  17. jquery设置背景图片:$(this).css(background-image,url(on.jpg));就可以了
  18. TRIZ创新方法——40个发明原理
  19. RPG游戏《黑暗之光》流程介绍与代码分析之(六):背包系统的实现(下)
  20. GAVH39,PM1132,供电220v转5v芯片,SOT23-3,AC-DC小功率应用方案

热门文章

  1. android 获取和设置屏幕亮度
  2. C语言中字符串如何转换为二进制、八进制、十进制、十六进制
  3. 动态规划再理解(53、121、174)
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第2篇]多核处理器和向量处理器的区别
  5. Linux网络设备描述符,Linux
  6. 条形图坐标轴_解密咨询报告中常见的双层条形图的制作方法
  7. 注册登录页面代码用js判断是否填入信息_php实现登录功能
  8. mysql事务总结_MySQL数据库和相关事务总结
  9. 简单说明c语言程序步骤,C语言的入门简介和三个简单的C语言程序详细说明
  10. css 背景图怎么设置自动填充满_CSS属性设置 -- 背景样式