美文网首页
简单的Socket编程知识

简单的Socket编程知识

作者: 沉睡的牛仔 | 来源:发表于2017-07-15 03:07 被阅读23次

    先放程序源码以及Python例子

    http://www.bogotobogo.com/python/python_network_programming_tcp_server_client_chat_server_chat_client_select.php

    网络的基本知识

    1. 网络一般有7层模型
    2. 每一层网络从上至下分别将要发送的包进行封装,然后通过网线传输出去,解析的时候由下至上分别的进行解包。
    3. TCP建立可靠的连接;UDP仅仅是发送报文,不管是否丢包。
    4. IP地址。如果要与一个服务器进行通讯,需要服务器的ip地址,但若服务器主机在路由器的子网里面,则需要设置端口映射,让IP所在的路由器某个端口映射到服务器主机。
    5. 应用程序一般通过端口进行数据传输。端口是一个虚拟的概念,在实际物理层次不存在。端口分为三类:
    6. 公认端口:0-1023 绑定Binding一些特定服务
    7. 注册端口:1024-49151 一般应用程序使用绑定
    8. 动态或私有端口:49152-65535 应用程序一般不会主动使用
    9. 一个端口可以建立多个socket进行连接(服务器端一般是可以的)
    10. 目前的网络编程模型主要是 客户-服务器端结合(C/S)

    Socket的基本知识

    简单来说,socket 是对底层网络通信的一层抽象,让程序员可以像文件那样操作网络上发送和接收的数据。
    在Linux哲学里面,一切皆文件。那么可以将Socket理解为一个文件,应用程序主要的功能就是从Socket(文件)中读取和写入数据。
    http://www.bogotobogo.com/python/python_network_programming_server_client.php

    socket 类型

    创建 socket 的时候需要指定 socket 的类型,一般有三种:

    • SOCK_STREAM:面向连接的稳定通信,底层是 TCP 协议,我们会一直使用这个。
    • SOCK_DGRAM:无连接的通信,底层是 UDP 协议,需要上层的协议来保证可靠性。
    • SOCK_RAW:更加灵活的数据控制,能让你指定 IP 头部

    术语表

    名称 含义
    socket 创建一个通信的管道
    bind 把一个地址三元组绑定到 socket 上
    listen 准备接受某个 socket 的数据
    accept 等待连接到达
    connect 主动建立连接
    send 发送数据
    receive 接受数据
    close 关闭连接

    Socket通讯流程图

    Socket通讯流程图

    Http 和 Https

    待补充

    相关文章

      网友评论

          本文标题:简单的Socket编程知识

          本文链接:https://www.haomeiwen.com/subject/zokahxtx.html