OSI案例详解+ARP+DNS
案例,淘宝买东西

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的更多相关文章
- (十八)整合Nacos组件,环境搭建和入门案例详解
整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...
- spring的IOC,DI及案例详解
一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...
- 深入浅出 spring-data-elasticsearch - 基本案例详解(三
『 风云说:能分享自己职位的知识的领导是个好领导. 』运行环境:JDK 7 或 8,Maven 3.0+技术栈:SpringBoot 1.5+, Spring Data Elasticsearch ...
- 用一个开发案例详解Oracle临时表
用一个开发案例详解Oracle临时表 2016-11-14 bisal ITPUB  一.开发需求 最近有一个开发需求,大致需要先使用主表,或主表和几张子表关联查询出ID(主键)及一些主表字段 ...
- http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)
http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误) 一.总结 服务器内部错误可能是服务器中代码运行的时候的语法错误或者逻辑错误 二.http500:服务器内部错误案例详解 只是一 ...
- spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解
spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant ...
- str_replace函数的使用规则和案例详解
str_replace函数的使用规则和案例详解 str_replace函数的简单调用: <?php $str = '苹果很好吃.'; //请将变量$str中的苹果替换成香蕉 $strg = st ...
- 第7.20节 案例详解:Python抽象类之真实子类
第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义 ...
- 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类Sta ...
随机推荐
- gym102302E_Chi's performance
题意 给n个二元组(v,p),要求排序使得v从小到大,而且总价值最大,价值定义为相邻两个v值不同的p值之差绝对值之和. 分析 in a row原来是相邻的意思. 对于每个相同v值的块来说,有用的数只有 ...
- 【AtCoder - 5659 】>< (思维题)
>< 直接写中文了 Problem Statement 给定的是长度为N-1的字符串S. S中的每个字符都是<或>. 当对所有i(1≤i≤N-1)都满足以下条件时,N个非负整数 ...
- Kong07-自定义 Kong 插件
在进一步讨论之前,有必要简要说明 Kong 是如何构建的,特别是它是如何与 Nginx 集成的,以及 Lua 与它有什么关系. 在 Nginx 中,lua-nginx-module 模块支持 Lua ...
- iOS开发高级分享 - iOS的可折叠表视图
导言 我曾经开发过一个iphone应用程序,它显示了大量的输入,这些输入分为不同的类别,在`UITableView`...若要更改其中一个输入的值,用户按下表视图中的对应行,并在出现的单独屏幕中更改该 ...
- 使用Typescript重构axios(三十一)——添加axios.all和axios.spread方法
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- day 2 上午 消失之物 背包
#include<iostream> using namespace std; long long n,m; ]; ]; ]; int main() { cin>>n>& ...
- 1. 彤哥说netty系列之开篇(有个问卷调查)
你好,我是彤哥,本篇是netty系列的第一篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 本文主要讲述netty系列的整体规划,并调查一下大家喜欢的学习方式. 知识点 ne ...
- Java环境变量配置教程
Windows 10 Java环境变量配置教程 目前Windows 10系统已经很成熟,大多数人开发都在Windows 10系统下进行开发,于是乎我做一下Java环境变量在Windows 10配下的 ...
- 域名解析 | A记录 ,CNAME,MX,NS 你懂了吗
域名解析 | A记录 ,CNAME,MX,NS 你懂了吗 域名解析 什么是域名解析?域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地 ...
- Linux centos5.6版本下mysql5.6主从环境安装配置
MySQL数据库支持数据库的主从复制功能,因此在集群方面具有其独特的优势,国内外大型网站架构体系中,均采用了MySQL的主从数据库配置来实现查询负载.数据库热备等功能.本人在此将如何配置实现做了个简单 ...