• 网络编程与socket


    .互联网协议
    互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织。

    OSI七层协议:
        - 应用层
        - 表示层
        - 会话层
        - 传输层
        - 网络层
        - 数据链路层
        - 物理连接层
    
    学习由下到上:
        需要优先了解的协议一共5层:
    
        - 物理连接层
           基于电信号发送二进制的数据0101010111。
           
        - 数据链路层
            数据链路层的 "以太网协议",专门用于处理基于电信号发送二进制的数据。
    
            以太网协议:
                1.规定好电信号数据的分组方式。
                2.每一台连接网线的电脑都必须要由一块 "网卡"。
                    - 网卡由不同厂商生产的
                        - 每块网卡都会有世界上独一无二12位的编号 "mac"地址。
                            - 前6位: 厂商号
                            - 后6位: 流水号
    
            - 交换机:
                可以让多台电脑连接到一起。
    
            基于以太网协议发送数据:
                特点:
                    广播、单播
    
                弊端:
                    广播风暴、不能跨局域网通信。
    
            - 互联网:
                让局域网之间进行通信。
    
        - 网络层
            IP地址: 用于标识唯一的一台计算机(局域网)的地址。
            IP: 点分十进制
                最小值: 0.0.0.0
                最大值: 255.255.255.255
    
            IPV4(了解):
                一开始用电脑的人不多,所以出现IPV4的协议版本。
    
            IPV6(了解):
                括号IP。
    
            本机IP: 回环地址 127.0.0.1 ---> localhost
    
        - 传输层
            TCP/UDP协议,他们都是基于端口工作的。
    
            - 端口号: 标识电脑上某个一个软件。
    
            - 端口号范围: 0-65535
    
            注意:
                1.操作系统中,一般0-1024的端口都被默认使用了(0-1024不要动)
                2.尽量使用8000之后的端口号 8001
    
            开发中常用软件的默认端口号 (默写) :
                mysql: 3306
                mongodb: 27017
                Django: 8000
                Tomcat: 8080
                Flask: 5000
                Redis: 6379
    
    
            若想服务端与客户端进行通信,必须要建立连接,产生双向通道。
                一条是客户端往服务端发送消息的。
                另一条是服务端往客户端发送消息的。
    
        - 应用层
            http
            ftp
    

    总结:
    ip:用于唯一标识某一台计算机的位置。
    port: 端口用于确认计算机上的一个应用软件。

    ip + port: 世界上某一台电脑上的一个应用软件。
    
    • TCP协议的工作原理:

      • TCP是一个流式协议

      • 三次握手,四次挥手(*******):

        • 三次握手建连接:
          建立双向通道,建立好连接。

          • listen: 监听
          • established: 确认请求建立连接
        • 发送数据:
          write
          read
          客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉。

          否则,会隔一段时间发送一次,让服务端返回确认收到。
          在一段时间内,若服务端还是不返回确认收到,则取消发送。并释放内存中的数据。

        • 四次挥手断连接:

          • TIME_WAIT: 时间等待

    5.Socket:

    1.什么是Socket?
        socket是一个模块,可以写一套C/S架构的套接字。
    
    2.为什么要使用Socket?
        socket套接字会封装好各层协议的工作。
        好处:
            可以节省开发成本。
    
    3.如何使用
        import socket
    

    注意: 客户端与服务端必须尊循:
    一端send,另一端recv
    不同两端同时send或recv

  • 相关阅读:
    React38路由守卫的实现和使用以及Route的不同渲染方式解析
    React37嵌套路由及路由重定向
    React36react-router的路由传参取参
    ElasticSearch总结3-聚合
    ElasticSearch总结2-高级搜索
    [转]Druid连接池泄露引发的血案!
    Swagger的Starter使用及增强
    MySQL问题排查
    ElasticSearch总结1-查询表达式
    使用Spring Validation优雅地进行参数校验
  • 原文地址:https://www.cnblogs.com/jinhongquan/p/11693883.html
Copyright © 2020-2023  润新知