案例,淘宝买东西

DNS

域名的作用其实就是相对ip地址来说更好记忆和识别,DNS就是根据域名解析出ip

一次请求,DNS解析的过程

1.在浏览器输入一个域名,操作系统首先会检查自己的本地hosts文件是否存在这个域名的映射关系,如果有就解析完成

2.如果1没有对应的关系,然后就会去配置的服务器找

3.最后到根DNS服务器去寻找,就算这个DNS不知道IP地址,但是它会告诉你哪一台知道,最后把结果返回(全球只有13台根DNS服务器)

DNS配置

域名-ipv4 A记录

域名-ipv6 AAAA记录

域名-域名 CName

域名-URL URL

域名-文本 TXT

ARP协议

arp在数据传输中起着非常重要的作用,它在数据链路层中起作用

常见问题,数据怎么知道发送的ip地址?

这个问题其实很普通,数据发送的时候是肯定知道对方的ip地址的,只是我们发送数据的时候我们看不见而已,他是发送数据的一个重要的基础
数据怎么知道发送的mac地址?

这个问题就比较高级一点了,我们知道数据传输其实真正起作用的是mac地址,怎么知道对方的mac地址呢,其实这就是arp协议在做的工作

工作过程

分两种,一种是在同一个网段(广播域),还有一种是在不同网段

当数据到达数据链路层层

同一网段

数据链路层的功能就是填源mac和目标mac,其实到这一步计算机就会判断目标ip是不是在一个网段,是的话就去本机的mac表找有没有目标ip的mac地址,没有的话,就把mac地址填FFFFFFFF,发送广播,接收到的机器拿出目标ip地址判断,如果是自己就返回响应

不同网段

如果计算出不是一个网段的,那么目标mac地址就直接填写网关的mac地址,数据发送到网关,mac地址就换成下一站的mac地址,直到找到目标的机器的网段的网关,最后网关发送一个类似上面的包找到目标机器

应用层 DNS,HTTP,HTTPS

1.我们在浏览器输入https://www.taobao.com网址,然后按下回车

2.浏览器并不知道https://www.taobao.com这个URL的具体地点,它会去作为地址簿协议的DNS去查找,最终返回淘宝服务器的IP地址,假如为122.123.34.21

3.浏览器知道了目标地址,就会开始打包它的请求,对于普通的浏览请求,通常会使用HTTP协议,但是对于购物等私密性比较重要的请求,选择了HTTPS加密的协议,给数据加上了HTTP头

4.将请求数据打包,然后交给下一层传输层

传输层

在应用层和传输层之间,抽象出来了一层socket层,socket层相当于把传输层封装了一下,把tcp/ip层复杂的操作抽象成了几个简单的接口提供给应用层使用。

1.数据进入传输层,传输层有两种协议,一种是无连接协议UDP和面向连接的协议TCP,因为TCP是可靠的协议,所以选择了TCP协议,TCP协议里面有两个端口,一个是自己的浏览器端口,还有一个是淘宝应用的端口,于是给数据加上了TCP头

2.传输层数据封装完毕,交给下一层网络层

网络层

1.网络层的协议是IP协议,IP协议中有浏览器的IP和淘宝服务器的IP

2.给数据加上IP头,交给下一层数据链路层

数据链路层

1.既然知道了目的IP地址,就会想如何找到目标机器,通过判断IP地址判断,这台机器是局域网中的还是外网的,如果是外网的话就会去问路由器中的网关。

2.默认的网关的IP地址是192.168.1.1,在局域网中广播的方式,找谁是192.168.1.1,网关就会回答他,并告诉他网关的MAC地址(通过IP找MAC地址的过程就是ARP协议,地址解析协议)

3.既然知道了网关的MAC地址,就给数据加上了MAC头,接下来就可以交给物理层传输了

物理层

传输数据

传输过程

1.数据终于从电脑出发了,首先它经过了交换机,交换机,交换机问数据你去哪呀,数据回答,找一个网关的MAC地址,交换机知道了,就告诉他怎么走

2.找到了网关,网关一般是路由器,路由器问数据你去哪呀,数据拿出了淘宝的IP,说,你看,我要去这里,路由器回答说哦,去这里,先去路由器B吧,他会告诉你接下来怎么走的(路由器之间也经常沟通,知道怎么走,这种沟通就是路由协议,有OSPF开放式最短路径优先和BGP边界网关协议)

