• Python socket网络编程(通信介绍)


     
    socket通信介绍

     

    通信介绍(一)

      1.所有网络协议的基础就是:socket

      2.socket对TCP与UDP协议封装,让用户进行简单操作。

      3.socket只做两件事:发 send,收 receive 。

    其他概念

    传输协议有 TCP与UDP

      TCP/IP

      三次握手

        1.客户端   syn-->     服务端

        2.客户端   <--syn+ack   服务端

        3.客户端   ack-->     服务端

    OSI七层

      应用层       ..

      表示层       ..

      会话层       ..

      传出层       协议

      网络层       ip

      数据链路层     mac

      物理层 二进制    0 1

     

    通信介绍(二)

    1.每个机器上有65535个端口(port)

    2.实现通信需要IP加端口。

     

    1.socket

    1.sockt支持TCP与UDP

     

    伪代码发送端(客户端)

      #1.添加模块

        import socket

      #2.定义操作类型

        socket.TCP/IP

      #3.链接对方,不需要三次握手

        connect(a.ip,a.port)

      #4.发送数据

        socket.send(hello)

      #5.收回数据

        socket.recv()

      #6.关闭链接

        socket.close()

     

    伪代码接收端(服务端)

      #1.添加模块

        import socket

      #2.定义操作类型

        socket.TCP/IP

      #3.监听端口

        listen(0.0.0.0,6969)

      #4.等待数据来

        waiting()

      #5.收数据

        recv()

      #6.发回数据

        send

     

    2.socket

      (1)socket Families(地址簇)

        #网络层

        socket.AF_UNIX unix本机进程间通信,协议类型就是地址簇

          ①进程与进程之间是无法通信的

            注:两个进程想通信,可以通过序列化pickle实现。

            注:同过Pickle把A进程里面的内存对象存到硬盘上,

              B进程在打开A进程的硬盘文件在load回来。(比较慢)

            注:进程间可以访问就相当于QQ直接可以把word读出来

          ②如果想快速读数据可以通过AF_UNIX本机进程间通讯。

             注:本机会有一个local.socket,转一次数据,完成进程间交互。 

     

        socket.AF_INET IPV4

          ①网络层相当于地址簇

     

        socket.AF_INET6  IPV6

          ①网络层相当于地址簇

     

       (2)socket Types

        #传输层

        socket.SOCK_STREAM  #for tcp

        socket.SOCK_DGRAM   #for udp 

        socket.SOCK_RAW

          ①可以处理普通套接字处理不了的

            注:原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,

              而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文。

          ②可以伪造报IP头

            注:利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。

           ③可以进行洪水攻击(Dos攻击)

            注:通过发送大量的请求服务并发给服务,达到服务瓶颈,

              导致服务无法承受负载压力。

            Dos攻击:TCP三次握手,第二次握手,服务会进行syn_recve等待状态

                 两分钟(可修改),大量进行IP头修改可形成dos攻击。

     

         socket.SOCK_RDM

          ①是一种可靠的UDP形式,即保证交付数据报但不保证顺序。

            注:SOCK_RAM用来提供对原始协议的低级访问,

              在需要执行某些特殊操作时使用,如发送ICMP报文。

              SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。

     

         socket.SOCK_SEQPACKET #废弃了

     

  • 相关阅读:
    我的屌丝giser成长记-研二篇
    我的屌丝giser成长记-研一篇(下)
    C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net)
    C# 日期格式化的中的(/)正斜杠的问题(与操作系统设置有关)
    C#,SOAP1.1与1.2的发布与禁用(SOAP 1.2 in .NET Framework 2.0)
    C#使用WebService 常见问题处理
    sql查询数据库中所有表的记录条数,以及占用磁盘空间大小。
    eclipse中的XML文件无法快捷键注释问题
    对比两个表中,字段名不一样的SQL
    oracle 恢复备份
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/7838388.html
Copyright © 2020-2023  润新知