python基础——网络编程

网络编程就是在发送端通过规定好的协议打包传给接收端,接收端在进行解析,从而达到通信的目的。
网络根据地域âï分为三类:局域网、城域网、广域网
OSI参考模型分为七层,internet网络模型分为四层(应用层、传输层、网络层、数据链路层)。
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
IP地址是由4个8位组成,每一个数字不能大于255, 
00000000.00000000.00000000.00000000
由网络IP+本机IP组成,分类五类: 
A:1.0.0.0~126.255.255.255 (127.0.0.1,localhost是本地回环地址)例:111.2.1.123 网络IP:111.0.0.0 本机IP:0.2.1.123 
B:128.0.0.0~191.255.255.255 
例:129.23.23.21 网络IP:129.23.0.0 本机IP:0.0.23.21 
C:192.0.0.0~223.255.255.255 
例:192.123.12.9 网络IP:192.123.12.0 本机IP:0.0.0.9 
D:用于多播
E:保留
IP是用来区分计算机的,端口是用来区分计算机上的进程的。
知名端口,一般是从0-1023
80端口分配给HTTP服务 默认 
21端口分配给FTP服务 默认 
443端口分配给HTTPS服务 默认 
动态端口 
动态端口的范围一般是从1024到65535
之所以称之为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
动态分配是指当一个系统进程或者应用程序进程需要网络通讯时,它想主机申请一个端口,主机从可用的端口号中分配一个供它使用,当这个进程关闭时,同时也就释放了所占用的端口号。
Python 中,我们用 socket()函数来创建套接字,语法格式如下:
socket.socket([family[, type[, proto]]]) 
参数 
family: 套接字家族可以使AF_UNIX或者AF_INET 
type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM 
protocol: 一般不填默认为0.
服务器套接字:
s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。 
s.listen() 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。 
s.accept() 被动接受TCP客户端连接,(阻塞式)等待连接的到来
客户端套接字:
s.connect() 主动初始化TCP服务器连接,。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。 
s.recv() 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。 
s.send() 发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。

s.close() 关闭套接字



猜你喜欢

转载自blog.csdn.net/pythonzyj/article/details/81031700