zoukankan      html  css  js  c++  java
  • 网络架构和OSI7层协议

    网络架构

    单机

    • 单机游戏

    以下基于网络

    CS架构

    • 客户端游戏

    • CS----->client(客户)/server(服务)

    • 你自己是客户端:消费----->服务端:收钱

    服务端一个够了,客户端可以有多个

    服务端和客户端都是应用程序,那么两者都可以存储数据,优劣势:

    • 服务端存储数据:很多人都可以用,一次更新,其他人还是可以直接拿,数据安全

    • 客户端存储数据:快,非常快,但如果本地保存账户密码,安全性特别低,客户端不联网,数据不更新

    BS架构

    • 网页游戏

    • BS------>browser(浏览器)/服务端

    客户端(浏览器)/服务端,程序放在浏览器上

     

     

    互联网和互联网的组成

    边缘部分:客户端、服务端,这些普通的计算机,负责接收传送数据

    核心部分:传输网络的设备,路由,基站,负责数据的运输

    科普版

    1. 打开浏览器

    2. 输入网址(www.taobao.com)----->地址指向淘宝的服务端

    3. 按下enter键客户端吧www.taobao.com解析成淘宝的地址(杭州XXXXXXXX)

    4. 发送一条指令给淘宝,让淘宝把数据发给你

    5. 客户端渲染数据

    互联网的组成

    硬件:提供给你网络

    软件:应用程序,完成具体的任务

     

    OSI七层协议(**********************)(面试常问)

    • 互联网由硬件和软件组成,传输数据,只能传输电信号,1和0,OSi协议把0和1从无意义的东西转换为有意义的东西

    物理层

    计算机与计算机之间传输数据

    • 光缆/网线:传输信号,链接两台计算机,如果有一根网线能从美国连到中国,那么只要物理层就够了(很多军事部门就是专线)

    数据链路层

    让同一局域网下的计算机连在一起

    把1011010101101010100100000变得有意义,分组,没几个一组

    以太网协议:规定物理层中传输的0和1的格式

    head:

    收件人地址:

    数据类型:

    发件人地址:

    data:内容

    • 发件人地址就是mac地址,计算机网卡的地址,这个地址固定不变,并且唯一,每一台电脑都有自己固定的mac地址

    • 广播:你一定知道自己的mac地址,还有收件人的mac地址通过某一台设备(交换机),但是交换机不知道mac地址对应的计算机是那一台,交换机会以广播的形式发给所有计算机,收件人的计算机收到就会解析这条命令,拿到内容了之后交换机会记录两个mac地址

    以上基于局域网

     

    网络层

    让不同局域网下面的计算机连在一起

    叫做IP地址,只知道mac地址无法连接其他局域网内的计算机,因为mac地址只被交换机识别,然后不同局域网的交换机不一样,所以现在定义一个新的地址表名是哪个局域网,通过路由器

    在数据链路层的基础上包一层IP头

    已经知道了淘宝的IP地址和mac地址,你会把自己mac地址和IP地址一起发送过去,路由会接受淘宝的IP地址,路由发送的淘宝的IP地址和mac地址,自带mac地址(路由器的)和IP地址(路由器的IP地址)

    mac地址(局域网)+IP地址(互联网)就能找到全世界独一无二的电脑

    传输层

    组织网络带来的数据

    端口号,找到一个固定的应用程序,一个端口号对应一个应用程序

    mac地址(局域网)+IP地址(互联网)+端口号就能找到全世界独一无二的电脑上的独一无二的应用程序

    数据0和1发送给应用程序,TCP/UDP协议

    应用程序

    0和1转换成具体的功能

     

     

    抽象层

    客户端和服务端的应用程序想通信,两者传输的就、数据必须是一样

    socket抽象层就是写出一个全世界独一无二的计算机上的应用程序,既可以是客户端,也可以是服务端

    使用socket编写的客户端服务端写一个文件拷贝的CS架构的软件

     

     

    TCP三次握手和四次挥手

    TCP把链接作为最基本的对象,每一条TCP链接都有两个端口,这个端口成为套接字,他的定义为端口号拼接到IP地址及构成了套接字。

    • 三次握手

    • 其实一次握手,两次握手也能实现通信,但是存在很多问题:

      1. 一次握手的话,接收不到服务端的确认信号,你无法得知服务端的状态(关闭,开启)

      2. 两次握手的话,如果你在第二次握手后死掉了(宏机),但是你死之前发送了数据指令,则服务器依然会发送数据指令,很容易被拦截盗窃,有安全隐患。

    • 四次挥手

    • 四次挥手也是出于一种安全考虑吧

      1. 四次挥手的话,可以避免如果在第二次挥手后,客户端出现宏机撕掉后,在第二次和第三次之间,服务器端向客户端发送数据,数据无人接收,被人冒名接收的风险

      2. 同样,第四次挥手是为了解决第三次挥手时候,如果没有第四次挥手的话,服务器端不停的向客户端发送数据,不会停止的问题

     

    为什么客户端最后还要等待2MSL

    • 主要常见原因是为了网络延迟

    MSL,TCP允许不同的实现可以设置不同的MSL值

    1. 保证客户端最后一个ACK能够到达服务器,因为这个ACK报文可能已经丢失,从服务器来看,FIN和ACK报文已经断开了,客户端没有回应,那应该是没有收到,我就重发一次,于是服务器再发一次,客户端就能在2MSL时间段内收到这个重传的请求,并给出回应报文,并重启2MSL计时器

    2. 为了防止类似与三次握手中的‘已经失效的连接请求报文’出现在本连接中,客户端发送完最后一个确认报文中,在这个2msl中,可以让本连续持续时间内所有的报文消失,,这样新连接中不会出现旧连接的请求报文

  • 相关阅读:
    Mac 升级后 Git报错处理
    iOS 进制转换(十进制转62进制)
    转:基于IOS上MDM技术相关资料整理及汇总
    NPM ERR! 403 403 Forbidden 问题处理
    Rxjs学习,结合angular(搁置,后续还会添加)
    如何快速关联/修改Git远程仓库地址
    VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明
    chrome developer tools 的一個 bug
    IBM MQ 2035错误
    tp5 gateway 报错 stream_socket_client(): unable to connect to tcp://127.0.0.1:1236 (Connection refused)
  • 原文地址:https://www.cnblogs.com/zrx19960128/p/11091483.html
Copyright © 2011-2022 走看看