ssh协议是osi_计算机网络协议分析

f175330f7af3a98dc201aadea9d1e7d3.png

1、OSI 7层参考模型

 数据发送:应用层–>表示层–>会话层–>传输控制层–>网络层–>链路层–>物理层

数据返回反向;

2、TCP/IP协议实现OSI,每次一层都在做什么(除去表示层和会话层,可以归纳到应用层)

 应用层–>传输控制层–>网络层–>链路层–>物理层   

分层原因:解耦,每个层次分明,有自己的协议,方便人员工作。

①应用层:应用程序。程序员开发,写代码进行逻辑编写,实现功能( 协议比如说:http协议,ftp协议,ssh等) 

比如基于webServer:像tomcat,会封装协议,解析协议,封装后程序员将里面的对象取出处理。

应用程序–>发起连接请求–>建立连接–>按照http协议封装报文–>发送–>读取服务器的返回信息–>获取信息处理展示

②传输控制层:(协议:TPC,UDP)

什么是TCP协议:面向连接的可靠的传输协议。什么是可靠连接:三次握手建立连接,四次挥手断开连接

              三次握手:

第一次:服务端监听端口比如tomcat8080端口,客户端想建立连接的时候通过8080端口请求建立连接发送syk数据包

第二次:服务端给客户端反馈一个数据包syn+ack,确认客户端想要建立连接

第三次:客户端给服务端发送一个数据包:ack,确认收到服务端的数据包,此时双方确认双方道路通畅

建立连接以后,双方都会开辟资源,双方发送和反馈数据包,互相接收数据包进行处理

建立连接后进行数据传输:比如刚刚写好的http文本发送给服务器,在http报文中要请求一篇文章内容,服务器解析报文之后,知到你要获取文本,那就会在反馈报文中放上文章内容,服务器可以记录此请求时间原因等保存在服务器,客户端得到服务器的报文解析报文,获取文章内容进行数据保存,后续可以对数据操作,这样客户端和服务端数据就可以进行交互了。

               四次挥手:

第一次:客户端给服务端发送一个数据包FIN请求断开

第二次:服务器反馈一个数据包FIN+ACK,表示收到客户端请求

第三次:服务端发给客户端数据包FIN,请求断开

第四次:客户端发送数据包ACK给服务端,表示收到服务器请求

然后断开连接,客户端和服务器释放资源

数据传输完毕,就要断开连接,因为建立连接是需要客户端和服务端资源(像http协议,如果建立连接后不进行数据交互会自动断开,减轻资源压力)

为什么会需要端口号:因为需要进行连接,建立连接后服务器需要知道是哪个客户端的请求,只有确定客户端才能确保数据不会出错

在此时连接表示为socket,什么是socket:翻译为套接字,简单记为四元组,什么为四元组:ip+port(端口号) ip+port在客户端和服务端一定是唯一的(四个里面肯定有一个能确定唯一性),端口号数量:65535个 

 举例:一台计算机、百度服务器

服务器启动的时候tomcat监听8080端口,相当于服务器占用8080端口,服务器ip为IPB

 计算机ip为IPA,发送请求时随机生成并占用一个端口连接服务器,计算机理论上可以和服务器建立65535个socket

比如其中一个socket: IPA:80 IPB:8080,另一个IPA:8080 IPB8080 ,这样服务器就能区分不同连接          

③网络层:

解决数据包是发送给谁问题,怎么才能找到目标服务端。客户端和服务端都有ip+prot,但是像我们电脑连着wifi我们电脑的ip为

192.168.1.130,如果这样直接发送给服务器的话,那么那么多的人有同样的192.168.1.130,不是服务器找不到发给谁了吗?

其实我们的ip会有很多层路由器传送数据到Internet,那么我们发送的数据是怎么最终到达目的地呢?

                 1ffdf7ae99b867ed7f112c955033d8c3.png

ipv4(IPADDR):点分字节,两点之间放一个字节可以表示的10进制数,一个字节是8个二进制位从全0到全1的变化过程可以表示的10进制数,一个字节为8个位,一个字节转化成10进制数可以表示0~255。

掩码(NETMAST):ip地址和掩码做二进制按位与&(1&1=1,0&1=0,1&0=0,0&0=1)获取网络号比如上面这个:192.168.150.11 255.255.255.0 化成二进制11000000.10101000.10010110.00001011和11111111.11111111.11111111.00000000做与运算得到11000000.10101000.10010110.00000000转化成十进制为192.168.150.0那这就是这个ip的网络号,ip上的11代表这是这网络号下第11号机器,这个网络下可以有255台机器(192.168.150.0~192.168.150.255)当然中间如果掩码是255.255.0.0,那么可以有255*255个主机路由表建立:如果路由表为空,机器网卡会根据配置文件配置自己的ip192.168.150.1并且与默认网关做与运算得出条目,还  有 一 条为默认网关,在配置路由器的时候配置的网关信息,此网关会绑定路由器的marc地址

           比如64b251f83b2566a3ef026bbe0bddc425.png                  

每层路由器都有路由表,那么如果目标ip不在这个路由表能找到的网络号呢:使用下一跳,将数据包给本层一个出口为下一为地址

此主机直接连了网络号为192.168.150.0的网络,下一跳为0.0.0.0  那么表示可以直接以此网络号中的主机进行连接不需要路由跳转 如果需要连接www.baidu.com

                  5e723690a2152b717eb6437ab14f3344.png

把目标ip与路由表中的掩码做二进制与运算,拿220.181.38.150与255.255.255.0做与运算,获得网络号为220.181.38.0与192.168. 150.0不一样,网络号不一样,不能直接通信,那就继续往下,拿220.181.38.150与0.0.0.0做与运算,得到网络号为0.0.0.0  是同一个网络号,那就把数据包给192.168.150.2,但是怎么把目标地址为220.181.38.150的数据包交给192.168.150.2呢?

④链路层:  (arp协议)    

在路由表没有找到同网络号的时候,找到下一跳ip(网关),数据包绑定marc地址,如果找不到marc地址,arp会执行广播,寻找marc地址

                    c61379742336d2db329b1c53e732bf72.png

数据包通过marc地址找到192.168.150.2,把数据包发给192.168.150.2,192.168.150.2打开数据包发现目标地址是

百度ip那么在自己路由表寻找网络号,找不到的话再通过marc地址把数据包发给下一跳直到找到同网络号,进行连接。

                    2ed773bb7ca014c37f0976227f4c02a2.png

⑤物理层: 网线光纤

[如有错误,请留言指正!]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值