zoukankan      html  css  js  c++  java
  • 第一个最简单的CS架构以及介绍

    1. C/S与B/S架构
    C/S: Client 客户端--------基于网络----------Server
    B/S: Browser浏览器--------基于网络----------Server

    2. 网络通信服务端需要遵循的原则:
    1. 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定
    2. 对外一直提供服务,稳定运行
    3. 服务端应该支持并发

    3. 网路
    网络建立的目的是为数据交互(通信)
    如何实现通信:
    1. 建立好底层的物理连接介质
    2. 有一套统一的通信标准,称之为互联网协议

    4. 互联网协议:就是计算机界的英语,一套通用的规范
    网络=底层的物理连接介质+互联网协议(就是计算机界的英语)
    OSI七层协议
    应用层(应用层表示层会话层):http,ftp
    传输层:tcp/udp
    网络层:ip
    数据链路层:ethernet
    物理层:发送电信号

    ip+mac可以标识全世界范围内独一无二的一台计算机的位置
    port可以标识一台计算机之上唯一的一个基于网络通信的应用软件

    ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)



    今日内容:
    1. tcp协议
    三次握手建链接
    四次挥手断开链接
    tcp协议的状态
    syn洪水攻击与半连接池

    2. 互联网协议详解(了解)

    3. socket介绍

    4. 基于socket来编写C/S架构的软件

    服务端程序:
    import socket

    # 1.买手机
    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STEAM=>TCP流式协议,
    print(phone) # 是用来接收链接请求,从而建立链接的

    # 2.插手机卡
    phone.bind(('127.0.0.1', 8080)) # 0-65535

    # 3.开机
    phone.listen(5) # 同一时刻最大请求数为5个

    print('正在等待连接....')
    # 4.等待电话请求
    conn, client_addr = phone.accept() # (双向链接的套接字对象,存放客户端ip和端口的小元组)
    print(conn) # conn代表双向链接,用来收发消息
    # print(client_addr)

    # 5.收发消息
    data = conn.recv(1024) # 1024接收的最大字节数bytes
    print('收到客户的数据', data)
    conn.send(data.upper())

    # 6.挂电话链接
    conn.close()

    # 7.关机
    phone.close()



    客户端程序:
    import socket

    # 1.买手机
    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # SOCK_STEAM=>TCP流式协议,默认是TCP流式协议

    # 2.拨号
    phone.connect(('127.0.0.1', 8080))

    # 3.发收消息
    phone.send('hello'.encode('utf-8'))
    # 只能发bytes类型
    data = phone.recv(1024)
    print('收到服务端的消息: ', data)

    # 4.挂电话链接
    phone.close()



  • 相关阅读:
    大道至简第四章读后感
    JAVA类与对象
    大道至简第三章读后感
    JAVA语法基础 动手动脑及课后作业
    课程作业01
    大道至简第二章读后感
    大道至简第一章读后感
    swift学习笔记之-自动引用计数
    swift学习笔记之-继承
    swift学习笔记之-闭包
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11342516.html
Copyright © 2011-2022 走看看