OSI案例详解+ARP+DNS

案例,淘宝买东西

DNS(走的UDP)

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

一次请求,DNS解析的过程

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

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

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

为啥只有13台?

因为UDP一个包一般为512字节,刚好能放下13个根地址

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.最后,发送者的浏览器,弹出了购买成功,他开心的流出了眼泪!

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

posted @ 2019-10-15 20:42  zx125  阅读(1329)  评论(5编辑  收藏  举报