简单的Socket编程知识

先放程序源码以及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编程知识)