网络编程 之 软件开发架构,OSI七层协议

  • 软件开发架构
    C/S架构(client/server)和B/S架构(broser/server);​
    B/S架构本质上也是C/S架构​

  • 服务端:24小时不间断提供服务;​
    客户端:什么时候想体验服务,就无连接响应的服务器​

  • ps:
    手机端看上去C/S架构比较火,实际上bs已经在崛起;​
    微信和支付宝都在做一件事:统一接口;​
    手机端以后肯定也是bs比较火
  • OSI七层协议(物数网传会表应)
    • 物理连接层
      基于电信号传输0101二进制数据
    • 数据链路层
      1.规定电信号的分组方式
      2.规定任何一台介入互联网的计算机必须有一块网卡,​ 每一块网卡上面都刻有世界上独一无二的编号​(mac地址)​
      以上两点合称为 以太网协议​​

    • 以太网协议的应用:局域网基于以太网协议通信,不能跨局域网通信
    • ps:
      a. mac地址:12位16进制;前六位是厂商编号,后六位是流水线编号
      ​b.
      交换机:局域网内,计算机通过交换机通信​
      c.
      互联网是多个局域网,彼此之间链接而成的​​
    • 网络层
      IP协议:规定了只要接入互联网的计算机都必须有一个IP地址

    • ​ip地址特点:点分十进制​​​
    • IP地址范围:0.0.0.0-255.255.255.255

    • IP地址目前有两个版本:ipv4,ipv6
      ipv6产生的原因是ipv4不够用了

    • IP地址可以动态分配​​​​​
    • 传输层
      计算机之间通信 其实是计算机上的应用程序之间的通信​​

    • TCP/UDP都是基于端口工作的协议​
    • TCP协议(流式协议,可靠协议)​​​
      基于TCP协议通信,必须先建立双向通道三次握手四次挥手;
      建立连接是三次,断开连接是四次
    • ps: ​TCP协议传输数据之所以可靠是因为有双向通道: Wrong​
      是因为有通信的反馈机制​​

    • 端口(port)
      端口:用来唯一标识一台计算机上的某个应用程序
      端口号范围:0~65535
      注意:0~1024这些都是操作系统默认使用的端口号
      建议:使用8000之后的端口
    • 常用软件的端口号​​​​​​​​​​: MySQL:3306​;Redis:6379;Django:8000;flask:5000;
    • 端口号是动态分配的​,目的是使同一个应用程序能同时为 多个用户服务

    • IP和port异同:
      IP地址:用来唯一标识接入互联网的一台计算机
      port端口:用来唯一标识一台计算机上的某个应用程序
      IP + port​​​​​​ :唯一标识接入互联网的一台计算机上的某个应用程序
    • 应用层
      HTTP协议和FTP协议
    • PS:三次握手四次挥手
      • 三次握手流程
        三次握手的目的是建立双向通道

        ​​第一次握手:客户端想服务端发送连接请求(syn = n)
        第二次握手:服务端收到syn包,后向客户端发送确认​(ack = n+ 1)
                         同时本次还要向客户端发送一个请求连接的请求​(syn = m)
        第三次握手:​客户端收到服务端的syn包后, ​向服务端返回一个确认连接的包(ack = m + 1)
        双向通道搭建完成​

      • 四次挥手流程
        四次挥手的目的是将已建立的双向通道断开

        第一次挥手:客户端向服务端发送断开请求(syn = n)
        第二次挥手:服务端收到syn包之后,返回一个确认(ack = n + 1)
        第三次挥手:①服务端并没有在第二次同时发送一个请求确认的包,​
                          原因是还要先处理完没有完成的业务, ​例如还没有传输完的数据传输​​​​ 此时客户端处于time_wait阶段​
                         ②​服务端将未完成的任务完结之后, ​才向客户端发送请求断连的包(syn = m)
        第四次挥手:客户端收到syn包的请求,然后返回一个确认(ack = m + 1)​
        至此 断开连接 ​完成

      • 三次握手和四次挥手的区别
        四次多的一次是因为,客户端断连之后,
        服务端不能直接断连,需要等待后期的业务(例如数据传输还未完成)处理完成后,再向客户端发送断连请求,
        并收到客户端的确认断连,至此才完成断连
      • 图示

猜你喜欢

转载自www.cnblogs.com/buzaiyicheng/p/11311477.html