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 #废弃了

Python socket网络编程(通信介绍)的更多相关文章

  1. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  2. Socket网络编程基本介绍

    一,socket的起源 socket一词的起源 在组网领域的首次使用是在1970年2月12日发布的文献IETF RFC33中发现的, 撰写者为Stephen Carr.Steve Crocker和Vi ...

  3. Python Socket 网络编程 (客户端的编程)

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  4. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  5. Python Socket网络编程详解

    Socket 简介 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. s ...

  6. 25 python socket网络编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  7. Python - Socket网络编程 - 第二十六天

    网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高 ...

  8. python——socket网络编程

    一.OSI七层模型

  9. python socket网络编程之粘包问题详解

    一,粘包问题详情 1,只有TCP有粘包现象,UDP永远不会粘包 你的程序实际上无权直接操作网卡的,你操作网卡都是通过操作系统给用户程序暴露出来的接口,那每次你的程序要给远程发数据时,其实是先把数据从用 ...

随机推荐

  1. VMPlayer Ubuntu 16.04 Copy and Paste with Host 主机与宿机之间的复制粘贴

    使用Ubuntu的虚拟机时如果不能主机之间进行复制粘粘,会非常非常的不方便,所以我们需要安装vmware tools,使用如下的代码(注意第二句一定要有,不然还是不能复制粘贴): sudo apt-g ...

  2. python——shopping car

    # _Author:huang# date: 2017/11/26 # 简单的购物车程序money = input("money:") product_list = [ (&quo ...

  3. js运用4

    ---恢复内容开始--- 1.函数    关键字function 复习 var  是js的关键字,用于声明变量,声明在内存模块完成,定义(=)是在执行模块完成. var可以在内存模块提前(js代码执行 ...

  4. C#遍历枚举(Enum)值

    foreach (object o in Enum.GetValues(typeof(EmpType))) { Console.WriteLine("{0}:{1}", o, En ...

  5. ZOJ 4063 - Tournament - [递归][2018 ACM-ICPC Asia Qingdao Regional Problem F]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4063 Input Output Sample Input 2 3 ...

  6. The way to unwind the stack on Linux EABI

    I. probe the stack frame structure The original idea is to unwind the function call stack according ...

  7. ES6 数组方法拓展

    ES6 数组方法拓展 1.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括E ...

  8. Eclipse 02: 安装SVN插件

    1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版    如果没有安装的请到这里下载安装:http://ecli ...

  9. python->解析xml文件

    '''"D:\three_test\gpn_InternetGatewayDevice_v2.xml" <SOAP-ENV:Envelope> <SOAP-ENV ...

  10. linux之tail和head的使用

    tail 基本介绍 用于显示文件的结尾的内容.在默认情况下,taild命令显示文件的后10行内容 表达式 tail [options] [filenames] 常用参数 -c:输出最后N个字节 -f: ...