一、OIS七层模型及数据传输过程
实现两台机器互联,机器和机器之间是怎么通信的呢
先通过物理层
- 互联物理链路,物理介质。网线,光纤,无线电波等等
- 形式存在:0101000二进制电信号----比特流
这只是实现联通,并没有什么意思,要变成有意义的数据要通过数据链路层
数据链路层:
- 对比特流进行分组,对二进制8个为一组形成字节,依次按顺序发送数据-经过分组之后的数据叫做----帧
- 但是不知道发送给谁,因此定义了一个MAC地址-网卡-相当于身份证唯一的
- 用来标识我这个机器的一个物理地址 寄件人(MAC地址)-收件人(目的地址)
我的A主机和你的F主机进行连接,中间隔了其他B、C、D、E...主机,这个时候要怎么实现通信呢,中间有很多路径,怎么选择最近的路径呢?对方电脑的MAC地址我怎么知道呢?
网络层:
- 怎么知道对方的MAC地址呢,有一个ARP协议(address resolution Protocol),通过IP知晓对方MAC地址;
- 我们A主机和F主机中间隔了很多其他主机,可能A和F主机就不在同一个子网里面,也可能在,我们就需要去判断发送者和接收者是不是在通一个子网,这时候有一个IP协议
- 怎样选择最优路径?--组协议、路由协议、静态路由、动态路由协议(RIP、OSPF、BGP)。
这时候我们发送的数据特别多,特别大,需要很长时间怎么办呢。
传输层:
- 对发送数据进行封装-- TCP、UDP协议,一个一个一次发送
- 一般都是用两个程序两个应用进行聊天(微信-微信)--定义端口查找对应的应用程序进行处理
传输过程中网络中断了,重传?如果要重传,如何确保数据包正确完整
会话层:
- 可以从校验点继续回复数据进行重传-大文件
- 每次断联不可能要你手动去连接,它实现了自动收发包的功能,还有自动寻址的功能
不同操作系统语法不一样,在不同的系统中进行通信
表现层:
- 翻译工作,针对不同的系统如Windows、Linux、Mac,提供一种公共语言,进行通信
应用层:
- 开始传上来的是字节流,不好识别也不好操作,应用层定义了各种应用的协议,规范应用程序的格式,为应用程序提供服务-HTTP、HTTPS、FTP、TFTP协议
二、TCP/IP四层协议和IOSI七层模型的区别
TCP/IP四层协议比较常用
三、数据传输过程
我们在网址中输入百度:www.baidu.com是怎么访问到的呢
https://www.baidu.com先通过应用层进入传输层,在传输层封装一个TCP的头部端口,这个端口是用来判断用什么应用程序来处理。(HTTPS默认端口443)
然后发送给网络层,网络层给头部增加了一个IP信息,源主机和目的地址,寻址
然后发送给数据链路层,数据链路层给头部增加了源MAC地址
然后发送给物理层,物理层转化为比特流,发送给百度服务器
百度服务器收到信封自下而上,在物理层收到数据把比特流重组,就能够到数据链路层变成了以太帧的数据,拆封信封根据里面的源MAC地址传给网络层,网络层拆开发现有TCP的头部还含有端口,
网络层看完发送给传输层,传输层根据的端口号443,交给对应的协议HTTPS,传输至应用层,应用层根据请求消息给你一个响应请求,响应请求就是一个百度页面
四、ARP协议
ARP-地址解析协议(Address Resolution Protocol),实现通过对方IP地址(域名)寻找对方MAC地址ARP功能。
比较常用或者比较容易记住的是对方的ip地址,像MAC地址是不方便人们去记忆的,我们首先知道的是对方的ip地址或者是域名,通过ip解析成MAC地址,这个时候就需要用到ARP协议。
1.主机A首先查看自己的ARP表,如果找到了的主机B的MAXAC地址,则直接对IP数据包进行帧封装,发送给主机B;
2.如果主机A在ARP表中找不到主机B的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中带上源IP地址和源MAC地址(主机A),目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。广播,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
3.主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
4.主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。