网络编程 TCP编程

ePyqt 界面化聊天工具模块  和pygame类似

 

 Python 网络编程

网络地址协议 internet protocal   简称IP

国际化标准组织 ISO 定义了网络数据传输模型OSI/RM参考模型

客户端

享受服务的一端,对应软件中的客户端

服务端

提供服务的一端 保证24小时提供服务于

 

客户端和服务端的架构模型 区分硬件模式和软件模式

 

 

 

私有地址

A类地址 10.0.0.0-10.255.255.255

B类地址 172.16.0.0-172.31.255.255

C类地址 192.168.0.0-192.168.255.255

本机地址 用于当前主机进行网络回路测试 127.0.0.1 localhost(本地主机)

在 C盘 \Windows\system32\drivers\etc\hosts  里面有网络地址本机映射

DNS服务器:域名解析服务器

将域名转换成对应的IP地址

http://www.baidu.com-> 220,128.0.120

 

Port 端口

在Unix上的查询端口

ps -ef|grep 5040

 

在Windows上查询端口

netstat -ano |findstr 5040

查询所有端口|查询某个字符串

 

nslookup www.baidu.com

域名解析协议

 

netstat -ano

查询所有端口

1024 以下的端口 系统在用

8000 以下的端口  应用程序在用

开发软件 定义的端口 8000+

 

计算机端口范围 0~65535之间

端口根据使用场景分为 公用端口,动态端口,保留端口

公用端口 0~1023

动态端口 1024~65535

保留端口 一般是Unix系统中超级用户进程分配保留端口号

21

FTP文件传输端口

22

ssh服务端口

23

telnet服务端口

25

smtp邮件服务端口

80

http超文本传输协议端口

110

Pop3 邮局协议端口

115

Sftp安全文件传输协议端口

443

https 安全超文本传输协议端口

 

协议 (protocal)

多方协议商定的  约定 规则 规范

为了多台计算机之间能友好的完成不同软件的数据的通信,

目前最主流的数据传输协议是欧洲计算机制造协会联盟也称国际化组织ISO

指定的OSI/RM七层网络传输模型

应用层  提供应用程序之间的通信

表示层 梳理数据格式、数据加密

会话层 建立,维护,管理会话

传输层 建立主机端到端的连接

网络层  寻址和路由选择

数据链路层 提供介质访问,链路管理等

物理层 比特流二进制数据传输

 

   

 如何打开 虚拟终端协议(telnet)

打开控制面板  选择程序和功能 在左上角有一个 启用或关闭windows功能点击进入

选择telnet .. 选中后点击确定即可  

在命令行中Telnet   www.***.com 进行连接

 

Python网络编程

传统网络编程

非阻塞异步网络编程

Socket (较偏底层 以后很少用)

通过socket套接字 对象的连接完成多种协议的网络程序服务端、客户端的开发和数据通信

 

Socket 是一种计算机网络数据结构  中文译名:套接字

 面向文件的套接字: 通过文件进行数据交互

Unix系统中出现  ->地址家族[Address Family:]

 面向网络的套接字: 通过网络进行数据交互

为了区分不同平台不同体型的套接字 定义了地址家族的概念 Adress Family 简称AF

UNIX中 AF_UNIX 或者AF_LOCAL

AF_INET   AF_INET6 支持因特网协议寻址IPV4  IPV6

 

Python中的套接字

为了明确表示网络中一台数据交互的主机 ,需要通过ip地址寻址确定主机位置 通过port端口号确定主机交互接口

在网络套接字交互过程中出现两个模型

面向连接的套接字模型(长连接)

Tcp端对端传输协议

Socket.socket.SOCK_STREAM

面向无连接的套接字模型(短连接)

UDP广播协议

只负责发送不保证数据的完整性和实效性

数据传输完成立刻断开连接

Socket.socket.SOCK_DGRAM

 

套接字常用操作

Tcp 传输控制协议

是一种面向连接的,可靠的,基于字节流的传输层通信协议

三次握手建立连接

发送寻址请求码Seq =100   ack=101      确认远程端服务器是否存在

发送确认请求码Seq =101   ack=300 确认是否可以连接

发送连接请求码Seq = 300     ack =80 确认连接

四次挥手断开连接

  发送数据验证请求码   通知准备断开

发送一个传输结束标记 确认数据序号完整性

发送一个确认结束标记 断开连接准备,回收数据

发送连接断开标记 确认断开

 

会被利用实施DDOS拒绝服务攻击

 

创建tcp服务端模块

引入模块 :引入套接字模块 import socket

Host  主机

Port  端口

Address 地址 为一个元组  (host,  port)

Buffer = 1024  缓冲区

地址家族      连接类型  默认协议

# socket.socket(socket_family, socket_tpye, protocal=0)

创建一个tcp服务端套接字对象

Tcp_server = socket.socket(socket.AF_INET, socket.socket.SOCK_STREAM)

Socket.af_inet  面向网络的套接字模型对象 AF_INET ipv4 寻址协议 AF_INET ipv6寻址协议

TCP:Socket.socket.sock_stream 面向连接的套接字socket.SOCK_STREAM

UDP:Socket.socket.SOCK_DGRAM(datagram(数据报) 面向无连接的套接字(短连接)

Tcp_socket.bind((主机名, 端口))绑定主机

Tcp_socket.listen()开始监听 指定的端口是否有数据接入

While True:

# 接入客户端

Server_socket, addr = tcp_server.accept()

Server_socket.send()/recv() 和客户端发收消息

并将收发的消息转码成 相同的格式如:

*.encode(“utf-8”)  发送消息转码成utf-8

*.decode(“utf-8”)  接受消息解码成utf-8

关闭套接字,释放资源

Server_socket.close()

程序结束,关闭服务端

Tcp_server.close()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

什么是网络

什么是ip有什么特点 有什么类型

什么是端口, 有什么特点  有什么类型

3w1h:  what where why how

 

什么是协议

OSI/RM

常见网络传输协议

 

网络  IP 端口 协议  

 

1. TCP服务端编程/客户端编程 熟练

2. TCP协议的处理方式[传输控制协议,特点,特性,使用场景]

3. 网络、IP,端口、协议、OSI/RM模型,总结梳理文档

 

4. 扩展:使用Tkinter、PyQT,实现界面话的对讲机程序

    Tkinter:python GUI编程模块;tk interface(tk接口)

            windows:安装官方标准Python程序,内置了tkinter

                    安装miniconda程序,需要再次安装tkinter

    PyQT:python GUI编程模块,强大!                                                                             

猜你喜欢

转载自blog.csdn.net/jinianh/article/details/81872893