• PYTHON-网络通信 TCP



    网络编程:
    学习网络编程
    为什么?目的:
    服务端特点:

    网络通讯(通信)

    什么是网络通讯?


    为什么?目的:网络建立的目的是为数据交互(通信)

    如何实现通讯(通信)?


    互联网协议

    互联网=物理连接介质+互联网协议

    互联网协议:(open system interconnection)
    什么是互联网协议?

    OSI七层协议/tcp/ip五层
    应表会 传 网 数 物


    MAC地址
    ip
    port
    ip+mac
    ip+port

    网页地址解析


    什么是网络编程?
    socket套接字
    什么是socket:

    socket中用户最关心的是


    TCP和UDP
    TCP:
    协议:
    传输方式:
    优点:
    缺点:
    使用场景:
    套接字type参数:
    同时连接客户端数量:

    UDP :
    协议:
    传输方式:
    缺点:
    优点:
    使用场景:
    套接字type参数:
    同时连接客户端数量:

    TCP VS UDP 可靠性:

    TCP:
    TCP三次握手建连接,四次挥手断连接
    TCP目的
    洪水攻击

    TCP template
    半连接池,工作原理
    服务端需要遵循的原则

    粘包问题
    引起粘包的TCP特点
    自定义报头
    TCP 远程执行CMD(粘包的解决方法)

    UDP:
    UDP template

    ============================================================


    网络编程:
    1 学习网络编程 其实就是在学socket套接字 *****
    为什么?目的:编写一个C/S架构的软件,
    两者基于网络通信 为了使程序能够分布在不同的计算上
    C/S: Client--------基于网络----------Server
    B/S: Browser-------基于网络----------Server
    服务端特点:
    1、不间断地提供服务
    2、服务端要支持并发+高性能

    2 网络通讯(通信)
    什么是网络通讯?*****
    在不同的计算机上 一个安装客户端 另一安装服务端 通过网络来通讯

    为什么?目的:网络建立的目的是为数据交互(通信)

    如何实现通讯(通信)?
    1.建立好底层的物理连接介质 (网线,WIFI,光纤)---网络工程师关注
    2.通讯协议(必须遵循相同的标准)---应用软件开发者 关注
    (比作在中国就像是讲普通话,全世界就像是讲英语)


    3 互联网协议
    互联网=物理连接介质+互联网协议

    互联网协议:(open system interconnection)
    什么是互联网协议?
    比作 是计算机界的英语

    OSI七层协议 ** tcp/ip五层
    应 (表 会) 传 网 数 物
    应用 应用软件,自定义协议,需要双方程序员商量(报头) 应用层(表示层和会员层都属于应用层)
    浏览器协议(HTTP FTP..)
    表示
    会话
    传输 -TCP/UDP-基础port端口工作的协议 传输层
    网络 -ip协议 (IP(DHCP分配),子网掩码) 网络层
    1.用来定义数据传输格式 2.定位一个局域网 3.定位一台主机
    数据链路层-以太网协议Ethernet(基于mac地址)-报头(信封)和真实数据 数据链路层
    物理层-发送电信号(二进制数10101 ) 物理层

    传输层
    TCP/UDP
    TCP 传输是可靠的 传输前需要三次握手确认 传输过程中需要返回确认
    效率较低

    UDP 不可靠传输 没有三次握手 也没有确认信息 仅仅传输数据 不关心接收方是否收到

    使用socket接口完成TCP 和UDP

    以太网协议 规定 一个计算比需要一个网卡,一个网卡对应1个MAC地址,MAC可以标识 唯一一台计算机
    古老的广播式的通信

    ip 可以标识 在局域网内找到一台计算机
    ip+mac可以标识 全世界范围内独一无二的 一台计算机的位置
    (通信的时候,一定要获取对方的IP地址,拿到ip后,ARP协议自动将IP解析成MAC
    port可以标识 一台计算机之上唯一的 一个基于网络通信的 应用软件

    4 *****如何标识全世界范围内独一无二的一个socket程序(基于网络通信的 一个应用软件)
    ip+(mac)+port


    网页地址解析
    就是域名 ,将域名给到 DNS服务器(域名服务器) (基于UPD协议)解析成IP,(DNS默认端口53)
    对应有ip 和端口port,到这台机器上拿到路径里的文件

    DNS 全球共13台根服务器,最大有效传输512字节

    网页:
    https:// www.cnblogs.com:80 /linhaifeng/p/7278389.html
    应用层协议 域名+端口 (先把域名交给dns解析成IP地址) 路径
    逻辑层面建好双向通路(TCP三次握手)
    ==>给应用层按http协议传输数据,封包后交给传输层,给对方,再按这条线返回
    (物理层 实际上在传输层后还有网络层,数据链路层,物理层)


    5 socket套接字(*****)
    什么是socket: 学习网络编程 其实就是在学socket
    socket套接字是位于应用层与传输层之间的一个抽象接口层
    是一个在传输层上封装好的模块!(是对底层的 TCP UDP IP ethernet协议进行封装)

    要完成网络通讯,只需要调用socket的接口或者说按照socket的标准编写程序,写出的程序自然是遵循tcp/ip协议
    (比作 打电话时电话机的接口 服务端:买电话 插电话卡 等电话连接 收发消息 挂电话 关机
    客户端:买电话 拨电话 收发消息 挂电话)

    python中使用socket的时候用户需要关心的是
    ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data

    TCP和UDP是传输层最常见的协议(*****)
    主要控制传输数据的方式
    TCP
    传输方式:要建立连接(流式协议:像水流一样源源不断的发过去)
    (数据量比较小,时间间隔较短的不会发过去,等下一次一起)
    优点:
    可靠协议,可以保证数据的完整性 通过三次握手来与服务器建立连接
    (比如 a机器给b机器发送数据包 要求b机器必须立即返回一个确认包
    在对方确认后才会中自己的操作系统缓存清除这个数据包
    a机器会等待一段时间,如果超时还没有收到确认,则重发数据)
    缺点:
    传输效率比UDP低
    使用场景:
    文字聊天,支付宝转账等
    套接字type参数:SOCK_STREAM
    同时连接客户端数量:1个
    UDP :
    传输方式:
    不需要建立连接,直接发送, 数据报协议
    优点:
    发送效率高,但有效传输的数据量最多为500bytes
    缺点:
    不可靠:发送数据,无需对确认,容易丢包
    发一条数据无需收到对方的确认消息,会立刻从自己的操作系统缓存中清除该条消息
    使用场景:
    视频通话,语音通话等
    套接字type参数:SOCK_DGRAM
    同时连接客户端数量:
    可以同时处理多个客户端 是因为CPU处理速度快 给人感觉像是同时处理

    TCP VS UDP 可靠性:
    TCP可靠 是因为发送数据后必须收到确认包

    TCP 三次握手建连接,四次挥手断连接
    两条双向管道: C===>S 发消息管道 S===>C 收消息管道
    (比作 双11购物 一管道传商品金额 另一管道传购物状态信息)

    三次握手: (syn,seq,ack,fin都是标志位,代表不同含义)
    c(客户端)----syn=1(请求链接) seq=x(序列号)--->s(服务端)
    s----ack=1+x syn=1(请求链接) seq=y(序列号)--->c
    (确认请求,并在原来序列号基础上+1)
    c----ack=1+y------->s

    tcp建立的是一个双向连接
    c------------------>s
    c<-----------------s

    四次挥手:通常是服务端先有断链接请求,节约资源
    s------fin=1(断链接请求)seq=x+2---------->c
    c------>ack=3+x(确认请求)--------->s
    c------>fin=1,seq=y+2--------->s 不能和上一条合并是因为S-C数据可能还没传完
    s------>ack=3+y--------->c


    1、TCP 目的是建立双向通路 传输数据可靠
    ((好人协议)客户端发包(发请求)后,服务端一定会响应 发出确认信息)

    洪水攻击 黑客模拟大量的客户端发请求,让服务端响应,虚拟的客户端 服务端无法识别 造成大量资源占用
    syn_send大量涌现(公司有预谋的发起) 解决方案:增加带宽

  • 相关阅读:
    [转]VS2010几款超赞的扩展辅助工具总结
    从客户端中检测到有潜在危险的Request.Form 值
    面试系列28 分布式服务接口的幂等性如何设计
    面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试
    面试系列25 dubbo的spi思想是什么
    面试系列24 dubbo负载均衡策略和集群容错策略
    面试系列23
    面试系列22 dubbo的工作原理
    面试系列21 为什么要进行系统拆分
    面试系列20 生产环境中的redis是怎么部署的
  • 原文地址:https://www.cnblogs.com/du-jun/p/9898406.html
Copyright © 2020-2023  润新知