OSI互联数据包封装与解封装过程
当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程。
、当一个高层的数据包到达传输层,由于telnet使用TCP协议,传输层将上层传过来的数据不变再封装TCP的包头以便目标主机可以正确解包,继续向下层(网络层)传递。 、网络层同样不会改变之前的数据包,当然也包括之前封装的任何包头,
首先主机A要对目标主机作判断,他会用自己的IP地址和自己的子网掩码进行与运算结果是172.16.12.,
然后在拿自己的掩码和主机B的IP地址作与运算,假若结果是172.16.12.,这个时候他知道他们在同一网段内,这时他会封装自己的IP及目标的IP地址,同上层传下来的数据一下向下传。
假若是61.152.251.,发现不在同一个网段,注意:这时也是用自己IP和目标IP进行封装,然后向下层传递。
在数据链路层这时就不会封装目的的MAC地址,他也不知道MAC地址是什么,这时他会封装网关的MAC地址,而让网关将数据转发出去。
同时在网关收到数据时候,他会查看目标IP地址,当然不是他自己的IP地址了,所以他知道这个数据包是要由他路由出去的,然后路由器查找自己的路由表,若存在到该网络的路由便按路由表从对应接口发出去,
若路由表中没有到该网络的路由则检查是否存在默认路由,如果没有则丢弃数据包,并向源主机发送网络不可达icmp消息。
若一切正常,路由器会把数据包发给了他的邻居或网络运营商的路由器上去,重复以上动作,在TTL值为0之前将数据传递给某X官方网站,数据传递成功! 、数据链路层其实包括两个子层,一是LLC子层另一个是MAC子层。我们知道在以太网中通信是物理寻址的,在这层中会封装自己的MAC地址及对方的MAC地址。
当然用户是没有通知他MAC地址是多少的,这时主机会查自己的缓存表,看有没有主机B的MAC地址,
如果有就封装,否则他会发一个ARP的地址解析广播包,该包虽然可以向所有处在同一广播域中的主机发送,
但只会传递到不同网络的主机的数据链路层,更确切的说传递到了不同一网络的主机的数据链路层的高层后就被丢弃了。 、接着该数据会从我们的网线等传输介质传出去,主机B当收到数据的时候进行相同的工作但是作相反的操作
OSI互联数据包封装与解封装过程的更多相关文章
- IP数据包格式详解(转)
摘自:http://blog.163.com/hlz_2599/blog/static/1423784742011112195857956/</> TCP/IP协议定义了一个在因特网上传输 ...
- TCP/IP数据包结构详解
一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析.如:网络监控,故障排查等…… IP包是不安全的,但是 ...
- WebSocket数据包协议详解
其实我一直想不明白HTML5包装个应用层办议作为Socket通过基础目的是为了什么,其实直接支持Socket tcp相对来说更加简单灵活.既然标准已经制定而浏览器也支持那对于我们开发者来说只能用的分. ...
- sk_buff封装和解封装网络数据包的过程详解(转载)
http://dog250.blog.51cto.com/2466061/1612791 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...
- 计算机网络参考模型,IP地址及MAC地址查看方法,数据包封装过程
分层思想 首先,计算机网络参考模型,是基于分层思想而出现的.分层思想,就是将复杂流程分解为几个功能单一的子过程. 优点: 可以让整个流程更加清晰, 让复杂问题简单化, 更容易发现问题,并真对性的解决问 ...
- GRE封装解封装过程
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(IPX, AppleTalk, IP,etc.)的数据报文进行封装,使这些被封装的数据报文能够 ...
- FFmpeg(二) 解封装相关函数理解
一.解封装基本流程 ①av_register_All()////初始化解封装,注册解析和封装的格式. ②avformat_netword_init()//初始化网络,解析rtsp协议 ③avforma ...
- CCNA - Part10 数据包的通信过程
这篇文章主要是对数据包在同网段和不同网段的转发流程梳理,使用 ping 命令进行实际抓包测试. 网关的概念: 对于像 PC 等终端设备来说,通过交换机可以实现同网段的通信.但如果想要给其他网段发生数据 ...
- 用Java代码实现拦截区域网数据包
起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路: 正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...
随机推荐
- Spring学习总结五——SpringIOC容器五
一:spring组件扫描 可以使用注解的方式,代替在xml配置文件配置bean,可以减少配置文件的书写,只需要在spring容器配置 文件中配置<context:component-scan b ...
- Java求解汉诺塔问题
汉诺塔问题的描述如下:有3根柱子A.B和C,在A上从上往下按照从小到大的顺序放着一些圆盘,以B为中介,把盘子全部移动到C上.移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子.编程实现 ...
- Java实现两个变量的互换(不借助第3个变量)
创建一个类,在该类中定义两个变量并为其指定初始值,然后交换两个变量的值,要求不允许借助第三个变量,只能使用异或运行实现两个变量值的交换. import java.util.Scanner; publi ...
- RedHat6.5-Linux安装telnet服务
1 下载以下三个包 telnet-0.17-47.el6.x86_64.rpm(telnet客户端) telnet-server-0.17-47.el6.x86_64.rpm(telnet服务端) x ...
- com.alibaba.fastjson.JSONObject
package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastj ...
- 8 -- 深入使用Spring -- 3...2 ResouceLoader 接口和 ResourceLoaderAware 接口
8.3.2 ResouceLoader 接口和 ResourceLoaderAware 接口 Spring 提供如下两个标志性接口: ⊙ ResourceLoader : 该接口实现类的实例可以获得一 ...
- Centos6.3 下使用 Tomcat-6.0.43 非root用户 部署 生产环境 端口转发方式
一.安装JDK环境 方法一. 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...
- webstorm批量查找,批量替换快捷键
ctrl+shift+f:批量查找,我的webstorm11不能用ctrl+shift+f进行批量查找了,不知道什么原因,自己又胡乱实验了一下, 发现ctrl+shift+g+f可以批量查找 ctrl ...
- 详解 Tomcat 的连接数与线程池(转)
很不错的文章 https://juejin.im/post/5a0bf917f265da432d27a215
- Mysql Bypass小结
总结一些Bypass的方法, 1. 绕过空格过滤,使用注释/**/来替换 绕过安全狗简单的两个方法: /*'+'*/ /**a*/ 2.使用大小写绕过某些关键字的过滤 SeLeCT * From te ...