3.最后终于到了最后一个路由器,路由器就会向某一个网络广播,数据找到交换机问,谁是淘宝服务器,淘宝服务器收到后,回复一个带MAC地址的数据,最后成功找到了淘宝服务器

4.目标服务器发现MAC地址对上了,就脱下MAC头,IP也对上了,脱下了IP头,然后就是TCP头了,把数据交给传输层,由于是TCP协议,每收到一个数据都会告诉发送者,我收到了,不然的话,发送者会一直发送没有响应的数据的。最后根据端口号,把数据交给监听这个端口的进程。

5.终于到达了进程,这时候就剩下一层HTTP头了,通过解析淘宝进程知道发送者要买东西了,于是操作数据库等,最后返回一个响应。

6.最后,发送者的浏览器,弹出了购买成功,他开心的流出了眼泪!

自己学习总结,部分来自极客邦

OSI案例详解+ARP+DNS的更多相关文章

  1. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  2. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  3. 深入浅出 spring-data-elasticsearch - 基本案例详解(三

    『  风云说:能分享自己职位的知识的领导是个好领导. 』运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+, Spring Data Elasticsearch ...

  4. ​ 用一个开发案例详解Oracle临时表

    ​ 用一个开发案例详解Oracle临时表 2016-11-14 bisal ITPUB  一.开发需求  最近有一个开发需求,大致需要先使用主表,或主表和几张子表关联查询出ID(主键)及一些主表字段 ...

  5. http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)

    http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误) 一.总结 服务器内部错误可能是服务器中代码运行的时候的语法错误或者逻辑错误 二.http500:服务器内部错误案例详解 只是一 ...

  6. spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解

    spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant ...

  7. str_replace函数的使用规则和案例详解

    str_replace函数的使用规则和案例详解 str_replace函数的简单调用: <?php $str = '苹果很好吃.'; //请将变量$str中的苹果替换成香蕉 $strg = st ...

  8. 第7.20节 案例详解:Python抽象类之真实子类

    第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一.    案例说明 本节定义 ...

  9. 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法

    第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类Sta ...

随机推荐

  1. (24)ASP.NET Core EF查询(查询的工作原理、跟踪与非跟踪查询)

    1.查询生命周期 在进入正题时候,我们先来了解EF Core查询的生命周期. 1.1LINQ查询会由Entity Framework Core处理并生成给数据库提供程序可处理的表示形式(说白了就是生成 ...

  2. CVE-2019-16097:Harbor任意管理员注册漏洞复现

    0x00 Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...

  3. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录

    为了更好的阅读体验,欢迎阅读原文.原文链接在此. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录 Part 2: Using G ...

  4. Appium的加载过程

    appium运行流程 Appium的加载过程如上图. 1)调用Android adb完成基本的系统操作: 2)向Android上部署bootstrap.jar: 3)Bootstrap.jar For ...

  5. PyQt图形化布局

    安装PyQt第三方库 pip install PyQt5 安装Qt Designer(Qt的布局工具) pip install PyQt5-tools PyChram设置Qt工具 配置Qt Desig ...

  6. jieba分词基础知识

    安装:pip install jieba 导包:import jieba 精确模式:试图将句子最精确地切开,适合文本分析(很像人类一样去分词) jieba.cut(字符串) --> 返回生成器 ...

  7. CDQ分治(学习笔记)

    离线算法——CDQ分治 CDQ (SHY)显然是一个人的名字,陈丹琪(MM)(NOI2008金牌女选手). 从归并开始(这里并没有从逆序对开始,是想直接引入分治思想,而不是引入处理对象) 一个很简单的 ...

  8. Java多线程-CountDownLatch、CyclicBarrier、Semaphore

    上次简单了解了多线程中锁的类型,今天要简单了解下多线程并发控制的一些工具类了. 1. 概念说明: CountDownLatch:相当于一个待执行线程计数器,当计数减为零时表示所有待执行线程都已执行完毕 ...

  9. linux 设置固定ip和dns

    目录 1. centos 1.1 ifconfig 查看网卡名称 1.2 设置固定ip和dns 1.3 重启网络 2. ubuntu 2.1 ifconfig 查看网卡名称 2.2 设置固定ip和dn ...

  10. VS反编译查看源码时,会把类实现的所有接口都直接显示

    今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...